4xx Client Error
Safe to retry
429 Too Many Requests
The client has sent too many requests in a given amount of time — rate limited.
What causes it
- A tight polling loop or an un-throttled batch job.
- A shared IP (office NAT, CI runner) hitting a per-IP limit.
- A retry storm: a failure causing every client to retry simultaneously.
How to fix it
- Read the `Retry-After` header and wait exactly that long. If it is absent, back off exponentially with jitter.
- Cache aggressively and batch requests. Most 429s are caused by asking for the same data repeatedly.
- On the server, send `RateLimit-Limit` / `RateLimit-Remaining` / `RateLimit-Reset` so clients can self-regulate.
At a glance
- Class
- 4xx Client Error
- Reference
- RFC 6585 §4
- Standardised
- Yes
- Retry the request?
- Yes, with backoff
Other 4xx client error codes
- 400 Bad Request
- 401 Unauthorized
- 402 Payment Required
- 403 Forbidden
- 404 Not Found
- 405 Method Not Allowed
- 406 Not Acceptable
- 407 Proxy Authentication Required
- 408 Request Timeout
- 409 Conflict
- 410 Gone
- 411 Length Required
- 412 Precondition Failed
- 413 Content Too Large
- 414 URI Too Long
- 415 Unsupported Media Type
- 416 Range Not Satisfiable
- 417 Expectation Failed
- 418 I'm a teapot
- 421 Misdirected Request
- 422 Unprocessable Content
- 423 Locked
- 424 Failed Dependency
- 425 Too Early
- 426 Upgrade Required
- 428 Precondition Required
- 431 Request Header Fields Too Large
- 451 Unavailable For Legal Reasons
- 499 Client Closed Request