The scopes
Six resources, each with a read and a write scope.
Two rules cover the rest:
writeincludesread. A credential holdingjobs:writecan list jobs. You never need both.- Self-description is never scoped. Any credential can ask which workspace it acts for and what limits apply, whatever else it holds.
Narrowing an API key
Passscopes when you create a key and it can do only that.
scopes and the key gets everything the credential creating it can pass on, which for a
dashboard session is everything a key may hold. The response reports what the key actually
received, which is not always what was asked for.
Two limits apply to every key, however it was made:
- A key can never hold
keys:write. A key that can create keys survives its own revocation, so one leak becomes permanent access. Create and revoke keys from the dashboard, or from an app you granted key management to. - A key is never broader than what created it. Asking for more than the creating credential holds is refused rather than quietly narrowed.
What an app is asking for
When you connect an app over OAuth, the consent screen lists what it requested, area by area, with what each one lets it do. You can grant less than it asked for, and the app receives exactly what you allowed. A grant is bound to one workspace, the one named on the screen when you approved it. The same app connected to a second workspace is a second grant. Account, Security lists every connected app with what it can reach and where. Revoking deletes the grant and every stored token, so the app cannot get new access or renew what it has. An access token it already holds stays valid until it expires, which is under an hour.When a scope is missing
A request outside a credential’s scopes is refused with403 and a header naming what was missing,
per RFC 6750.
403, not a 401: the credential authenticated correctly and presenting it again cannot
help. Read the scope parameter to see what to ask for, then create a key that carries it or
reconnect the app and allow that area.
See also
- MCP server: connecting an app over OAuth
- Error codes: every code the API returns
- Plan limits: what a plan allows, which is a separate question from what a credential may do