Scopes

Every permission an API key or application can hold.

A scope is one permission, written resource:action. A credential holds a set of them, and every request checks the scope the endpoint declares.

Holding a scope is necessary but not sufficient: your role is checked too, live, on every request. See Authentication.

This page lists the catalogue as it exists in the product. You can also fetch it as JSON from GET /api/v1/scopes and render it yourself, which is what the dashboard's permission picker does.

Wildcards

Two shorthands are accepted when you create a credential:

WildcardExpands to
*:readevery standard read scope
*every standard scope, read and write

Wildcards expand to standard scopes only. They never include a sensitive or privileged scope — so asking for "everything" does not quietly hand out the audit log, billing, or candidate email bodies. Those must be named individually.

Selecting a write scope also grants its read half, where one exists. There is no way to hold jobs:write without jobs:read.

Standard

Included by * and, for the read halves, by *:read.

ScopeGrants
apps:readList installed applications and API keys.
jobs:readJobs, requisitions, and stage configuration.
jobs:writeCreate and edit jobs and stages.
candidates:readProfiles, applications, and stage history.
candidates:writeMove stages, edit profiles, add notes.
companies:readCompany records in your CRM.
companies:writeCreate and edit company records.
interviews:readScheduled interviews, stages, and debriefs.
interviews:writeManage interview stages and scorecards.
scheduling:readAvailability and bookings.
insights:readAgent learnings and insight tags.
insights:writeCreate, archive, and theme insights.
pipeline:readStage counts, throughput, and stalled work.
onboarding:readOnboarding state for the active client.
agents:readList sessions and available agents.
organization:readOrganization profile and settings.
members:readWho is in the organization and their roles.

Sensitive

Never included by a wildcard. Name them explicitly.

ScopeGrantsMinimum role
candidate_emails:readInbound and outbound message bodies, including personal data.org:member
candidate_emails:writeSend mail to a candidate.org:member
scheduling:writeBooks and cancels real calendar events with real people.org:member
agents:historyFull transcripts, which carry candidate and client detail.org:member
agents:invokeRuns the agent, which can reach every other scope this credential holds.org:member
agents:writeCreate, rename, and cancel sessions.org:member
clients_messaging:writeSends an outbound message to a client.org:member
billing:readSubscription status, agreements, and invoice summaries.org:admin
audit:readThe organization's audit trail.org:admin

agents:invoke runs the agent, and the agent can reach every other scope the same credential holds. Granting it is closer to granting the whole credential than to granting one endpoint.

Always granted

ScopeGrants
context:readDiscover what this workspace exposes.

Privileged — not grantable

These exist in the vocabulary so that the dashboard and the audit trail can name them, but no credential can hold one. They are refused even when requested explicitly, so a request naming one does not half-succeed.

ScopeGrants
apps:writeCreate and revoke credentials.
organization:writeRename the organization and change settings.
members:writeInvite, remove, and change roles.
billing:writeChange what the organization pays.

Anything in this table is done by a person in the dashboard, never by a key or an application.

Last updated on

On this page