4xx Client error · RFC 6585 §4

429 Too Many Requests

The client has sent too many requests in a given amount of time.

What 429 means

Rate limiting. The server may include a Retry-After header saying how long to wait, and often RateLimit-* or X-RateLimit-* headers describing the quota.

Limits are usually per API key, per IP or per user. Behind a shared NAT or a proxy that hides client IPs, one busy tenant can get everyone limited.

Common causes

  • A client polling too fast or retrying in a tight loop.
  • Many users behind one IP hitting a per-IP limit.
  • A misconfigured proxy that does not forward X-Forwarded-For, so all traffic looks like one client.

How to fix it

  • Honour Retry-After and back off exponentially with jitter.
  • Cache responses and batch requests.
  • Servers: trust the proxy's forwarded IP so limits apply per real client.

What it looks like

A typical response:

HTTP/1.1 429 Too Many Requests
Retry-After: 30
RateLimit-Limit: 600
RateLimit-Remaining: 0

The same event in an nginx access log (the status is the number after the request line):

203.0.113.7 - - [10/Sep/2026:10:12:01 +0000] "GET /api/search HTTP/1.1" 429 153 "-" "Mozilla/5.0"

Check it with curl

-i prints the status line and headers, and -w '%{http_code}' prints only the number, which is handy in scripts and health checks. Replace the URL with yours:

curl -sS -o /dev/null -w '%{http_code} %{time_total}s\n' https://example.com/api/orders

Compare what curl sees with what the browser sees. A different status from the same URL usually means a cache, a CDN edge or a cookie is in the way.

Investigating a run of 429s? Paste the log excerpt into Log Share to get line numbers, highlighting and an expiring link for whoever is on call with you.

  • 503Service Unavailable: The server is temporarily unable to handle the request.
  • 403Forbidden: The server understood the request and refuses to authorise it.
  • 408Request Timeout: The client took too long to send the request.

FAQ

How should a client handle 429?

Wait for Retry-After seconds (or a growing backoff if absent), then retry. Never retry immediately; that extends the ban.

Why do I get 429 on the first request?

Your IP or key is already over the limit because of other traffic, such as colleagues on the same office network or a background job.