Skip to main content
Every failing request returns a standard HTTP status code and a JSON body with a single error object:
message wording may change at any time; code values are part of the API contract and only change with a new API version. Treat an unrecognized code as a generic failure of its HTTP status class rather than failing hard.

Error codes

404 is also returned instead of 403 for objects a token can’t see, so that the API doesn’t reveal whether an id exists. A 404 on an id you expect to exist usually means the token’s permissions don’t cover it.

Handling errors

  • 400 / 422 — the request is wrong; fix it and don’t retry as-is. On invalid_cursor, drop the cursor and restart the iteration from the first page with the same filters.
  • 401 / 403 — check the token and its permissions; retrying won’t help.
  • 429 — back off for at least the Retry-After seconds returned with the response before retrying.
  • 5xx — retry with exponential backoff and jitter. Feed requests are idempotent, so replaying a page is safe.