Ir al contenido

Errores y reintentos

Los errores se devuelven como JSON con un código error estable y legible por máquina, junto con el estado HTTP correspondiente.

{
"error": "rate_limited",
"message": "Too many requests.",
"retry_after_ms": 850
}
HTTPerror¿Reintentar?Notas
400invalid_requestNoUn parámetro falló la validación — corrige la petición.
401missing_api_key / unknown_api_keyNoConsulta Autenticación.
403inactive_api_key / account_blockedNoClave deshabilitada o cuenta suspendida.
402insufficient_creditsNoRecarga. El cuerpo incluye required y balance.
429rate_limitedSí, tras retry_after_msSuperaste tu límite por minuto.
409request_in_progressSíUna petición idempotente idéntica sigue en ejecución.
422(conflicto de idempotencia)NoSe reutilizó una Idempotency-Key con un cuerpo diferente.
503service_temporarily_unavailable / too_many_concurrent_requestsSí, con backoffLímite de capacidad transitorio.
504result_timeoutSíLa obtención upstream superó deadline_ms.
  • Reintenta 429 / 503 / 504 / 409 con backoff exponencial. Cuando retry_after_ms está presente, espera al menos ese tiempo antes de reintentar.
  • Nunca reintentes 400 / 401 / 402 / 403 — la petición no tendrá éxito hasta que la cambies.
  • Los SDKs oficiales ya reintentan los errores transitorios por ti (2 reintentos por defecto) y exponen una bandera retryable en el error.