429 Too Many Requests with no obvious patternRetries make the problem worseOnly some requests fail while others succeed at the same momentRate limiting under a load that used to be fineLos proveedores miden varias dimensiones a la vez: peticiones por minuto, tokens por minuto y a veces peticiones simultáneas. Alcanzar el límite de tokens estando muy por debajo del de peticiones es la razón de que fallen «solo algunas peticiones».
Los límites de tokens cuentan lo que envías más lo que reservas. Unas pocas peticiones con un max_tokens grande pueden agotar el presupuesto de tokens por minuto mientras el número de peticiones parece insignificante.
Los reintentos inmediatos también cuentan. Un bucle de reintentos apretado convierte una pausa de un segundo en un bloqueo sostenido, que es la razón habitual de que un 429 pasajero se vuelva permanente.
Cuando recibas un 429, imprime las cabeceras en lugar del cuerpo:
curl -s -D- -o /dev/null -X POST 'YOUR_BASE_URL/chat/completions' \
-H 'Authorization: Bearer YOUR_KEY' -H 'Content-Type: application/json' \
-d '{"model":"MODEL","messages":[{"role":"user","content":"hi"}]}' \
| grep -i 'retry-after\|ratelimit\|^HTTP'
Respeta Retry-After cuando esté presente. Si no está, un backoff exponencial con jitter empezando en torno a un segundo es el valor seguro por defecto.
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.