Errors

Errors follow RFC 9457 (Problem Details) and carry a stable code.

Format

Content-Type application/problem+json with type, title, status, code, detail, instance (= X-Request-Id) and, for validation errors, errors[] with path, message, code.

json
{
  "type": "https://www.claritos.io/developers/errors#validation-failed",
  "title": "Validation failed",
  "status": 422,
  "code": "validation-failed",
  "instance": "req_…",
  "errors": [
    { "path": "body.email", "message": "Invalid email", "code": "invalid_format" }
  ]
}

Codes

unauthorized (401), key-expired (401), ip-not-allowed (403), api-disabled (403), insufficient-scope (403), clients-data-not-enabled (403), not-found (404), method-not-allowed (405), conflict (409), payload-too-large (413), validation-failed (422), idempotency-mismatch (422), rate-limited (429), internal (500).

X-Request-Id

Every response carries X-Request-Id. Quote it in support requests — it lets us find the call in the log.