---
title: Update External Key
url: https://platform.claude.com/docs/en/api/python/beta/organization/external_keys/update
---

# Update External Key

`beta.organization.external_keys.update(external_key_id, **kwargs)  -> BetaExternalKey`

**POST** `/v1/organizations/external_keys/{external_key_id}`

Partially update an external key config. Omitted fields are left unchanged.

`display_name` is always editable. `geo` and `provider_config` cannot
be changed once any workspace references this config, because previously
encrypted data requires the original key identity to decrypt.

## Parameters

- `external_key_id: str` (path parameter)

  ID of the External Key.

  maxLength: 2048

- `display_name: Optional[str]`

  Human-friendly display name.

  minLength: 1, maxLength: 255

- `geo: Optional[Literal["us"]]`

  Data residency geo. Only `us` is supported.

- `provider_config: Optional[ProviderConfig]`

  KMS provider identity and auth coordinates.

  - `class BetaAWSExternalKeyConfig`

    - `type: Literal["aws"]`

    - `kms_arn: str`

      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.

      maxLength: 2048

    - `region: Optional[str]`

      AWS region. Derived from `kms_arn` if omitted.

    - `role_arn: Optional[str]`

      **Deprecated**

      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.

  - `class BetaGCPExternalKeyConfig`

    - `type: Literal["gcp"]`

    - `key_name: str`

      Full resource name of the Cloud KMS key.

  - `class BetaAzureExternalKeyConfigParam`

    Azure Key Vault provider configuration.

    - `type: Literal["azure"]`

    - `key_name: str`

      Name of the key within the vault.

    - `tenant_id: str`

      Azure AD tenant ID.

    - `vault_uri: str`

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

    - `client_id: Optional[str]`

      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.

## Returns

- `class BetaExternalKey`

  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).

  - `type: Literal["external_key"]`

    default: external_key

  - `id: str`

    Identifier of the external key config. A tagged ID prefixed `ekey_`, or — for organizations on the Claude Platform on AWS — the AWS KMS key ARN.

  - `attachment: Attachment`

    Whether any workspace uses this config to encrypt its data — counting live and archived workspaces (an archived workspace's data remains encrypted under the config), excluding deleted ones. Only an attached config is used by the encryption path; an `unattached` config is inert and can be deleted.

    - `class BetaExternalKeyAttachedAttachment`

      - `type: Literal["attached"]`

        default: attached

    - `class BetaExternalKeyUnattachedAttachment`

      - `type: Literal["unattached"]`

        default: unattached

  - `created_at: datetime`

    format: date-time

  - `display_name: Optional[str]`

    Human-friendly display name. Null if none was set.

  - `geo: str`

    Data residency geo. Selects which regional validator handles this key's encrypt/decrypt roundtrips.

  - `provider_config: ProviderConfig`

    KMS provider identity and auth coordinates.

    - `class BetaAWSExternalKeyConfig`

      - `type: Literal["aws"]`

      - `kms_arn: str`

        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.

        maxLength: 2048

      - `region: Optional[str]`

        AWS region. Derived from `kms_arn` if omitted.

      - `role_arn: Optional[str]`

        **Deprecated**

        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.

    - `class BetaGCPExternalKeyConfig`

      - `type: Literal["gcp"]`

      - `key_name: str`

        Full resource name of the Cloud KMS key.

    - `class BetaAzureExternalKeyConfig`

      - `type: Literal["azure"]`

      - `key_name: str`

        Name of the key within the vault.

      - `tenant_id: str`

        Azure AD tenant ID.

      - `vault_uri: str`

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

      - `client_id: Optional[str]`

        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.

  - `updated_at: datetime`

    format: date-time

## Example

```python
import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ.get(
        "ANTHROPIC_API_KEY"
    ),  # This is the default and can be omitted
)
beta_external_key = client.beta.organization.external_keys.update(
    external_key_id="external_key_id",
)
print(beta_external_key.id)
```

### Response (200)

```json
{
  "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"
}
```
