Skip to content
← All docs

Scope catalog, what each OAuth / PAT scope grants

Complete list of Niyra API scopes, what each one allows, and how to pick the minimum set for your integration.

Scope catalog

Every token Niyra issues (OAuth access tokens minted via DCR, and Personal Access Tokens minted from Settings → API) carries an explicit scope set. Endpoints check scopes per call.

Available scopes

ScopeGrants
niyra:askniyra_ask: synchronous Q&A
niyra:executeniyra_execute: task execution, including running tools that take action (email, calendar, integrations)
niyra:followupContinuing existing conversation threads with conversation_id
niyra:memories:readniyra_memories: search the user's memory store
niyra:memories:writeniyra_remember: add a new memory
niyra:tasks:readniyra_get_task: poll status of background tasks

Picking scopes

Read-only integration

If your app only asks questions, ask for niyra:ask and nothing else. The smallest possible blast radius if the token leaks.

niyra:ask

Read + memory-aware

For apps that personalize based on what Niyra knows about the user but don't take action:

niyra:ask niyra:memories:read

Full agent integration

For apps that need Niyra to actually do things (send emails, file tickets, schedule meetings):

niyra:ask niyra:execute niyra:followup niyra:tasks:read

Memory-sync integration

For apps that ingest user data into Niyra (e.g. a CRM that wants Niyra to know about every customer):

niyra:memories:read niyra:memories:write

What scopes do NOT grant

  • Scopes never grant access to billing, plan info, or account settings. Those live on the Clerk-authed dashboard surface and are out of scope for the public API.
  • Scopes do not grant access to the user's raw provider credentials (Gmail tokens, Calendar tokens, etc.). Niyra uses those internally; your token only sees the results of tool calls.
  • Scopes do not grant cross-user access. Every token resolves to exactly one Niyra user.

Scope errors

When a request lacks a required scope, you get:

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "insufficient_scope",
  "error_description": "this endpoint requires scope niyra:execute",
  "scope": "niyra:execute"
}

The scope field on the response advertises the minimum scope the endpoint needs, useful for "we should re-run OAuth with broader consent" flows.

Related

FAQ

Can I add a scope after the fact?
For OAuth, the client has to re-run /oauth/authorize with the new scope set. For PATs, mint a new token. Scope is immutable per token.
What's the right default for a new integration?
Start with niyra:ask. Add niyra:execute only when you actually need Niyra to take action.
For AI:.md.txt
Scope catalog, what each OAuth / PAT scope grants · Niyra Docs