GET /me tells the app who is calling and how, and the API-key endpoints let an admin mint, list, and revoke the keys that authenticate machine-to-machine callers.
Session context: GET /me
GET /me returns everything an app needs to paint its shell in one call — no follow-up requests. It reflects the credentials on the request itself and reads nothing extra from the database.
On the API-key path there is no human identity, so
user is null and auth_type is api_key. Key off account.id (or clerk_org_id) for tenant identity — never the mutable slug.API keys
An API key authenticates requests through theX-API-Key header (see authentication). Each account can hold multiple named keys, and all three management endpoints require an admin caller.
Creating a key
Supply a human-readablename. The response is the only time the full secret is ever returned — copy it immediately.
Listing keys
GET /api-keys returns the converged Page envelope with offset paging (limit, skip) and a real total. Only metadata and the short display_prefix are returned — the secret and its hash are never re-served.
display_prefix (first eight characters, e.g. gdf_Xa9d) lets you identify a key in a listing without exposing the secret. last_used_at reflects the most recent authenticated request, updated lazily.
Revoking a key
DELETE /api-keys/{key_id} flips the key’s status to revoked. The record survives for audit, but the key stops authenticating immediately — subsequent requests with it receive 401. Revocation is permanent; there is no un-revoke.
Keys are account-scoped and admin-equivalent — there are no per-key scopes or expiry in this version. Rotate a key by minting a replacement and revoking the old one once callers have switched over.
Next steps
Authentication
How the API key and Clerk JWT paths work on every request.
Monitoring and usage
Paint the dashboard and read usage analytics in one call each.