HTTP status codes / 4xx — Client errors
429 Too Many Requests
You hit a rate limit; slow down and honor Retry-After.
What it means
The universal rate-limiting response. Look for Retry-After and X-RateLimit-* headers to learn when and how much you can send. Burst traffic, retry storms and shared IPs (mobile carriers, CI) are common triggers.
Common causes
- Rate limit exceeded — burst traffic, retry storms
- Shared IP pools (mobile carriers, CI runners, corporate NAT)
- Per-token vs per-IP vs per-endpoint limits — know which one you hit
Reproduce it in cURL
curl -i https://httpbin.org/status/429
Same request, no terminal: paste this into the cURL converter for native code, or straight into ReqPad on your phone.
How to debug it
Implement exponential backoff with jitter, respect Retry-After exactly, and check whether the limit is per-token, per-IP or per-endpoint before redesigning your client.
Server-side note: Honor Retry-After exactly; implement exponential backoff with jitter. Read X-RateLimit-* headers to size your budget.
The fastest way to pin down a 429 is to reproduce the exact request and inspect what actually went over the wire — status, headers, timing and body, without your app code in the way. That is what an API client is for; ReqPad does it from your phone, with every request saved to history.
Related codes
400 Bad Request · 401 Unauthorized · 402 Payment Required · 403 Forbidden · 404 Not Found · 405 Method Not Allowed — or the full reference.
Reproduce that 429 in 10 seconds.
Build the request, send it, read status + headers + timing — on your iPhone. Free to start.