HTTP Status Codes / 4xx HTTP Status Codes / HTTP 429

429 Too Many Requests

This is an educational reference page about HTTP 429 Too Many Requests. The page itself is served as 200 OK so it can be indexed as HTTP documentation.

The user has sent too many requests in a given amount of time (rate limiting).

Specification

Registered in the IANA HTTP Status Code Registry as Too Many Requests. Defined in RFC 6585, Section 4.

What it means

HTTP 429 Too Many Requests means the client hit a rate limit. RFC 6585 defines it, not RFC 9110. The response SHOULD explain the limit and MAY include Retry-After. RFC 6585 does not say how the server identifies the client or counts requests, so the limit can be per user, API key, IP address, endpoint, or the whole service.

When to use it

Common causes

Headers involved

Client fixes

Server fixes

Examples

API quota exceeded

GET /api/search?q=status HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOi...

HTTP/1.1 429 Too Many Requests
Retry-After: 30
Content-Type: application/problem+json

{
  "type": "https://api.example.com/problems/rate-limit",
  "title": "Rate limit exceeded",
  "status": 429,
  "detail": "This key allows 60 search requests per minute."
}

Common mistakes

Developer notes

Treat Retry-After as the minimum wait. When several workers hit 429 at the same moment, add random jitter to each wait so they do not all retry at once and trip the limit again.

Questions

What does HTTP 429 Too Many Requests mean?

HTTP 429 means the client sent too many requests in a given amount of time and hit a rate limit.

How long should I wait after a 429?

Wait for the time in Retry-After if the response has one. Otherwise use exponential backoff with jitter.

Is 429 in RFC 9110?

No. 429 is defined in RFC 6585, Section 4, and registered in the IANA HTTP Status Code Registry.

See also

Header and content rules

What RFC 6585 says about a 429 response, quoted from the RFC. The 4xx class rules also apply.

The same rules are in the response obligations table and its JSON.

4xx client error – the request contains bad syntax or cannot be fulfilled


HTTP status code lookup
REST API status code chooser
cURL command generator
By Ping Now, a website/API/service uptime monitor
Data from Wikipedia