HTTP 429 Too Many Requests
The status a server returns when a client has exceeded its rate limit.
429 says the request was understood and refused purely for pacing. Nothing was processed, so it is safe to retry unchanged once the wait has elapsed. It is distinct from 503, which means the server itself is unavailable, and from 403, which means the request will never be allowed regardless of timing.
Full guide:
The difference between HTTP 429 and 503, and which one you retry
— A 429 is about you: your client exceeded its allowance and nothing was processed, so the identical request is safe to retry. A 503 is about the server: it is unavailable for everyone, and the request may have partly executed before failing, so a retry needs an idempotency key. Both warrant backoff; only 429 is fixed by slowing your own client down.
Key facts
- A 429 response means nothing was processed, which makes retrying the identical request safe.
- Retry-After on a 429 is the authoritative wait: honouring it beats any client-side backoff calculation.
- 429 is about pacing and 403 is about permission — a 403 will not become successful by waiting.
- Treat 429 and 5xx the same way in retry logic, because the correct response to both is to back off.
Frequently asked questions
Should a 429 count as an error in my monitoring?
Track it separately. A steady trickle is normal backpressure working as intended; a sudden rise means your traffic shape changed or a limit did. Folding it into a generic error rate hides both.
What is the difference between 429 and 503?
429 is specific to you: you exceeded your allowance. 503 is about the server: it is unavailable for everyone. Both warrant backoff, but only 429 is fixed by slowing your own client down.
Machine-readable copy of this page:
/glossary/http-429.md