List the workspace's API keys
Every API key minted in this workspace, newest first.
/v1/api-keysAdmin- Operation id
- list_api_keys
- Access
- An editor or a viewer is refused.
/v1/api-keysEvery API key minted in this workspace, newest first.
This is the inventory view: it answers what exists, what each key may reach, and whether anyone is still using it. It never returns a secret. The secret is disclosed once, in the create response, and no route can produce it again, so a key whose secret was lost has to be replaced.
prefix is the readable head of the secret and is the only part stored in
clear. Use it to match a key here against one pasted into a deployment.
last_used_at is null for a key that has never authenticated a request,
which is how an unused or misconfigured key is spotted.
scopes is the whole of what a key may reach, and an empty list reaches
nothing. A key listed here with "scopes": [] will be refused at every
operation.
Revoked keys are hidden unless include_revoked=true. agent_id narrows
the list to keys carrying that agent's pinning scope.
Tenancy: the request is scoped to one workspace, and the credential presented is what selects it. A caller with no membership in that workspace is refused with 404, which is indistinguishable from a workspace that does not exist.
Authorisation: admin or owner. An editor or viewer receives 403 insufficient_role.
Access: Authorization: Bearer carrying either a realm access token or an API key. A key must hold the admin-resources:write scope, and the workspace role of the person who owns it must meet the floor above.
A realm-issued access token, presented as Authorization: Bearer <token>. It acts as the person who signed in, and every operation resolves their workspace role live from the membership record.
In: header
Query Parameters
Filter to keys scoped to this agent
falseResponse Body
application/json
application/json
curl -X GET "https://example.com/v1/api-keys"{ "api_keys": [ { "id": "8f14e45f-ceea-4f4e-9c1f-2b0b2b7d4a11", "name": "Billing sync", "prefix": "sk_zr_7Qd2K", "scopes": [ "tickets:read", "customers:read" ], "expires_at": "2026-11-04T09:15:00+00:00", "last_used_at": "2026-08-13T22:41:07+00:00", "created_at": "2026-08-06T09:15:00+00:00", "actor_name": "Dana Osei" }, { "id": "b2d1c3e4-55aa-4c77-9f0e-1d6a8c2f0033", "name": "Status page poller", "prefix": "sk_zr_L0baR", "scopes": [], "created_at": "2026-07-28T14:02:33+00:00", "actor_name": "Dana Osei" } ]}