Error API 429 Too Many Requests: límites, Retry-After y backoff seguro
Guía práctica para resolver errores HTTP 429 en API de LLM: análisis de límites RPM/TPM, lectura de Retry-After e implementación de backoff con jitter.
El error HTTP 429 Too Many Requests ocurre cuando un cliente supera los límites de frecuencia o el volumen de tokens establecidos por el proveedor de la API. Ejecutar reintentos infinitos sin control no soluciona el problema, sino que agrava el bloqueo generando tormentas de reintentos (retry storms).
Para restablecer la estabilidad de su aplicación, es necesario identificar con precisión el tipo de límite (RPM, TPM o saldo agotado), analizar correctamente el encabezado Retry-After e implementar un algoritmo de retroceso exponencial con ruido aleatorio (Full Jitter Exponential Backoff).
Por qué ocurre HTTP 429: anatomía de los límites
En las API de modelos de lenguaje modernos (OpenAI, Anthropic y pasarelas compatibles), el código de estado 429 se genera mediante tres mecanismos principales:
- RPM (Requests Per Minute): límite en la cantidad de solicitudes HTTP por minuto. Aparece al ejecutar múltiples procesos paralelos sin colas de control.
- TPM (Tokens Per Minute): límite en el volumen acumulado de tokens de entrada y salida en una ventana móvil de un minuto. Se activa con frecuencia al enviar contextos extensos.
- Agotamiento de cuota o saldo: bloqueo debido a depósito cero, límite estricto de gasto alcanzado o finalización del saldo prepagado.
Cuando el error se debe a la falta de saldo o a límites rígidos de suscripción, los reintentos automáticos solo desperdician recursos de red. Para aislar de inmediato la causa sin descifrar registros complejos, BetterToken ofrece un panel de control transparente: muestra en tiempo real los estados HTTP de cada solicitud, el desglose exacto de tokens de entrada, salida y caché, y el saldo disponible bajo el modelo pay-as-you-go sin bloqueos de 5 horas.
Matriz de diagnóstico del error 429
Cómo interpretar el encabezado Retry-After
La especificación RFC 6585 establece dos formatos válidos para el encabezado Retry-After:
- Segundos relativos (número entero o decimal, por ejemplo
Retry-After: 12); - Fecha HTTP (marca de tiempo GMT, por ejemplo
Retry-After: Sun, 23 Aug 2026 03:05:00 GMT).
Implementación de Full Jitter Exponential Backoff
Si no existe el encabezado Retry-After, la solución estándar es el retroceso exponencial con variación aleatoria total (Full Jitter). La fórmula para el intento es:
Idempotencia y seguridad en reintentos
Reintentar operaciones de lectura (GET) es seguro. Sin embargo, al invocar inferencia de LLM mediante POST:
- Evite duplicar tareas generativas: si una solicitud se interrumpe por tiempo de espera, verifique si se consumieron tokens antes de volver a enviarla.
- Utilice identificadores de cliente: incluya encabezados
X-Request-IDúnicos para auditar llamadas en los registros. - No trate errores 401 o 403 como 429: los errores de autenticación requieren corregir las credenciales, no aplicar pausas.
Validación y recuperación del servicio
Antes de restaurar el tráfico masivo:
- Envíe una solicitud de prueba mínima (
max_tokens: 5). - Compruebe la recepción de HTTP 200 y el encabezado
x-ratelimit-remaining-requests. - Aumente la concurrencia gradualmente mientras supervisa la tasa de errores 429 en sus métricas.
Para evitar bloqueos 429 inesperados debidos a límites estrictos por minuto y supervisar de forma transparente el estado de cada llamada, acceda a BetterToken API, genere claves de API dedicadas y controle el consumo de tokens en tiempo real desde el panel de control.