Claude Platform Docs

Create External Key

beta.organization.external_keys.create(**kwargs) -> BetaExternalKey
POST/v1/organizations/external_keys

Create an external key config owned by the caller's organization.

Parameters
provider_config: BetaAWSExternalKeyConfig { kms_arn, type, region, role_arn } | BetaGCPExternalKeyConfig { key_name, type } | BetaAzureExternalKeyConfigParam { key_name, tenant_id, type, 2 more }

KMS provider identity and auth coordinates.

One of the following:
class BetaAWSExternalKeyConfig { kms_arn, type, region, role_arn }
kms_arn: String

Full ARN of the AWS KMS key.

maxLength2048
type: :aws
region: String

AWS region. Derived from kms_arn if omitted.

role_arn: StringDeprecated

IAM role ARN. Deprecated — Anthropic reaches the KMS key via a managed intermediate role; this field is ignored.

class BetaGCPExternalKeyConfig { key_name, type }
key_name: String

Full resource name of the Cloud KMS key.

type: :gcp
class BetaAzureExternalKeyConfigParam { key_name, tenant_id, type, 2 more }

Azure Key Vault provider configuration.

key_name: String

Name of the key within the vault.

tenant_id: String

Azure AD tenant ID.

type: :azure
vault_uri: String

Key Vault data-plane URI — https://{vault-name}.vault.azure.net or https://{hsm-name}.managedhsm.azure.net.

client_id: String

Azure AD application (client) ID. Omit to use Anthropic's multitenant app. Provide only if using a single-tenant app registration in the customer's directory.

display_name: String

Human-friendly display name.

maxLength255
minLength1
geo: :us

Data residency geo. Only us is supported.

Returns
class BetaExternalKey { id, attachment, created_at, 5 more }

CMEK external key config belonging to the caller's organization.

Configs are organization-scoped. Workspaces attach to a config; once any workspace references it, the provider fields become effectively immutable (existing encrypted data needs the config for decrypt).

Create External Key

require "anthropic"

anthropic = Anthropic::Client.new(api_key: "my-anthropic-api-key")

beta_external_key = anthropic.beta.organization.external_keys.create(
  provider_config: {kms_arn: "arn:aws:kms:us-east-1:111122223333:key/abcd1234-5678-90ab-cdef-000011112222", type: :aws}
)

puts(beta_external_key)
{
  "id": "ekey_01SDCCSbTxrXDpWc1phhtcfK",
  "attachment": {
    "type": "attached"
  },
  "created_at": "2024-10-30T23:58:27.427722Z",
  "display_name": "prod-us-key",
  "geo": "us",
  "provider_config": {
    "kms_arn": "arn:aws:kms:us-east-1:111122223333:key/abcd1234-5678-90ab-cdef-000011112222",
    "type": "aws",
    "region": "us-east-1",
    "role_arn": "arn:aws:iam::111122223333:role/anthropic-cmek"
  },
  "type": "external_key",
  "updated_at": "2024-10-30T23:58:27.427722Z"
}
Returns Examples
{
  "id": "ekey_01SDCCSbTxrXDpWc1phhtcfK",
  "attachment": {
    "type": "attached"
  },
  "created_at": "2024-10-30T23:58:27.427722Z",
  "display_name": "prod-us-key",
  "geo": "us",
  "provider_config": {
    "kms_arn": "arn:aws:kms:us-east-1:111122223333:key/abcd1234-5678-90ab-cdef-000011112222",
    "type": "aws",
    "region": "us-east-1",
    "role_arn": "arn:aws:iam::111122223333:role/anthropic-cmek"
  },
  "type": "external_key",
  "updated_at": "2024-10-30T23:58:27.427722Z"
}