Skip to content
Skip to Content
APIScopes

Scopes

A key holds a fixed set of scopes, chosen when you create it. Scopes cannot be widened later; to change what a key can do, create a new one and revoke the old.

An operation the key lacks a scope for returns 403 with missing_scope, naming what is missing.

The scopes

ScopeWhat it opens
todos:readTodos and todo lists, with their titles, descriptions, assignees, schedules and run history.
todos:writeCreating, updating, archiving, restoring and deleting todos and lists, and starting agent runs on a todo.
chats:readChats and every message in them, including agent replies and the tool calls the agent made.
chats:writeStarting chats, sending messages, cancelling a running chat, and archiving, restoring or deleting chats.
agents:readThe agents in the workspace with their instructions, skills and working hours.
agents:writeCreating agents, changing their instructions, permissions, skills and working hours, and archiving or restoring them.
captures:readCaptures in full: the transcript of a recording, the notes taken during it, and the generated summary.
captures:writeCreating notes, starting and stopping recordings, editing capture titles, content and tags, and archiving, restoring or deleting captures.

The reference marks every operation with the scopes it needs, and GET /api-keys/scopes returns this same list from the server if you are building a screen around it.

Which ones you need

Grant the least that works.

  • A dashboard that shows outstanding work: todos:read.
  • A tool that files todos from another system: todos:read, todos:write.
  • An assistant that answers questions about meetings: add captures:read, and know what you are granting.
  • Something that configures agents: agents:read, agents:write.

Write access implies the matching read in practice, since a create returns the thing it created, but the scopes are still separate: grant both when you need both.

Leaving transcripts out of it

If your integration does not need meeting content, do not grant captures:read. Nothing else stops working. A key with todos:read, chats:read and agents:read can work across the whole workspace and never read a transcript, and the key creation screen offers Read only, no capture content as a preset for exactly that.

The split exists because a capture holds what was actually said in a meeting. That is the most sensitive material in a workspace, and an integration that pipes API responses into a language model sends it somewhere you did not choose.

What scopes do not stop

Two things are worth knowing before you hand a write scope to someone else:

  • A key with agents:write can turn off an agent’s approval requirement.
  • A key with todos:write can start agent runs, which spend Doozy Minutes.

Neither is a bug, and both are things you would want to know a third party could do. Every state change made with a key is recorded against that key, so there is a trail of what it did.

Last updated on