Authorization header. Keys have the format sk_live_{uuid} and are stored bcrypt-hashed — the raw value is only ever returned once, at creation time. Each key carries one or more scopes that control exactly what it can do; there are no global, all-access keys by default. Applying the principle of least privilege keeps your ledger safe even if a key is compromised.
Passing your API key
Include your key in theAuthorization header of every request.
Creating API keys
Creating a key requires theADMIN scope. Send a POST request to /api/v1/api-keys with the list of scopes the new key should carry.
201 Created with the key details:
Available scopes
Assign only the scopes a key actually needs. A tightly scoped key limits blast radius if the credential is ever leaked.Listing your API keys
Listing keys requires theADMIN scope. You can retrieve all active keys for your tenant at any time. The response includes scope assignments and creation timestamps, but never the raw key values.
Revoking a key
To revoke a key, send aDELETE request with the keyId you want to invalidate. Revoking requires the ADMIN scope. A successful revocation returns 204 No Content — the key stops working immediately, and all subsequent requests using it receive a 401 response.
Revocation is permanent. If you need the same permissions again, create a new key with the same scopes.
Error responses
When you receive a
403, check the scope table above and ensure the key used for the request includes the required scope. If it does not, create a new key with the correct scopes or ask your admin to update the existing key.