429 Too Many Requests{"code":"API_KEY_QUOTA_EXHAUSTED"}{"error":{"message":"Upstream rate limit exceeded, please retry later"}}A client with automatic retry that never stops retryingInsufficient account balanceConcurrency limit exceeded for user, please retry laterAll available accounts are currently rate-limited. Please retry later.HTTP n'a pas de statut qui signifie « vous n'avez plus d'argent ». 402 Payment Required existe mais n'est presque jamais utilisé, donc les passerelles surchargent 429 pour la facturation comme pour la limitation. Les deux sont opposés à tous égards : l'un est permanent tant que vous n'agissez pas, l'autre est transitoire et se résout tout seul.
C'est important parce que la plupart des mécanismes de relance des SDK se basent uniquement sur le code de statut. Le client Python d'OpenAI relance les 429 par défaut. Pointez-le vers une passerelle au solde vide et il épuisera toutes ses tentatives sur une requête qui ne peut pas réussir, puis affichera un timeout, ce qui vous envoie chercher un problème réseau qui n'existe pas.
Il existe une troisième cause à connaître, car elle ressemble à la deuxième et se corrige autrement : une limite de concurrence par compte. Le message la nomme directement — Concurrency limit exceeded for user, please retry later. Il ne s'agit pas du nombre de requêtes envoyées en une minute, mais du nombre de requêtes en cours au même instant. Attendre aide, mais la vraie correction est de plafonner le parallélisme dans votre client ; c'est l'augmenter qui a provoqué l'erreur.
Faites une requête et regardez le corps plutôt que le statut :
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
Un code ou un message mentionnant quota, balance ou credit indique la facturation. Tout ce qui mentionne rate, busy ou upstream indique une limitation. Si le corps est vide, cherchez l'en-tête Retry-After : sa présence pointe vers une limitation.
{"code":"API_KEY_QUOTA_EXHAUSTED"} ; une congestion de l'amont renvoie {"error":{"type":"api_error","message":"Upstream rate limit exceeded, please retry later"}}. Votre solde est sur le tableau de bord, et les recharges s'appliquent immédiatement.Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.