Skip to main content
When a request fails, the API returns a non-2xx HTTP status and a JSON body with a single error object. The code is a stable, machine-readable identifier; branch on it rather than on the human-readable message.

Error envelope

string
A stable error code from the table below. The set of possible codes is also enumerated in your OpenAPI spec.
string
A human-readable description. May change between releases - do not match on it programmatically.
string
The request id, matching the X-Request-Id header. Quote it in support requests.
object[]
Present only for validation failures (invalid_params). Each entry has a path (prefixed path., query., or body. to show where the invalid value was) and a message.

Error codes

A not_found (no matching company) is never billed. Neither is any request that fails before it reaches the data source - including validation, rate-limit, and entitlement errors.

Retrying

429 and the 5xx service-availability codes (auth_unavailable, entitlement_unavailable, upstream_timeout, and transient upstream_error) are safe to retry. When a Retry-After header is present, wait at least that many seconds; otherwise use exponential backoff. 4xx codes other than 429 indicate a problem with the request or plan and won’t succeed on retry.