Skip to main content

Error envelope

Every error has the same shape:

Error codes

Refusals at submission (402, 403, 429) are not charged.

Retrying

Retry only when retryable is true. Wait retry_after_seconds when it is set, otherwise back off exponentially. When retrying POST /jobs, send the same Idempotency-Key so the retry cannot create a second job.

Job errors

A job that fails after it was accepted is not an HTTP error: GET /jobs/{id} returns 200 with status: "failed" and an error object.