API
Errors
Scope-to-endpoint reference, what isn't available via API key yet, and status codes.
Quick reference: scope → endpoints
| Scope | Endpoints |
|---|---|
brands:read | GET /api/brands/, GET /api/brands/{id}/, .../score-history/, .../category-deltas/, .../analytics/, .../recommendations/, GET /api/brands/{id}/categories/, GET /api/categories/{id}/prompts/, .../score-history/, GET /api/categories/{id}/analytics/ |
runs:read | GET /api/brands/{id}/runs/, GET /api/categories/{id}/runs/, GET /api/runs/{id}/, GET /api/responses/{id}/, GET /api/prompts/{id}/changes/ |
reports:read | GET /api/brands/{id}/reports/, .../reports/latest/, GET /api/reports/{id}/, .../download/, .../download.pdf |
Not available via API key (yet)
These are dashboard/session-only and return 403 to a key, even though some are read endpoints, so do not build against them:
- The
/api/v2/*composite endpoints (session-token windowed analytics). These power the dashboard UI; the stateless-per-call equivalent for report builders is the Analytics reference, which needs no window token. - Any create/update/delete (brands, prompts), starting scans/runs, generating reports.
- Notifications, billing, org, Reddit endpoints.
Errors
| Status | Meaning |
|---|---|
401 | Missing/malformed/revoked/expired key |
403 | Key lacks the required scope, or the org's API access add-on is inactive |
404 | Resource not found, or hidden (cross-org / unpublished run / non-existent report) |
429 | Rate limit exceeded — 60 requests per minute per key. Pause and retry |
500 | May indicate a request whose database work exceeded the 15s cap. Narrow the window or page size, and tell us if it looks reasonable |
Questions?
Flag a field you need that isn't exposed yet. The full docs and any additional read endpoints are being built now.