Skip to main content
Every failed request returns the same JSON shape and an HTTP status in the 4xx or 5xx range.
string
required
A stable, machine-readable code. Branch on this.
string
required
A human-readable explanation of the first problem. Wording can change; do not parse it.
string
required
The request’s identifier, also in the X-Request-Id response header. Include it when you contact support.
object[]
Every problem found, when there is more to say than message. Each item has a message and usually a field: the body field or path at fault, such as limit, filters.all.0 or criteria.2.

Error codes

Handling errors in code

Branch on the HTTP status for whether to retry, and on code for what to tell the user.
One case needs extra care: a 409 idempotency_key_reused when you retry a start with the same key and body means the first attempt is still being handled. Wait a few seconds and retry. See Errors and retries.

Validation details

400 invalid_request reports every problem at once, so you can fix a request in one pass. The field is a path into the request body:

Failures that are not errors

A search that was accepted and then ran into trouble does not return an HTTP error. The request that started it succeeded. Read the outcome from the search: See Search lifecycle.