Authorization header:
401.
Mint a workspace key
Create an API key in the product app under Settings, then Developers. Any member of the workspace can mint one. A key is a workspace-scoped machine principal: it acts on behalf of the workspace, and it only ever reaches the people and sessions that workspace owns. A key looks likeish_sk_live_.... It is shown once, at creation. Copy it then; the product app masks it afterward and cannot show it again. Store it in a secret manager or an environment variable, never in client-side code or source control.
Scopes
A key carries any combination of seven scopes. Grant only what the integration needs.
A new key is minted with
sessions:run, sessions:read, and tasks:read. The task read is a default because a session can bind a registered task by id, so a key that runs sessions but cannot resolve the task it names would be a broken starting point.
No :write scope is granted by default. Ask for environments:write or tasks:write when the integration manages a registry rather than just running against it.
people:read is not granted by default either, and for a different reason: a person record carries demographics and a written background about someone the workspace modelled, so reading the pool is a decision the person minting the key should make deliberately. Ask for it when the integration picks its own participants rather than being handed a person_id.
usage:read is not granted by default and nothing implies it. Usage answers how much the workspace has spent and how fast it may go, which is account information rather than simulation data, so it is a separate decision from running sessions.
people:write does not imply people:read. They are granted independently, so a key that only feeds people in never gains the ability to read the pool back out. Ask for both when the integration manages a roster it also searches.
A key without the scope an operation requires is refused with 403 and detail.error_kind = "insufficient_scope", which names the required_scope. Reading a trace needs sessions:read; everything that drives a session needs sessions:run.
Rotate a key
There is no in-place rotation. To rotate, mint a new key, move your integration onto it, then revoke the old one from Settings, then Developers. Because a workspace can hold several live keys at once, you can overlap the two long enough to cut over with no downtime, then revoke the old key. Revoking a key takes effect immediately: the next request that presents it returns a401.
User tokens for personal scripts
An ish user access token also works on the sameAuthorization: Bearer header. It is fine for a quick personal script you run as yourself, but it is tied to your user session rather than the workspace, so it is not the right credential for a deployed integration. Use a workspace key for anything machine-to-machine.
The values you need
The API examples throughout these docs use a few placeholders.
The person must be workspace-owned or a platform-library profile; anything else returns a
403.
Related
Quickstart
Put a key to work: create a session and run a turn.
Handling errors
What
401, 403, and the rest mean, and how to recover.