Overview
Every API key carries one or more scopes, and the API enforces them on every request. Scopes let you:- Limit blast radius if a key leaks or is misused.
- Hand a dependent (third-party integration, BI tool, automation) only the access it actually needs.
Scope vocabulary
Scopes have the shaperesource:action, for example payouts:write. Two actions are defined today: read and write.
Each endpoint requires one or more scopes following its resource and HTTP verb (GET /v1/payouts requires payouts:read; POST /v1/payouts requires payouts:write). You don’t have to memorise the rule. The authoritative list is GET /v1/scopes, and the required_scopes field on a 403 tells you exactly what an endpoint needs.
Catalogue
GET /v1/scopes is the live source of truth (public, no authentication required). The catalogue is filtered by your request’s api-version header, so the list reflects what’s available on the version you’re calling.
Aliases
Three aliases expand to a set of concrete scopes:A
full_access key automatically gains access to scopes added to the catalogue later. If you want a key whose budget is fixed at creation time, choose explicit scopes or a narrower alias.Choosing scopes for a key
Scopes are picked at key-creation time in the Augustus Dashboard. Some starting points for common integration patterns:
When in doubt, start narrow. If a real call returns
insufficient_scope, the error tells you exactly what’s missing, so widen and rotate the key.
Verifying & troubleshooting
Inspecting a key’s scopes
GET /v1/api_key returns the resolved scope set for the key authenticating the request. Useful at session start to plan within budget rather than discovering limits via 403 responses.
Authorization errors
A request that doesn’t satisfy an endpoint’s required scopes is rejected with403 insufficient_scope. The response carries a required_scopes array enumerating every scope the endpoint requires, regardless of what your key has:
scopes (from GET /v1/api_key) from required_scopes to know exactly what to add when you create the next key.
insufficient_scope is distinct from permission_denied, which covers non-scope authorization failures such as IP allowlist mismatches or account approval state.
Rotating scopes
The scope set on an existing key is immutable. To change scopes, create a new key and revoke the old one. Recommended rollout:- Create a new key in the Augustus Dashboard with the new scope set.
- Verify with
GET /v1/api_key(using the new key) thatscopesis what you expect. - Roll the new key out across your services (env var swap, secret rotation, etc.).
- Revoke the old key in the dashboard once no traffic is using it.