Skip to main content
Everything the Addison plugin and the MCP server do runs on Summation’s public REST API:

The contract is the documentation

The live OpenAPI document is the source of truth — routes, schemas, parameters, and examples:
Discover operations from the contract rather than hardcoding paths; the API evolves and operationIds, tags, and schemas are maintained there first. The API Reference section of these docs is generated directly from that document — every endpoint gets a page at /api-reference/{area}/{operation} with its parameters, request and response schemas, code samples, and a playground. Because the pages come from the contract rather than being written by hand, they stay in step with the API.

Browse the API Reference

All endpoints, grouped by area — Projects, Tables, Reports, Schedules, Connectors, and more.

Authentication

All authenticated endpoints take a bearer token:
Two ways to get one:
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:login does for you — if you’re a person using an agent, use the plugin rather than implementing this yourself.
Your Summation admin issues a client_id and client_secret with scopes. Exchange them for an access token:
The exchange is form-encoded; all other endpoints use JSON bodies. Access tokens expire (about an hour) — refresh by exchanging again.

What’s available

Conventions

  • Errors follow a problem-details shape: type, title, status, detail, code, and request_id. Always log the request_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:read for reads and agent:write for mutations — file imports are agent:write (import_file, create_table_import, create_file_upload, write_file_content). tables:append is a separate scope for row appends: POST/PUT /v1/tables/{table_id}/rows, the ingestion-batch operations, and SumApp register/deregister. A valid token missing a scope gets 403 with 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.