Skip to content

Codes

The codes the public API returns, and what to do about each one.

StatuscodeWhenWhat to do
400VALIDATION_ERRORwindow > 90 days, from > to, unreadable cursorfix the parameter
401INVALID_API_KEYmissing header, malformed, or unknown keyverify the Authorization header
401API_KEY_REVOKEDthe key was revokedgenerate another
401API_KEY_EXPIREDthe key is past its expirygenerate another
403API_KEY_SCOPE_DENIEDthe key lacks the endpoint scope; today every key is created with tracking:readshould not happen in this version; contact support
403API_QUOTA_EXCEEDEDthe account reached its usage quota for the periodcontact support; waiting does not help
404—no such endpointverify the path and the /v1 prefix
429—per-key limit exceededwait for Retry-After
5xx—internal error in the PassKey APIretry with growing backoff; if it persists, contact support

401 × 403

The difference is operational, not cosmetic: 401 asks for a different credential, 403 asks for a different permission. Retrying a 403 with the same key will never work.

When to retry

  • 400, 401, 403, 404 — no. The same call fails again; fix the request.
  • 429 — yes, after the time given in Retry-After.
  • 5xx — yes, with growing backoff (1s, 2s, 4s…) and a retry ceiling.