Skip to main content
HTTP errors use a stable envelope:

HTTP policy

Common authentication codes are missing_api_key, invalid_api_key, and missing_api_key_scope. Validation codes begin with developer_v3_search_ or developer_v3_enrich_ and identify the affected contract.

Async failures

An accepted request can later finish with a failed result. These failures appear inside the resource rather than as an HTTP error:
For Search, completed_with_errors is a terminal aggregate with usable results. Keep every ready result and handle failed items individually. Treat failed as a terminal search with no ready results. For Enrich, stop polling on completed or failed. The server-generated request_id is the status handle for accepted work.

Safe retry pattern

  1. Let Orbit generate request IDs. Persist the returned search_id or Enrich request_id after the POST succeeds.
  2. Retry transport, 429, and temporary server failures with backoff. Use an optional Idempotency-Key header when duplicate POSTs must be prevented.
  3. Honor Retry-After when present.
  4. Use exponential backoff with jitter for both POST retries and polling.
  5. Stop polling on every terminal status.
Reuse an Idempotency-Key only with the exact same request. Using one key for different work returns 409.