Skip to Content
Errors

Errors

Every error uses the same envelope:

{ "success": false, "error": { "code": "insufficient_credits", "message": "Not enough credits for this call" }, "request_id": "req_7ed41a20-822f-4221-a674-cb84ebc74077" }

Branch on error.code, not the message — messages may improve over time; codes are stable and only ever added to. Include the request_id when contacting support.

Error codes

CodeHTTPMeaning
invalid_request400Malformed input — missing required field, bad JSON, unfetchable URL
unsupported_format400The file isn’t a PDF or plain text (DOCX not yet supported)
invalid_key401Missing, unknown, or revoked access key
insufficient_credits402Balance too low — the call was not charged
not_found404No such resource
idempotency_conflict409Idempotency key reused with a different payload
parse_failed422The document couldn’t be structured (e.g. an image-only scan)
missing_candidate422/match or /score/requirements got no usable candidate input
missing_role422/match or /score/requirements got no usable role input
rate_limited429Too many requests — back off and retry
internal_error500Our fault. Retry once; if it persists, report the request_id

Retry guidance

  • 429 and 500: safe to retry with exponential backoff — failed calls were refunded.
  • 4xx (everything else): don’t retry unchanged; the request itself needs fixing.
  • Long documents can take tens of seconds on /parse/* and /match — set client timeouts to at least 120 seconds.
Last updated on