Claude Platform Docs

Create External Key

client.Beta.Organization.ExternalKeys.New(ctx, body) (*BetaExternalKey, error)
POST/v1/organizations/external_keys

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

Parameters
body BetaOrganizationExternalKeyNewParams

KMS provider identity and auth coordinates.

type BetaAWSExternalKeyConfig struct { Type: "aws"; KMSARN; Region; RoleARN }
Type AWS
KMSARN string

Full ARN of the AWS KMS key. On Claude Platform on AWS the key must be a single-Region key in your organization's own AWS account; cross-account keys, multi-Region keys, and alias ARNs are rejected.

maxLength2048
Region string Optional

AWS region. Derived from kms_arn if omitted.

RoleARN string OptionalDeprecated

IAM role ARN. Deprecated — Anthropic reaches the KMS key through its own intermediate role (or, on Claude Platform on AWS, with credentials AWS issues for the Workspace); this field is ignored.

type BetaGCPExternalKeyConfig struct { Type: "gcp"; KeyName }
Type GCP
KeyName string

Full resource name of the Cloud KMS key.

type BetaAzureExternalKeyConfigParam struct { Type: "azure"; KeyName; TenantID; /* 2 more */ }

Azure Key Vault provider configuration.

Type Azure
KeyName string

Name of the key within the vault.

TenantID string

Azure AD tenant ID.

VaultURI string

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

ClientID string Optional

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.

DisplayName param.Opt[string] Optional

Human-friendly display name.

minLength1
maxLength255

Data residency geo. Only us is supported.

const BetaOrganizationExternalKeyNewParamsGeoUs BetaOrganizationExternalKeyNewParamsGeo = "us"
Returns
type BetaExternalKey struct { Type: "external_key"; ID; Attachment; /* 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
package main

import (
	"context"
	"fmt"

	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/option"
)

func main() {
	client := anthropic.NewClient(
		option.WithAPIKey("my-anthropic-api-key"),
	)
	betaExternalKey, err := client.Beta.Organization.ExternalKeys.New(context.TODO(), anthropic.BetaOrganizationExternalKeyNewParams{
		ProviderConfig: anthropic.BetaOrganizationExternalKeyNewParamsProviderConfigUnion{
			OfAWS: &anthropic.BetaAWSExternalKeyConfigParam{
				KMSARN: "arn:aws:kms:us-east-1:111122223333:key/abcd1234-5678-90ab-cdef-000011112222",
			},
		},
	})
	if err != nil {
		panic(err.Error())
	}
	fmt.Printf("%+v\n", betaExternalKey.ID)
}
Returns Examples
Response 200
{
  "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"
}