request_id es trazable de extremo a extremo. Si reportas un bug, inclúyelo — podemos buscar tu request en logs.
Catálogo de errores
| HTTP | code | Qué hacer |
|---|---|---|
400 | invalid_request_error | Revisa el body (Zod te dirá el campo exacto en message) |
401 | missing_api_key | Manda header Authorization: Bearer ghub_sk_... |
401 | invalid_api_key | Verifica que la key sea correcta y no esté revocada |
401 | key_revoked | Genera una nueva en /dashboard/keys |
402 | insufficient_balance | Recarga en /dashboard/billing/recharge |
404 | model_not_found | Llama GET /v1/models para ver el catálogo válido |
429 | rate_limit_exceeded | Reintenta con exponential backoff (próximo Sprint) |
500 | internal_error | Reintenta. Si persiste, abre ticket con request_id |
502 | provider_unavailable | El proveedor (Anthropic/OpenAI/etc) está caído o tu prompt no es aceptable. Reintenta o cambia modelo |
Errores específicos del proveedor
Si elcode es provider_unavailable, el message viene del proveedor original tal cual. Ejemplos comunes:
Retry recomendado
Streaming errors
Si pidesstream: true y algo falla después de que arranca el stream, recibes un mensaje SSE final con el shape de error:
error además de [DONE].