Start → Hilfe

429 von einem API-Gateway bedeutet zwei verschiedene Dinge

Lesen Sie den Body, nicht den Statuscode. Ein 429 wegen leerem Guthaben wird beim erneuten Versuch nie gelingen, egal wie lange Sie warten. Ein 429 wegen Überlastung beim Upstream löst sich meist in Sekunden.

Was Sie sehen

Warum das passiert

HTTP hat keinen Status für „Ihr Geld ist alle“. 402 Payment Required gibt es zwar, wird aber fast nie verwendet, also nutzen Gateways 429 sowohl für Abrechnung als auch für Drosselung. Die beiden sind praktisch Gegensätze: Das eine bleibt bestehen, bis Sie handeln, das andere ist vorübergehend und verschwindet von selbst.

Das ist wichtig, weil die meisten Retry-Helfer in SDKs nur auf den Statuscode schauen. Der Python-Client von OpenAI wiederholt 429 standardmäßig. Richten Sie ihn auf ein Gateway mit leerem Guthaben, verbraucht er sein komplettes Retry-Budget für eine Anfrage, die nicht gelingen kann, und meldet am Ende einen Timeout – und Sie suchen nach einem Netzwerkproblem, das es nicht gibt.

Es gibt eine dritte Ursache, die man kennen sollte, weil sie wie die zweite aussieht und anders behoben wird: ein Parallelitätslimit pro Konto. Die Meldung nennt es direkt — Concurrency limit exceeded for user, please retry later. Hier geht es nicht darum, wie viele Anfragen Sie pro Minute gesendet haben, sondern wie viele gleichzeitig liefen. Warten hilft, aber die eigentliche Lösung ist, die Parallelität im Client zu begrenzen; sie zu erhöhen hat den Fehler ja verursacht.

Prüfen, ob es daran liegt

Senden Sie eine Anfrage und schauen Sie auf den Body statt auf den Status:

curl -s -o /tmp/r.json -w '%{http_code}\n' \
  'YOUR_BASE_URL/chat/completions' \
  -H 'Authorization: Bearer YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"model":"YOUR_MODEL","messages":[{"role":"user","content":"hi"}],"max_tokens":1}'

cat /tmp/r.json

Ein Code oder Text mit quota, balance oder credit bedeutet Abrechnung. Alles mit rate, busy oder upstream bedeutet Drosselung. Ist der Body leer, prüfen Sie auf einen Retry-After-Header – ist er da, deutet das auf Drosselung.

So beheben Sie es

  1. Vor dem Wiederholen nach dem Body verzweigenParsen Sie das JSON und behandeln Sie 429 wegen Abrechnung als endgültig. Wiederholen verschwendet Ihr Retry-Budget und versteckt die echte Ursache hinter einem Timeout.
  2. Retry-After beachten, wenn vorhandenDrosselungsantworten enthalten ihn oft. Fehlt er, ist exponentielles Backoff ab etwa einer Sekunde ein vernünftiger Standard; sofortiges Wiederholen verschlimmert eine Überlastung meist.
  3. Guthaben getrennt von Fehlern überwachenEin leeres Guthaben ist ein geschäftliches Ereignis, kein Störfall. Die meisten Gateways zeigen das Guthaben über ihre eigene API oder ein Dashboard – beobachten Sie diese Zahl, dann begegnet Ihnen dieses 429 im Betrieb nie.
  4. Gleichzeitige Anfragen begrenzen, nicht nur die RateErwähnt die Meldung Parallelität, hilft eine langsamere Retry-Schleife nicht — das Limit zählt gleichzeitige Anfragen. Ein Semaphor um Ihren Client, so groß wie das Gateway erlaubt, behebt es richtig.
  5. Parallelität nicht erhöhen, um ein Drosselungs-429 zu lösenMehr parallele Anfragen gegen einen überlasteten Upstream erzeugen mehr 429, nicht mehr Durchsatz. Senken Sie die Parallelität und lassen Sie das Backoff arbeiten.
Bei APICLAN lassen sich die beiden ohne Raten unterscheiden. Leeres Guthaben liefert {"code":"API_KEY_QUOTA_EXHAUSTED"}; Überlastung beim Upstream liefert {"error":{"type":"api_error","message":"Upstream rate limit exceeded, please retry later"}}. Ihr Guthaben sehen Sie im Dashboard, Aufladungen wirken sofort.

Verwandte Themen

Unexpected token '<' beim Aufruf einer OpenAI-kompatiblen API401 invalid API key – wenn der Schlüssel richtig aussieht und trotzdem scheitert

Zuletzt geprüft am 2026-10-01. Geschrieben aus Problemen, die auf einem laufenden OpenAI-kompatiblen Gateway diagnostiziert wurden – nicht von anderen Seiten zusammengetragen.