Skip to main content
POST
Create a KMS key
Requires the IAM action kms:CreateKey. See KMS permissions for the full list, what each one covers, and an example policy.

Authorizations

Authorization
string
header
required

An OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. This is the recommended way to authenticate.

Get one by exchanging a service account's access key pair at POST /v1/oauth/token with grant_type=client_credentials. It is the standard client-credentials grant, so any OAuth-aware library will obtain and refresh it for you.

Tokens last an hour by default. The same access key pair is separately your AWS SigV4 credential for the S3-compatible object endpoint, which speaks nothing else.

Headers

Idempotency-Key
string

Optional client-generated key that makes a create replay-safe. Retrying a request with the same key returns the original outcome verbatim instead of creating a duplicate resource. Reusing a key with a different request body is rejected (422); a request whose key is still being processed returns 409. Records are honored for 24 hours. Use a UUID or similarly unique token.

Maximum string length: 255

Body

application/json
name
string
required

Unique per account. Surfaces in the CRN (crn:kms:::key/) — letters, digits, dot, dash, underscore. Resource names must not start with the literal crn: prefix or be UUIDs (canonical, compact, braced, or urn:uuid: forms, in either case).

Pattern: ^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$
Example:

"prod-master"

key_spec
enum<string>
required

Cryptographic spec. Determines which mechanisms apply:

  • aes-256: symmetric AEAD (AES-GCM)
  • rsa-2048: asymmetric; OAEP-SHA256 encrypt + PSS-SHA256 sign
  • rsa-4096: same as rsa-2048
  • ecdsa-p256: asymmetric; SHA-256 sign/verify (no encrypt)
Available options:
aes-256,
rsa-2048,
rsa-4096,
ecdsa-p256
Example:

"aes-256"

description
string
Example:

"Master KEK for the production data plane"

tags
object
Example:
key_usage
enum<string>

Required for RSA specs (both encrypt_decrypt and sign_verify are valid). Defaults to encrypt_decrypt for AES, sign_verify for ECDSA.

Available options:
encrypt_decrypt,
sign_verify
Example:

"encrypt_decrypt"

Response

Key created

key
object