Docs  /  Errors

Errors

Every error response uses the same JSON envelope:

{
  "error": {
    "code": "invalid_parameter",
    "message": "min_divergence must be between 0 and 100.",
    "details": { "parameter": "min_divergence", "received": "150" }
  }
}

code is a stable machine-readable slug. message is human-readable. details is optional and route-specific.

Status codes

CodeWhen
200OK
304If-None-Match matched; body is empty
400Invalid parameter (bad type, out of range, unknown enum value, etc.)
401Missing or invalid token on an archive-gated route
404Resource not found
429Rate limit exceeded. See Retry-After header
500Unexpected server error. Safe to retry with backoff
501Endpoint is specced but not implemented (e.g. webhooks)

Error codes

CodeHTTPMeaning
invalid_parameter400A query/path parameter failed validation
invalid_cursor400Cursor is malformed or expired
token_required401This window requires a Bearer token
token_invalid401Token is unknown or revoked
not_found404Event, outlet, or category does not exist
rate_limited429Limit exceeded for this key
not_implemented501Endpoint reserved for a future release
internal_error500Something broke. Include X-Request-Id in your bug report

Retry guidance

  • 429: wait the number of seconds in Retry-After, then retry once.
  • 500: exponential backoff starting at 1 second, up to 3 retries.
  • Any 4xx other than 429: do not retry. Fix the request.