06 Guides

API error codes and retries

Every error is JSON with an error field and the fields that help to handle it.

The error body

HTTP 402
{
  "error": "quota_exhausted",
  "reset_at": "2026-11-01T00:00:00Z"
}

Possible fields: error, detail, reset_at, retry_after, markets, data_age_seconds.

Codes

HTTPerrorWhen
400bad_requestA bad parameter, limit above the plan, offset given. The detail field explains.
401unauthorizedNo key, a wrong or revoked key, or the subscription has ended.
402quota_exhaustedThe period quota is spent; reset_at says when it renews.
403market_not_in_planThe market is not in the plan; markets lists those that are.
403feature_not_in_planThe change feed or live US search is not in the plan.
403invalid_signature · link_expiredA photo link is forged or expired.
404not_foundNo such car or path.
429rate_limitedMore requests per second than the plan allows; retry_after.
502image_upstream_unavailable · invalid_image_upstreamThe source did not return the photo.
503upstream_unavailable · upstream_quota_exhausted · upstream_invalid_responseLive US search: the provider is unavailable; retry_after.
500internal_errorOur fault; admins are already alerted.

When to retry

  • 429 and 503 — retry after retry_after seconds (the same value is in the Retry-After header).
  • 402 — retrying will not help before reset_at or a plan renewal: quota and limits.
  • 400, 401, 403, 404 — fix the request, the key or the plan; a retry returns the same.
  • 500 and 502 — one or two retries with a pause; we already see the error.