The Compliance API uses two key types, and which one you create depends on which Claude product your organization uses. Primary owners and organization owners create Compliance Access Keys in claude.ai; these keys unlock the full Compliance API. A primary owner's key can cover every organization under the parent organization; an organization owner's key covers their own organization only. Organization admins create Admin API keys in Claude Console; these keys unlock the Activity Feed only.
| Key type | Created in | Used for | Works with the Compliance API? |
|---|---|---|---|
Compliance Access Key (sk-ant-api01-...) | claude.ai > Organization settings > API | Activity Feed, chats, files, projects, Cowork and Claude Code sessions, users, organization metadata, and organization settings | Yes (all endpoints) |
Admin API key (sk-ant-admin01-...) | Claude Console > Settings > Admin keys | The Admin API and the Compliance API Activity Feed | Activity Feed only |
| Analytics API key | claude.ai > Organization settings > API | The Claude Enterprise Analytics API (see Analytics APIs) | No |
Claude API key (sk-ant-api03-...) | Claude Console > Settings > API keys | Calling Claude models through the Claude API | No |
A Claude Enterprise tenant has one parent organization that centralizes identity, SSO, and SCIM for every workload organization beneath it. These workload organizations are the parent's linked organizations.
Setup is one flow: enable the Compliance API for your organization, then create a Compliance Access Key in claude.ai. A Claude Console organization instead creates an Admin API key after enablement; Admin API keys reach the Activity Feed only.
Enable the Compliance API
Where you enable the Compliance API depends on how your organization is set up:
A standalone Claude Console organization uses Admin API keys rather than Compliance Access Keys: after enablement, skip the remaining steps and create a new Admin API key instead. The remaining steps provision Compliance Access Keys, which are available only to organizations that are part of a Claude Enterprise tenant.
Decide the key's scope
A key's access is set when it is created. Decide which organizations the key covers:
Sign in with the matching role
Sign in to claude.ai. The primary owner of the parent organization can create a key with either scope. An organization owner can create a key restricted to their own organization only.
If the API page described in the next step is not visible, or compliance scopes are unavailable when creating a key, either your role cannot create Compliance Access Keys, or the Compliance API has not been enabled for your organization yet (return to the first step).
Open API settings
Go to claude.ai > Organization settings > API and find the Keys section.
Create the key
Click Create key, name the key, and select one or more scopes from the following table. Click Create.
| Scope | Grants |
|---|---|
read:compliance_activities | Read the Activity Feed. A key covering the parent organization reads events for the parent organization and all linked organizations. |
read:compliance_user_data | Read user chats, messages, files, projects, Cowork and Claude Code sessions and their transcripts, organization users, and group members |
delete:compliance_user_data | Delete user chats, files, and projects |
read:compliance_org_data | Read organization metadata (names, types, roles, and groups) and the effective settings in force for organizations under the parent organization. User listings and group membership require read:compliance_user_data. |
Choose the smallest scope set that your integration needs:
read:compliance_activities.delete:compliance_user_data.Compliance Access Key scopes are immutable after creation. To change scopes, create a new key with the scopes you want, then delete the old one.
Copy and store the secret
Copy the displayed secret key (starting with sk-ant-api01-) and store it in your secrets manager. The full secret is displayed only once.
Export the key for the examples in this guide
Set the key as an environment variable so the shell samples in this guide can read it:
export ANTHROPIC_COMPLIANCE_ACCESS_KEY=sk-ant-api01-...Follow the steps in Create an Admin API key, then set the key as an environment variable:
export ANTHROPIC_ADMIN_KEY=sk-ant-admin01-...The distinct variable name keeps the Admin API key from overwriting a Compliance Access Key if you provision both. The cURL examples in this guide read the key from $ANTHROPIC_COMPLIANCE_ACCESS_KEY; substitute $ANTHROPIC_ADMIN_KEY when calling the Activity Feed with an Admin API key.
Admin API keys carry the read:compliance_activities scope only if the Compliance API was enabled for the organization at the time the key was created; see Set up the Compliance API. They cannot be granted any other Compliance API scope, so calls to any endpoint other than the Activity Feed return 403 Forbidden.
For the same key's role in managing your Claude Console organization, see Admin API.
To inspect the scopes on a key you already have, use one of the following signals.
sk-ant-admin01- is an Admin API key (carries read:compliance_activities only, subject to the enablement timing in the preceding section). sk-ant-api01- is a Compliance Access Key; its scopes are the subset you selected at creation.Missing required scopes. Got: [<scopes the key carries>] Needed: [<scopes the endpoint requires>]. See Handle Compliance API errors for the full error catalog.{
"error": {
"type": "permission_error",
"message": "Missing required scopes. Got: ['read:compliance_activities'] Needed: ['read:compliance_user_data']"
}
}Delete a Compliance Access Key from the same Keys table where you created it: go to claude.ai > Organization settings > API. Delete an Admin API key from Claude Console > Settings > Admin keys.
Deleting a key takes effect on the next request: there is no grace period. Compliance Access Keys do not expire on their own.
To rotate a key without an outage:
Pagination cursors stored before a rotation remain valid: cursors are scoped to the organization, not the key.
If a Compliance Access Key leaks, delete it immediately, audit the Activity Feed for compliance_api_accessed activities by the compromised key, and rotate any downstream credentials that the leaked key could reach. Pass activity_types[]=compliance_api_accessed to scope the query, then in your client, keep the activities whose actor.type is api_actor and whose actor.api_key_id matches the compromised key; see Understand the Activity object for the actor schema.
Read organization-wide activity events with any key that has read:compliance_activities.
Use a Compliance Access Key with read:compliance_user_data to retrieve Claude Enterprise content, including Cowork and Claude Code session transcripts, and delete:compliance_user_data to delete chats, files, and projects.
Was this page helpful?