/docs/api/errors

Errors & limits

Every obsrv API response uses standard HTTP status codes. Errors return a JSON body with a stable code, a human message, and (when applicable) a list of field errors.

Error shape

{
  "error": {
    "code": "invalid_request",
    "message": "steps[0].messages[0].role is required",
    "fields": [
      { "path": "steps[0].messages[0].role", "issue": "missing" }
    ]
  }
}

Status codes

StatusCodeMeaning
400invalid_requestBody failed schema validation. The error body lists the offending fields.
401unauthorizedAPI key is missing, malformed, or revoked.
403forbiddenAuthenticated, but the resource isn't owned by your org/project.
404not_foundResource doesn't exist (or your key can't see it).
409conflictIdempotency or unique-constraint violation.
413payload_too_largeTrace or media payload exceeds the per-call size limit.
422unprocessable_entitySchema is structurally valid but semantically rejected.
429rate_limitedYou exceeded the per-project rate limit. Honor the Retry-After header.
500internal_errorAn unexpected server error. Safe to retry with backoff.
503service_unavailableMaintenance or partial outage. Retry.

Per-request limits

  • Trace payload: 8 MB hard cap. Use the steps endpoint or media upload for larger evidence.
  • Single media upload: 100 MB.
  • Steps NDJSON batch: 5,000 lines per request.
  • Search query: 25 results default, 250 max.