Every code has one HTTP status. The list below is the ones people hit first. The errors guide has all 21.
| Code | HTTP | Retry |
|---|---|---|
invalid_params | 400 | no |
unsupported_url | 400 | no |
unauthorized | 401 | no |
insufficient_credits | 402 | no |
forbidden | 403 | no |
private | 403 | no |
age_restricted | 403 | no |
not_found | 404 | no |
transcript_unavailable | 404 | no |
conflict | 409 | no |
removed | 410 | no |
rate_limited | 429 | yes |
unavailable_in_region | 451 | no |
internal | 500 | yes |
upstream_changed | 502 | no |
upstream_error | 502 | yes |
upstream_rate_limited | 503 | yes |
upstream_blocked | 503 | yes |
overloaded | 503 | yes |
not_implemented | 501 | no |
upstream_timeout | 504 | yes |
not_found, private and removed mean a logged-out visitor cannot see that item. unsupported_url means the URL is the wrong platform or an unrecognised form. invalid_params names the parameter in the message. upstream_changed means the platform response no longer parses. That one is not retryable until it is fixed. not_implemented means the endpoint is declared and not built.
rate_limited is per team, not per key. Wait for retry-after. Spreading the same burst across keys does not raise the limit.
Full detail: Errors.