Skip to main content
Every error from both services follows one envelope, so you can handle failures the same way everywhere.

Error envelope

The details array is present on some errors and identifies what to fix. Its entries take one of these shapes: field_error (a bad field), constraint_violation (a limit exceeded), retry_info (when to retry), or upload_not_ready (an upload still processing).

Error codes

Rate limits

Chunk uploads (PUT /v1/uploads/{id}) and status checks (GET /v1/uploads/{id}) are not rate-limited. When you are rate-limited, the response includes a Retry-After header telling you how many seconds to wait. The Adclear API’s 60/minute budget is shared across every /v1/* endpoint, so frequent polling of evaluation status competes with your create and evaluate calls. Prefer webhooks to receive results without spending the budget.

Common issues

  • Verify the Authorization header is Bearer <key> (note the space after Bearer).
  • Confirm you’re using the correct key for the environment. Staging and production keys are not interchangeable.
  • A message ending in Code: KEY_DISABLED means the key was revoked. A message ending in Code: KEY_EXPIRED means it expired (see Key expiry). Generate a new key in Settings > Organisation > API keys.
  • The API key authenticates but isn’t fully configured for your organisation.
  • If the message is API key is not configured for public API access and you generated the key in Settings, check that the person who generated it is still a member of your organisation and doesn’t hold an external role (external uploader or reviewer). If they have left or changed role, generate a new key from another account (see Keys tied to their creator).
  • Otherwise, contact Adclear support with the correlationId from the error response.
Honour the Retry-After header. If you’re regularly hitting the limit, batch requests or contact support to discuss your usage.
A transient upstream issue. Retry after 2 to 5 seconds. If it persists, contact support with the correlationId.

General tips

  • Pass your own trace ID in the X-Correlation-ID request header. Adclear echoes it back in every response.
  • Always include the correlationId in support requests. It lets us trace the full request lifecycle.
  • Test against staging before production.
  • Cache reference data (products, channels, jurisdictions, target markets) and refresh daily.