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 no tiene un estado que signifique «te has quedado sin dinero». 402 Payment Required existe pero casi nunca se usa, así que las pasarelas reutilizan 429 tanto para facturación como para limitación. Ambos son opuestos en todo lo práctico: uno es permanente hasta que actúes, el otro es transitorio y se resuelve solo.
Esto importa porque la mayoría de los ayudantes de reintento de los SDK se basan solo en el código de estado. El cliente de Python de OpenAI reintenta los 429 por defecto. Apúntalo a una pasarela sin saldo y gastará todos sus reintentos en una petición que no puede tener éxito, para luego mostrar un timeout, lo que te manda a buscar un problema de red que no existe.
Hay una tercera causa que conviene conocer, porque se parece a la segunda y se arregla de otra forma: un límite de concurrencia por cuenta. El mensaje lo dice directamente — Concurrency limit exceeded for user, please retry later. No se trata de cuántas peticiones enviaste en un minuto, sino de cuántas había en curso a la vez. Esperar ayuda, pero la solución real es limitar el paralelismo en tu cliente; aumentarlo es lo que causó el error.
Haz una petición y mira el cuerpo en lugar del estado:
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 código o mensaje que menciona quota, balance o credit indica facturación. Cualquier cosa que mencione rate, busy o upstream indica limitación. Si el cuerpo está vacío, busca la cabecera Retry-After: su presencia apunta a limitación.
{"code":"API_KEY_QUOTA_EXHAUSTED"}; la congestión del upstream devuelve {"error":{"type":"api_error","message":"Upstream rate limit exceeded, please retry later"}}. Tu saldo está en el panel, y las recargas se aplican al instante.Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela compatible con OpenAI en producción, no recopilado de otras webs.