API keys#
An API key is the credential a person, tool or pipeline presents to the ATLAS gateway. It authenticates the caller and decides who is charged and audited. The key's acting context is a team space or a project. It determines which models, budget and audit trail a request uses.
Two kinds of key#
- Personal keys belong to one user. They act under one team space or one project that the owner chooses. The owner can move them between contexts without changing the secret.
- Project keys belong to a project, not a person, so they survive staff changes. They always act under their project. For more information, see Projects.
flowchart LR
U[User] -- owns --> K[Personal key]
P[Project] -- owns --> PK[Project key]
K -- acts under --> C{One context}
C --> S[Team space]
C --> PR[Active project]
C --> N[None: requests rejected]
PK -- always acts under --> P
S & PR --> M[Models, budget, audit attribution]- A key never acts under both a space and a project.
- A key with no context still authenticates, but ATLAS rejects every request. This makes it safe to park a key.
- Only team spaces can host keys. Divisions, units and the organisation root can't.
Why the context lives on the key#
Developers use one tool for several pieces of work. The context lives on the key, not on each request. So IDEs and command-line tools stay unchanged: they send the same secret, and the owner chooses in ATLAS which budget it draws on. Switching context updates the key. It isn't a new credential. Rotating a key is separate: revoke it and create a new one.
Membership is the gate. You can only point a key at a space or project you are an explicit member of. Owners and Admins can manage every space without a membership. To act through a key, they still need membership like everyone else. A key can never spend a budget its owner couldn't otherwise use. If the membership is removed, the key stays but becomes unbound.
Lifecycle#
stateDiagram-v2
[*] --> Active: create (dialog shows secret)
Active --> Active: switch context
Active --> Unbound: removed from space or project, or it is deleted
Unbound --> Active: owner picks a new context
Active --> Expired: expiry date passes
Active --> Revoked: owner or Admin revokes
Unbound --> Revoked
Expired --> Revoked
Revoked --> [*]- Creation takes a name, an optional context and an optional expiry date. The creation dialog shows the secret once. Copy it straight away.
- Expiry is optional unless your organisation caps key lifetime. The rules are in the API keys reference.
- Revocation is permanent. ATLAS keeps a record of the revoked key for the audit trail: its context, owner, request total and who revoked it.
- Copying the secret again works differently for the two kinds of key. You can copy your own personal key with Copy Key in its row menu until it expires, so a lost key needs no rotation. Admins can't read your personal keys. A project's key is different: an Admin or Owner can reveal it from the project's key list, until it expires.
ATLAS stores keys encrypted. Lists and reports show only the last four characters.
What callers see#
- Same answer for most failures. A missing, wrong, revoked, expired or disabled-owner key returns the same "authentication required" answer. Nobody can probe which keys exist.
- A different answer for a valid key that can't be used. You get a specific message if the organisation is suspended, the project is archived or the key has no context. It tells you to contact an Admin or choose a context.
- Two ways to send the key. OpenAI-compatible calls use an
Authorization: Bearerheader. Anthropic-compatible calls also acceptx-api-key, which is what Anthropic SDKs and Claude Code send. - Usage counters (request totals and last used) are batched, so they can lag by up to a minute. This is only about the numbers you see. It doesn't affect whether a key works.
Changes take effect within seconds#
These access changes reach the gateway within seconds:
- Revoking a key
- Switching its context
- Removing a member
- Suspending an organisation
Requests inside that window may be attributed to the previous context. The web app shows an "Applying context change…" notice after a switch. Scripts that call the API directly should expect the same short delay.
Who can see and manage keys#
flowchart TB
O[Owner] -->|create, switch, revoke, copy| K((Key))
SV[Space members] -->|view their own keys acting in the space| K
OA[Admin] -->|search, review, revoke| K- Owners manage their own keys. Space pages are read-only, so revocation happens in one place. Space members see only their own keys there. Admins and Owners see all of them.
- Admins and Owners see and revoke every key in the organisation, including project keys. They can also review the record of revoked keys.
- Project managers and Account Managers create and revoke project keys from the project page. They can't reveal a project key.
- Asking about a key you can't access looks the same as asking about one that doesn't exist.
Related#
- Concepts: Budget and cost, Gateway, Spaces, Projects
- Reference: API keys
- Guides: Create and manage your API keys, Connect Claude Code and opencode, Monitor and revoke API keys