Sumidatasumidata.io
Sign in
Docs/Reference/Error codes
Reference · Errors

Error codes

Every 4xx / 5xx response shares the same envelope. Match on the machine-readable code field for programmatic handling; show message to humans.

01Error envelope

Consistent shape across all endpoints.

error.json
{
  "error": {
    "code": "invalid_stage",
    "message": "`stage` must be one of aware, acquire, activate, retain, revenue, refer",
    "request_id": "req_01HWA9Q8M4",
    "details": [
      { "field": "stage", "got": "aquire" }
    ]
  }
}

The request_id is the key field when contacting support. Include it in any bug report — it links to the full server-side trace.

02Error catalog

Complete list of codes, by HTTP status.

StatusCodeWhen
400invalid_stageThe stage value is not one of the six AAARRR keys (aware, acquire, activate, retain, revenue, refer).
400invalid_windowwindow must be one of 7d, 30d, 90d.
400validation_failedA field in the request body failed validation. See the details array.
400invalid_filterA q[...] filter references a field that's not in the whitelist for this endpoint.
401invalid_tokenMissing or malformed Authorization header.
401token_revokedThe token exists but has been revoked. Create a new one.
403project_forbiddenThe token belongs to a different project than the resource you're trying to access.
404session_not_foundNo session matches the given id, or it has been purged by retention policy.
404cohort_not_foundThe supplied cohort id does not exist in this workspace.
413payload_too_largeBatch exceeds 100 events or 1 MB total.
429rate_limitedOver 600 req/min. Retry after the seconds in the Retry-After header.

03Retry strategy

How to recover — by status class.

  • 4xx (except 429) — do not retry. Fix the request.
  • 429 — retry after the seconds in Retry-After. Use exponential backoff if you hit the limit repeatedly.
  • 5xx — retry with backoff (start 1s, double up to 60s). If it persists past 5 minutes, check status.sumidata.io.