Skip to main content
Every API error returns a typed JSON envelope with a stable error type, a machine-readable code, a human-readable message, and the request ID. Business outcomes (such as needs_review or inspection_required) are successful evaluation decisions, not errors.

Error envelope

Error types

Common error codes

Authentication errors (401)

Permission errors (403)

Invalid request errors (400)

Not found errors (404)

Rate limit errors (429)

When the rate limit is exceeded, the response includes a retry-after header with the number of seconds until the window resets:

Business outcomes are not errors

A quote that returns needs_input, unavailable, or failed is a successful evaluation decision, not an API error. These outcomes are returned with HTTP status 201 (for produced quotes) or 200 (for simulations), because the request was processed correctly — the evaluator simply determined that the request could not be priced. Handle these outcomes in your integration logic, not in your error handling:

The request ID

Every response — success or error — includes an x-request-id header. Use this ID to find the request in the Request logs or when contacting support. The ID is also present in the error envelope’s request_id field. For the full error schema, see the API reference.