The same permissions
A key carries scopes. The workspace carries tool grants, and reading a tool is not the same grant as acting in it. A call has to clear both.
403{ "code": "scope_missing" }
API
One call hands the coworker a job. It works in your workspace, then answers with the documents it used.
{ "input": "When does Northwind renew, and what notice do we owe?", "conversation_id": "northwind-renewal", "include": ["sources"], "stream": false }
{ "data": { "answer_id": "event_01k9m4rx7te2v8b0qz5cd3ny4f", "status": "queued" } }
{ "data": { "status": "completed", "output_text": "Northwind renews on 30 September 2026.", "sources": [{ "subject": "Northwind", "fact_text": "60 days' notice" }] } }
Streaming
Some jobs finish in a second. Some take minutes. Keep the connection open and read every frame, or take an id and come back later.
answer.created
{ "answer_id": "event_01k9m4rx7te2v8b0qz5cd3ny4f", "conversation_id": "northwind-renewal" }
answer.delta
{ "text": "Northwind renews on 30 " }
Those fourteen seconds are the work. It read the drive and checked the record before it wrote a word.
answer.delta
{ "text": "September 2026. Notice is due by " }
answer.completed
{ "status": "completed", "sources": [{ "subject": "Northwind" }] }
Ask for sources and the last frame carries the facts it used. Each one names the subject it came from.
done
{ "ok": true }
Send an Idempotency-Key and a retry reads the same run back instead of paying for a second one.
The same rules
The API is the same workspace, not a second product with its own settings. Every control you already set is on before the first call lands.
A key carries scopes. The workspace carries tool grants, and reading a tool is not the same grant as acting in it. A call has to clear both.
403{ "code": "scope_missing" }
Review workspace usage alongside the jobs your product starts.
Spend against cap
{ "code": "out_of_credits" }
Point the workspace at your Anthropic, OpenAI or Google key. The model bill goes to you.
A run your product started sits beside one somebody started in Slack, in the same list.
Auth
The API is in early access, so we issue keys ourselves: ask for one and a founder answers. You see the secret once, it carries only the scopes you need, and revoking it fails the next call.
The same key opens the MCP endpoint, so Claude or Cursor reaches the same coworker.
Tell us what you want to build and we hand you a key ourselves.