HTTP Status 429 - Too Many Requests

Der HTTP-Status-Code 429 Too Many Requests signalisiert, dass Client das Rate-Limit überschritten hat. Server lehnt weitere Requests temporär ab. Response sollte Retry-After Header mit Wartezeit enthalten. Essential für API Rate Limiting und DoS-Protection.

Typ

Response-Status-Code

Syntax

Der Status Code wird mit Retry-After Header zurückgegeben.

http
HTTP/1.1 429 Too Many Requests
Retry-After: 60

Direktiven

Der 429 Too Many Requests Status Code wird für Rate Limiting verwendet.

Rate Limit Exceeded
Client hat zu viele Requests in Zeitfenster gesendet (z.B. 1000 Requests/Hour). Server blockiert weitere Requests bis Limit reset.
Retry-After Header
Response sollte Retry-After Header enthalten (Sekunden oder HTTP-Date). Gibt an, wann Client nächsten Request senden darf.
Rate Limit Headers
Best Practice: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset Headers für Client-seitige Throttling.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für Status 429.

Beispiel 1 API Rate Limit with Headers

http
GET /api/data HTTP/1.1
Host: api.example.com
Authorization: Bearer token123

HTTP/1.1 429 Too Many Requests
Retry-After: 60
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1696176000
Content-Type: application/json

{
  "error": "rate_limit_exceeded",
  "message": "API rate limit exceeded",
  "limit": 1000,
  "window": "1 hour",
  "reset_at": "2025-10-01T15:00:00Z"
}

Beispiel 2 Per-User Quota

http
POST /api/reports HTTP/1.1
Host: api.example.com
Authorization: Bearer user_token

HTTP/1.1 429 Too Many Requests
Retry-After: Mon, 02 Oct 2025 00:00:00 GMT
Content-Type: application/json

{
  "error": "daily_quota_exceeded",
  "message": "You have used all 10 report generations for today",
  "quota": 10,
  "used": 10,
  "reset": "2025-10-02T00:00:00Z",
  "upgrade": "https://billing.example.com/upgrade"
}

Beispiel 3 IP-Based Rate Limit

http
GET /api/public/search HTTP/1.1
Host: api.example.com

HTTP/1.1 429 Too Many Requests
Retry-After: 120
X-RateLimit-Type: ip-based
Content-Type: application/json

{
  "error": "rate_limit_exceeded",
  "message": "Too many requests from this IP address",
  "limit": "100 requests per 5 minutes",
  "client_ip": "203.0.113.42"
}

Rate Limiting Flow

429 Too Many Requests bei Rate Limit Überschreitung

Vorteile für die Systemarchitektur

  • DoS Protection: Schützt API vor Überlastung durch excessive Requests von einzelnen Clients. Prevents Resource-Exhaustion und ensures fair Usage für alle Clients.
  • Predictable Performance: Rate Limits ensure konsistente API-Performance. Backend-Services können basierend auf garantierten Request-Rates skaliert werden.
  • Business Model Enablement: Ermöglicht Tiered-Pricing basierend auf Request-Quotas. Free Tier mit niedrigem Limit, Paid Tiers mit höheren Limits.

Spezifikation

RFC 6585, Section 4 – Additional HTTP Status Codes https://www.rfc-editor.org/rfc/rfc6585.html#section-4

Weitere Spezifikationen

Retry-After Header, Cache-Control Header