Error shape
Errors are returned as JSON. The human readable text sits either inerror or in message
depending on the endpoint, so read both.
2xx does not mean the results are ready. The GET endpoints answer 202 while a request is
still running. See Request statuses.Status codes
Messages you are likely to hit
400 Bad request
401 Unauthorized
Find your key in your API settings. It travels in
the
X-API-Key header, not in an Authorization: Bearer header.
402 Payment required
A
402 on submission is different from the on_hold status. 402 means the request was refused.
on_hold means an accepted request paused mid-flight because the balance hit zero. Top up and it
resumes on its own. See Credits.422 Unprocessable
Retry policy
Retry429 and 500 with exponential backoff. Never retry 400, 401, 404, 406 or 422
unchanged: the same request will fail the same way. For 402, top up first.
Submissions are not idempotent. Retrying a POST that actually succeeded creates a second
request and consumes credits twice. When a POST times out with no response body, poll
GET /account or check your requests in the app before
resubmitting.