Skip to main content
HTTP errors return JSON. Responses generated by the API gateway use a top-level message field:
Validation and application errors may instead use a top-level detail field. Read either field when presenting an error to an operator. The exact set varies by endpoint. Each endpoint page lists the statuses that it returns, and the OpenAPI specification is the machine-readable contract.

Retry pattern

Retry only transient failures and rate limits:
Choose retryable_statuses from the endpoint’s documented responses. For example, pass {429, 500, 502, 503} only when that operation is safe to repeat. For POST /api/policies/import/start, do not include 500: create a new upload and import_id before trying again. Do not retry 400, 401, 403, 404, 409, 410, 413, or 422 without changing the request or resource state. Never re-send content that received a Block verdict.

Job failures are not HTTP errors

An asynchronous enforcement job can finish with status: "failed". In that case, the error field on the job explains the failure while the poll request itself returns HTTP 200.