The contract is the documentation
The live OpenAPI document is the source of truth — routes, schemas, parameters, and examples:operationIds, tags, and schemas are maintained there first.
Authentication
All authenticated endpoints take a bearer token:Device login (people)
Device login (people)
An RFC 8628 device-authorization flow: request a device login, approve it in the browser, poll for the credential. This is what the Claude plugin’s
/addison:signin does for you — if you’re a person using an agent, use the plugin rather than implementing this yourself.Machine-to-machine (automation)
Machine-to-machine (automation)
Your Summation admin issues a The exchange is form-encoded; all other endpoints use JSON bodies. Access tokens expire (about an hour) — refresh by exchanging again.
client_id and client_secret with scopes. Exchange them for an access token:What’s available
Conventions
- Errors follow a problem-details shape:
type,title,status,detail,code, andrequest_id. Always log therequest_id— it joins your failure to server-side traces, and support will ask for it. - Streaming endpoints (chat, report generation, verification, imports) return server-sent events; send
Accept: text/event-stream. - Pagination fields are documented per-operation in the OpenAPI contract; preserve them rather than assuming page shapes.
- Rate limiting returns
429— retry with jitter and respect any retry headers. - Scopes:
agent:readfor reads,agent:writefor mutations,tables:appendfor file imports. A valid token missing a scope gets403with the missing scope named.
Building an agent instead of an app? The MCP Server wraps this API in curated tools with the safety rails already in place — start there.