Endpoint
Authentication
Requires a Personal API Access Token.Header
Request
Headers
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {token} | Yes |
| Content-Type | application/json | Yes |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectName | string | Yes | Project name |
Request Body
The request body structure varies based on the JWKtype. All types require name and type fields.
Type: RSA
keySize(integer): Key size in bits. Common values:2048,3072,40962048: Standard size, good balance of security and performance3072: Higher security, recommended for long-term use4096: Maximum security, slower operations
keyUseType(string, optional): Key usage type. Valid values:SIGNATURE,ENCRYPTIONSIGNATURE: Key is used for signing (default)ENCRYPTION: Key is used for encryption
algorithm(string, optional): Algorithm to use with this key. Valid values:- For SIGNATURE:
RSA256,RSA384,RSA512,PS256,PS384,PS512 - For ENCRYPTION:
RSA1_5(deprecated),RSA_OAEP(deprecated),RSA_OAEP_256,RSA_OAEP_384,RSA_OAEP_512
- For SIGNATURE:
keyIdType(string, optional): Method to generate the key ID (kid). Valid values:TIMESTAMP(default),SHA256,SHA1,ISO_DATE,NONEnotBeforeTime(string, optional): ISO 8601 date/time when the key becomes valid. If not provided, current time is usedexpirationTime(string, optional): ISO 8601 date/time when the key expires. If not provided, one year fromnotBeforeTimeis used
Type: EC (Elliptic Curve)
curveType(string): Curve name. Valid values:P256,P384,P521,SECP256K1P256: 256-bit curve (NIST P-256, secp256r1)P384: 384-bit curve (NIST P-384, secp384r1)P521: 521-bit curve (NIST P-521, secp521r1)SECP256K1: secp256k1 curve (used in Bitcoin)
keyUseType(string, optional): Key usage type. Valid values:SIGNATURE,ENCRYPTIONSIGNATURE: Key is used for signing (default)ENCRYPTION: Key is used for encryption
algorithm(string, optional): Algorithm to use with this key. Valid values:- For SIGNATURE:
ES256,ES384,ES512,ES256K - For ENCRYPTION:
ECDH_ES,ECDH_ES_A128KW,ECDH_ES_A192KW,ECDH_ES_A256KW,ECDH_1PU,ECDH_1PU_A128KW,ECDH_1PU_A192KW,ECDH_1PU_A256KW
- For SIGNATURE:
keyIdType(string, optional): Method to generate the key ID (kid). Valid values:TIMESTAMP(default),SHA256,SHA1,ISO_DATE,NONEnotBeforeTime(string, optional): ISO 8601 date/time when the key becomes valid. If not provided, current time is usedexpirationTime(string, optional): ISO 8601 date/time when the key expires. If not provided, one year fromnotBeforeTimeis used
Type: OCT (Octet Sequence - Symmetric Key)
keySize(integer): Key size in bits. Common values:128,192,256128: 128-bit key (16 bytes)192: 192-bit key (24 bytes)256: 256-bit key (32 bytes) - Recommended
keyUseType(string, optional): Key usage type. Valid values:SIGNATURE,ENCRYPTIONSIGNATURE: Key is used for signing (default)ENCRYPTION: Key is used for encryption
algorithm(string, optional): Algorithm to use with this key. Valid values:- For SIGNATURE:
HS256,HS384,HS512 - For ENCRYPTION:
A128KW,A192KW,A256KW,A128GCMKW,A192GCMKW,A256GCMKW,DIR,PBES2_HS256_A128KW,PBES2_HS384_A192KW,PBES2_HS512_A256KW
- For SIGNATURE:
keyIdType(string, optional): Method to generate the key ID (kid). Valid values:TIMESTAMP(default),SHA256,SHA1,ISO_DATE,NONEpasswordSaltLength(integer, optional): Salt length for password-based encryption. Default:8passwordIterationCount(integer, optional): Iteration count for password-based encryption. Default:1000notBeforeTime(string, optional): ISO 8601 date/time when the key becomes valid. If not provided, current time is usedexpirationTime(string, optional): ISO 8601 date/time when the key expires. If not provided, one year fromnotBeforeTimeis used
Type: OKP (Octet Key Pair)
curveType(string): Curve name. Valid values:ED25519,X25519ED25519: Edwards Curve for signing (Ed25519)X25519: Montgomery Curve for key exchange (X25519)- Note:
Ed448andX448are currently unsupported
keyUseType(string, optional): Key usage type. Valid values:SIGNATURE,ENCRYPTIONSIGNATURE: Key is used for signing (default)ENCRYPTION: Key is used for encryption
algorithm(string, optional): Algorithm to use with this key. Valid values:- For SIGNATURE:
EdDSA - For ENCRYPTION:
ECDH_ES,ECDH_ES_A128KW,ECDH_ES_A192KW,ECDH_ES_A256KW,ECDH_1PU,ECDH_1PU_A128KW,ECDH_1PU_A192KW,ECDH_1PU_A256KW
- For SIGNATURE:
keyIdType(string, optional): Method to generate the key ID (kid). Valid values:TIMESTAMP(default),SHA256,SHA1,ISO_DATE,NONEnotBeforeTime(string, optional): ISO 8601 date/time when the key becomes valid. If not provided, current time is usedexpirationTime(string, optional): ISO 8601 date/time when the key expires. If not provided, one year fromnotBeforeTimeis used
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | JWK name (unique identifier) |
| description | string | No | JWK description |
| type | string | Yes | JWK type: RSA, EC, OCT, OKP |
| kid | string | No | Key ID (kid) - Unique identifier for the key. If not provided, a default kid will be generated |
| rsa | object | Conditional | RSA-specific parameters (required if type is RSA) |
| ec | object | Conditional | EC-specific parameters (required if type is EC) |
| oct | object | Conditional | OCT-specific parameters (required if type is OCT) |
| okp | object | Conditional | OKP-specific parameters (required if type is OKP) |
RSA Object Fields
| Field | Type | Required | Description |
|---|---|---|---|
| keySize | integer | Yes | Key size in bits. Valid values: 2048, 3072, 4096 |
| keyUseType | string | No | Key usage type. Valid values: SIGNATURE, ENCRYPTION. Default: SIGNATURE |
| algorithm | string | No | Algorithm to use with this key. For SIGNATURE: RSA256, RSA384, RSA512, PS256, PS384, PS512. For ENCRYPTION: RSA1_5 (deprecated), RSA_OAEP (deprecated), RSA_OAEP_256, RSA_OAEP_384, RSA_OAEP_512 |
| keyIdType | string | No | Method to generate the key ID (kid). Valid values: TIMESTAMP (default), SHA256, SHA1, ISO_DATE, NONE |
| notBeforeTime | string | No | ISO 8601 date/time when the key becomes valid. If not provided, current time is used |
| expirationTime | string | No | ISO 8601 date/time when the key expires. If not provided, one year from notBeforeTime is used |
EC Object Fields
| Field | Type | Required | Description |
|---|---|---|---|
| curveType | string | Yes | Curve name. Valid values: P256, P384, P521, SECP256K1 |
| keyUseType | string | No | Key usage type. Valid values: SIGNATURE, ENCRYPTION. Default: SIGNATURE |
| algorithm | string | No | Algorithm to use with this key. For SIGNATURE: ES256, ES384, ES512, ES256K. For ENCRYPTION: ECDH_ES, ECDH_ES_A128KW, ECDH_ES_A192KW, ECDH_ES_A256KW, ECDH_1PU, ECDH_1PU_A128KW, ECDH_1PU_A192KW, ECDH_1PU_A256KW |
| keyIdType | string | No | Method to generate the key ID (kid). Valid values: TIMESTAMP (default), SHA256, SHA1, ISO_DATE, NONE |
| notBeforeTime | string | No | ISO 8601 date/time when the key becomes valid. If not provided, current time is used |
| expirationTime | string | No | ISO 8601 date/time when the key expires. If not provided, one year from notBeforeTime is used |
OCT Object Fields
| Field | Type | Required | Description |
|---|---|---|---|
| keySize | integer | Yes | Key size in bits. Valid values: 128, 192, 256 |
| keyUseType | string | No | Key usage type. Valid values: SIGNATURE, ENCRYPTION. Default: SIGNATURE |
| algorithm | string | No | Algorithm to use with this key. For SIGNATURE: HS256, HS384, HS512. For ENCRYPTION: A128KW, A192KW, A256KW, A128GCMKW, A192GCMKW, A256GCMKW, DIR, PBES2_HS256_A128KW, PBES2_HS384_A192KW, PBES2_HS512_A256KW |
| keyIdType | string | No | Method to generate the key ID (kid). Valid values: TIMESTAMP (default), SHA256, SHA1, ISO_DATE, NONE |
| passwordSaltLength | integer | No | Salt length for password-based encryption. Default: 8 |
| passwordIterationCount | integer | No | Iteration count for password-based encryption. Default: 1000 |
| notBeforeTime | string | No | ISO 8601 date/time when the key becomes valid. If not provided, current time is used |
| expirationTime | string | No | ISO 8601 date/time when the key expires. If not provided, one year from notBeforeTime is used |
OKP Object Fields
| Field | Type | Required | Description |
|---|---|---|---|
| curveType | string | Yes | Curve name. Valid values: ED25519, X25519 (Note: Ed448 and X448 are currently unsupported) |
| keyUseType | string | No | Key usage type. Valid values: SIGNATURE, ENCRYPTION. Default: SIGNATURE |
| algorithm | string | No | Algorithm to use with this key. For SIGNATURE: EdDSA. For ENCRYPTION: ECDH_ES, ECDH_ES_A128KW, ECDH_ES_A192KW, ECDH_ES_A256KW, ECDH_1PU, ECDH_1PU_A128KW, ECDH_1PU_A192KW, ECDH_1PU_A256KW |
| keyIdType | string | No | Method to generate the key ID (kid). Valid values: TIMESTAMP (default), SHA256, SHA1, ISO_DATE, NONE |
| notBeforeTime | string | No | ISO 8601 date/time when the key becomes valid. If not provided, current time is used |
| expirationTime | string | No | ISO 8601 date/time when the key expires. If not provided, one year from notBeforeTime is used |
Notes
namemust be unique within the projecttypedetermines the cryptographic algorithm and which type-specific object (rsa,ec,oct, orokp) must be providedkid(Key ID) is optional. If not provided, a default kid will be automatically generated. The kid is used to identify the key in JWK Sets and JWT headers- Type-specific parameters are required based on the selected
type - JWK is automatically deployed to all environments after generation
Response
Success Response (200 OK)
Error Response (400 Bad Request)
cURL Examples
Example 1: Generate RSA JWK (2048-bit)
Example 2: Generate RSA JWK (4096-bit)
Example 3: Generate EC JWK (P-256)
Example 4: Generate EC JWK (P-384)
Example 5: Generate OCT JWK (256-bit symmetric key)
Example 6: Generate OKP JWK (Ed25519)
Example 7: Generate OKP JWK (X25519 for key exchange)
Notes and Warnings
-
JWK Name:
- Must be unique within the project
-
JWK Types and Use Cases:
- RSA:
- Recommended for most use cases, supports signing and encryption
- Key sizes: 2048 (standard), 3072 (high security), 4096 (maximum security)
- Larger keys provide better security but slower operations
- Use for JWT signing (RS256, RS384, RS512) and encryption (RSA-OAEP)
- EC (Elliptic Curve):
- Smaller key sizes, good for constrained environments
- Curves: P-256 (256-bit), P-384 (384-bit), P-521 (521-bit)
- Use for JWT signing (ES256, ES384, ES512)
- More efficient than RSA for same security level
- OCT (Symmetric Key):
- Symmetric keys for encryption and signing
- Key sizes: 128, 192, 256 bits
- Use for JWT signing (HS256, HS384, HS512) and encryption (AES)
- Requires secure key distribution
- OKP (Octet Key Pair):
- Modern curve-based keys
- Ed25519/Ed448: For signing (EdDSA algorithm)
- X25519/X448: For key exchange (ECDH)
- Very efficient and secure
- Use for modern applications requiring high performance
- RSA:
-
Type-Specific Parameters:
- Each JWK type requires its corresponding parameter object (
rsa,ec,oct, orokp) - Parameters must match the selected
type - Invalid parameter combinations will result in validation errors
- Each JWK type requires its corresponding parameter object (
-
Automatic Deployment:
- JWK is automatically deployed after generation
- Deployment results are returned in the response
-
Security:
- Generated keys are cryptographically secure
- Private keys are encrypted at rest
- Key generation uses secure random number generators
-
Performance Considerations:
- RSA: Larger key sizes (4096) are slower but more secure
- EC: Faster than RSA for equivalent security
- OKP: Fastest option, ideal for high-performance scenarios
- OCT: Fastest for symmetric operations
Permissions
User must haveSECRETS + MANAGE permission in the project. For deployment operations (when deploying JWKs to environments), user must also have SECRETS + DEPLOY_UNDEPLOY permission.
Related Documentation
- List JWKs - List all JWKs
- Create JWK - Create JWK from other sources
- Get JWK - Get a specific JWK

