Skip to main content
Usa esta página para entender qué significa un error de Phaseo y qué hacer a continuación. Todas las respuestas de error usan el mismo formato JSON, para que tu aplicación pueda gestionar los fallos de manera coherente entre modelos y proveedores.

Ejemplo de respuesta de error

Campos que siempre recibirás

  • generation_id: ID de solicitud estable que puedes compartir con soporte.
  • status_code: coincide con el código de estado HTTP.
  • error: código de error legible por máquina, como validation_error.
  • error_type: categoría general, normalmente user o system.
  • error_origin: indica si el problema se debió principalmente al solicitante, a Phaseo o a un proveedor ascendente.
  • description: explicación en lenguaje claro de lo ocurrido.
  • details (opcional): detalles estructurados de validación cuando el error se debe a una solicitud no válida.

Otros campos que pueden aparecer

Algunos errores incluyen más detalles para ayudarte a corregir el problema más rápido:
  • reason: motivo más específico, como all_candidates_failed o pricing_not_configured.
  • provider_candidate_diagnostics y provider_enablement: explican por qué no se pudo usar un modelo con el endpoint solicitado.
  • routing_diagnostics: información adicional sobre cómo el enrutamiento o las comprobaciones de disponibilidad limitaron la solicitud.
  • provider_failure_diagnostics: sugerencias sobre credenciales ausentes, falta de acceso, restricciones regionales, límites de tasa y otros fallos del proveedor.
  • upstream_error y failure_sample: resumen aproximado del primer fallo del proveedor, si la solicitud llegó a un proveedor.
  • failed_providers, failed_statuses y attempt_count: contexto adicional sobre reintentos y conmutación por error.

Cómo interpretar las clases de estado

Códigos de error habituales

Cuando falla un proveedor

Si Phaseo llegó a un proveedor, pero la solicitud sigue fallando, es posible que veas:
  • provider_failure_diagnostics.category
  • provider_failure_diagnostics.hint
  • provider_failure_diagnostics.provider
Las categorías actuales incluyen:
  • credentials_not_configured
  • credentials_invalid_or_forbidden
  • provider_access_missing
  • region_or_project_restriction
  • model_unavailable_for_endpoint
  • rate_limited
  • server_error
Estos campos te ayudan a resolver el problema sin activar el modo de depuración completo.

Cuando un modelo o endpoint no está disponible

En respuestas unsupported_model_or_endpoint, Phaseo puede incluir:
  • provider_candidate_diagnostics
  • provider_enablement
  • missing_pricing_providers
  • routing_diagnostics
Esto ayuda a distinguir entre:
  • un modelo conocido que aún no está activo
  • un modelo que no es compatible con el endpoint solicitado
  • datos de precios ausentes
  • restricciones de despliegue o disponibilidad interna
Campos habituales:
  • provider_candidate_diagnostics.totalProviders: cantidad de proveedores conocidos para el modelo antes de filtrar por endpoint.
  • provider_candidate_diagnostics.supportsEndpointCount: cantidad de esos proveedores compatibles con el endpoint solicitado.
  • provider_candidate_diagnostics.candidateCount: cantidad de proveedores que quedaron después de las comprobaciones de adaptadores.
  • provider_candidate_diagnostics.droppedUnsupportedEndpoint: proveedores descartados porque no admiten el endpoint.
  • provider_candidate_diagnostics.droppedMissingAdapter: pares proveedor/endpoint descartados porque todavía no hay un adaptador de Gateway para ese endpoint.
  • provider_enablement.capability: control de capacidad que se aplica, como video_generation.
  • provider_enablement.providersBefore / provider_enablement.providersAfter: proveedores antes y después del filtrado por capacidad o habilitación.
  • provider_enablement.dropped[].reason: motivos legibles por máquina, como pricing_missing.
  • routing_diagnostics.filterStages[].stage: etapa de enrutamiento, por ejemplo, filtrado de capacidad, despliegue o estado de enrutamiento.
  • routing_diagnostics.filterStages[].beforeCount / routing_diagnostics.filterStages[].afterCount: número de proveedores antes y después de cada etapa.
  • routing_diagnostics.filterStages[].droppedProviders[].reason: motivos legibles por máquina, como restricciones de despliegue o enrutamiento.

Ejemplo

Modo de depuración opcional

La mayoría de los esquemas de solicitud admiten un objeto debug para investigar problemas de forma controlada:
Campos disponibles:
  • enabled
  • return_upstream_request
  • return_upstream_response
  • trace
  • trace_level (summary o full)
Usa el modo de depuración solo en desarrollo o en entornos estrictamente controlados.

Estrategia de reintentos

  • Errores de la serie 400 salvo 429: corrige la solicitud, las credenciales o la política de acceso antes de reintentar.
  • 429: usa espera progresiva exponencial y respeta el encabezado Retry-After.
  • Errores de la serie 500: usa reintentos limitados solo cuando sea seguro repetir la operación. Un envío con resultado incierto puede haber creado ya un trabajo o generado un cargo; recupera un trabajo aceptado en lugar de enviarlo de nuevo.
Establece un límite de intentos y un plazo total, y añade variación aleatoria a los tiempos de espera. Consulta los límites de solicitudes para las cabeceras de respuesta y la gestión de reintentos.

Notas específicas de streaming

  • Si la solicitud falla antes de empezar el streaming, recibirás una respuesta de error JSON estándar.
  • Si falla a mitad del flujo, trata el flujo parcial como incompleto y ofrece la opción de reintentar.
  • Registra siempre generation_id y los metadatos del endpoint y del modelo.

Consejos para resolver problemas

  • Consulta la página de estado de Gateway para ver incidentes en curso.
  • Compara el cuerpo de tu solicitud con la documentación del endpoint.
  • Comparte generation_id al contactar con soporte.

Recursos relacionados

Autenticación

Autentícate con claves de API Bearer.

Límites

Gestiona la limitación de tasa y los reintentos impuestos por proveedores.

Streaming

Usa SSE de forma segura en flujos de producción.
Última modificación el 2 de octubre de 2026