Errores de API y limite de tasa
Una llamada a la API puede fallar de varias maneras distintas: un error 400 o 404 casi siempre señala una solicitud mal formada que debe corregirse antes de cualquier nuevo intento, salvo el caso particular de un 400 devuelto por haber alcanzado un límite de gasto, mientras que un error 429 solo se resuelve esperando si lleva una cabecera Retry-After, lo cual no es el caso de un límite de gasto alcanzado.
Un error devuelto por la API de Anthropic lleva un código de estado que distingue causas muy diferentes. Un error 400, invalid_request_error, o 404, not_found_error, señala una solicitud mal formada: un parámetro inválido, un contenido incorrecto, o un identificador de modelo que ya no existe tal cual. Reintentar esa llamada sin corregirla reproduce el mismo error indefinidamente, la única salida es ajustar la llamada a la especificación vigente. Un identificador de modelo que ha cambiado de nombre desde que se escribió un script explica buena parte de estos errores 400 y 404: la documentación actual del modelo vigente sigue siendo lo primero que hay que abrir antes de sospechar otra cosa. Sin embargo, un 400 no siempre es una solicitud mal formada: la API también devuelve este código cuando el uso alcanza un límite de gasto fijado para la organización o el espacio de trabajo, salvo en el espacio de trabajo de Claude Code, que en ese caso puede devolver un 429 en su lugar. En este caso concreto, corregir la solicitud no sirve de nada, es el límite mismo lo que hay que elevar.
No todos los errores 429 se resuelven esperando
Un error 429, rate_limit_error, señala que se ha alcanzado un límite, pero dos límites distintos producen este mismo código. Una tasa temporal superada lleva una cabecera Retry-After y se resuelve respetando el plazo que indica antes de reintentar. Un límite de gasto alcanzado para un nivel, en cambio, no lleva ninguna cabecera Retry-After: la documentación lo dice sin rodeos, un 429 de este tipo falla sin descanso hasta que se restablezca el acceso. Esperar ante una respuesta así no sirve de nada: seguir reintentando en ese caso desperdicia llamadas en vano y retrasa la verdadera solución, elevar el límite fijado por la organización antes de reanudar el envío de solicitudes.
HTTP/1.1 429 Too Many Requests
retry-after: 12
{"type":"error","error":{"type":"rate_limit_error"}}
La presencia o ausencia de esta cabecera, no el simple código 429, es lo que decide entre esperar o actuar de otra manera.
En Claude Code, dos variables gobiernan los reintentos
Un error 529, overloaded_error, muestra en Claude Code un mensaje que señala que la API está a plena capacidad, sin consumir la cuota de uso de la sesión. Esta precisión importa: una serie de 529 puede preocupar sin por ello mermar el volumen de uso que autoriza la suscripción. Claude Code reintenta automáticamente los errores 429 y 529 de tipo tasa temporal, nunca los 429 de límite de gasto de una pasarela. CLAUDE_CODE_MAX_RETRIES limita el número de intentos, CLAUDE_CODE_RETRY_WATCHDOG permite reintentar indefinidamente en una sesión sin supervisión: la figura que acompaña esta lección da los valores exactos.
Decidir si hay que esperar o actuar ya aparece en un comando bloqueado, donde se plantea la misma disyuntiva frente a un silencio que puede anunciar un bloqueo real o un trabajo todavía en curso.
Cuatro códigos de estado, su causa y el gesto de recuperación
| Código de estado | Significado | Causa probable | Gesto de recuperación |
|---|---|---|---|
| 400 | invalid_request_error | Parámetro inválido o contenido mal formado, a veces un límite de gasto fijado por la organización | Corregir la solicitud antes de cualquier nuevo intento, verificar el límite del lado de la organización |
| 404 | not_found_error | Punto de acceso o identificador de modelo incorrecto | Verificar el identificador exacto en la documentación actual antes de reintentar |
| 429 | rate_limit_error | Tasa temporal superada, o límite de gasto de un nivel alcanzado | Esperar el plazo de la cabecera Retry-After si está presente, si no, no esperar |
| 529 | overloaded_error | Capacidad de la API saturada, propia de Claude Code | Dejar que Claude Code reintente automáticamente, sin que eso consuma la cuota de uso |
Reintentos automáticos y tarifa de la Batch API
Un script envía una llamada a la API de Anthropic que falla con un código 429. La respuesta contiene una cabecera retry-after fijada en doce segundos. El desarrollador programa un nuevo intento tras ese plazo exacto.
Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.
Lo que esto establece: El desarrollador leyó la cabecera retry-after devuelta por la API y programó su nuevo intento según el plazo que indicaba.
Lo que esto no establece: Esto no establece que ese nuevo intento vaya a tener éxito, ni que cualquier error 429 encontrado en otro lugar lleve la misma cabecera retry-after.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Todo error 429 devuelto por la API de Anthropic lleva una cabecera retry-after que basta con respetar para que el siguiente intento tenga éxito.
- Demasiado estrecho Esta observación no prueba nada, ya que solo se hizo una llamada en un único script.
- Fuera de lugar Esta situación muestra que el script estaba inicialmente mal configurado para respetar el límite de tasa de la API.
- Un identificador de modelo obsoleto o un parámetro mal formado provoca un error 400 o 404, que no debe reintentarse tal cual sin corregir antes la solicitud, salvo el caso particular de un 400 devuelto por haber alcanzado un límite de gasto, donde lo que hay que elevar es el límite.
- Un error 429 abarca dos límites distintos: una tasa temporal, que se resuelve respetando el plazo de la cabecera Retry-After, y un límite de gasto de nivel, que no lleva esa cabecera y no se resuelve esperando.
- Un error 529 en Claude Code señala una saturación de la capacidad de la API y no consume la cuota de uso de la sesión.
- Claude Code reintenta automáticamente los errores 429 y 529 de tipo tasa temporal, nunca los 429 relacionados con un límite de gasto de una pasarela.
- La Batch API procesa las solicitudes de forma asíncrona, a una tarifa reducida frente a la API estándar, para un uso que tolera un plazo de procesamiento en lugar de una respuesta inmediata.
Envía una llamada a la API con un nombre de modelo inválido inventado, por ejemplo claude-inexistente, lee el código de estado devuelto y el campo type del error en la respuesta JSON, luego confirma que se trata efectivamente de un problema de forma y no de un límite de tasa.
Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.
- Anthropic, documentación de la API, códigos de error y cabecera Retry-After consultée le 2026-09-02
- Claude Code, errores y reintentos automáticos consultée le 2026-09-02
- Anthropic, procesamiento por lotes, Batch API y su tarifa reducida consultée le 2026-09-02