Skip to main content
Use esta página para entender o que um erro da Phaseo significa e o que fazer em seguida. Toda resposta de erro segue o mesmo formato JSON, para que seu aplicativo trate falhas de maneira consistente entre modelos e provedores.

Exemplo de resposta de erro

Campos que você sempre receberá

  • generation_id: ID estável da solicitação que você pode compartilhar com o suporte.
  • status_code: corresponde ao código de status HTTP.
  • error: código de erro legível por máquina, como validation_error.
  • error_type: classe geral, normalmente user ou system.
  • error_origin: indica se o problema foi causado principalmente pelo solicitante, pela Phaseo ou por um provedor upstream.
  • description: explicação simples do que aconteceu.
  • details (opcional): detalhes estruturados de validação quando o erro está na validação da solicitação.

Outros campos que podem aparecer

Alguns erros trazem mais detalhes para ajudar a corrigir o problema rapidamente:
  • reason: motivo mais específico, como all_candidates_failed ou pricing_not_configured.
  • provider_candidate_diagnostics e provider_enablement: explicam por que um modelo não pôde ser usado com o endpoint solicitado.
  • routing_diagnostics: detalhes adicionais sobre como o roteamento ou as verificações de disponibilidade restringiram as opções.
  • provider_failure_diagnostics: dicas sobre credenciais ausentes, falta de acesso, restrições regionais, limites de taxa e falhas semelhantes do provedor.
  • upstream_error e failure_sample: resumo aproximado da primeira falha do provedor, se a solicitação chegou até ele.
  • failed_providers, failed_statuses e attempt_count: contexto adicional de novas tentativas e failover.

Interprete as classes de status

Códigos de erro comuns

Quando um provedor falha

Se a Phaseo chegou a um provedor, mas a solicitação ainda falhou, você poderá ver:
  • provider_failure_diagnostics.category
  • provider_failure_diagnostics.hint
  • provider_failure_diagnostics.provider
As categorias atuais incluem:
  • credentials_not_configured
  • credentials_invalid_or_forbidden
  • provider_access_missing
  • region_or_project_restriction
  • model_unavailable_for_endpoint
  • rate_limited
  • server_error
Esses campos ajudam a resolver o problema sem ativar o modo de depuração completo.

Quando um modelo ou endpoint não está disponível

Para respostas unsupported_model_or_endpoint, a Phaseo pode incluir:
  • provider_candidate_diagnostics
  • provider_enablement
  • missing_pricing_providers
  • routing_diagnostics
Essas informações ajudam a distinguir entre:
  • um modelo conhecido que ainda não está ativo
  • um modelo incompatível com o endpoint solicitado
  • dados de preço ausentes
  • restrições de rollout ou disponibilidade interna
Campos comuns:
  • provider_candidate_diagnostics.totalProviders: número de provedores conhecidos para o modelo antes do filtro por endpoint.
  • provider_candidate_diagnostics.supportsEndpointCount: número desses provedores compatíveis com o endpoint solicitado.
  • provider_candidate_diagnostics.candidateCount: número de provedores restantes após as verificações de adaptador.
  • provider_candidate_diagnostics.droppedUnsupportedEndpoint: provedores removidos por não oferecerem suporte ao endpoint.
  • provider_candidate_diagnostics.droppedMissingAdapter: pares provedor/endpoint removidos porque ainda não existe um adaptador do Gateway para esse endpoint.
  • provider_enablement.capability: recurso sob verificação, como video_generation.
  • provider_enablement.providersBefore / provider_enablement.providersAfter: provedores antes e depois dos filtros de capacidade ou habilitação.
  • provider_enablement.dropped[].reason: motivos legíveis por máquina, como pricing_missing.
  • routing_diagnostics.filterStages[].stage: etapa de roteamento, por exemplo filtro de capacidade, rollout ou estado de roteamento.
  • routing_diagnostics.filterStages[].beforeCount / routing_diagnostics.filterStages[].afterCount: quantidade de provedores antes e depois de cada etapa.
  • routing_diagnostics.filterStages[].droppedProviders[].reason: motivos legíveis por máquina, como restrições de rollout ou roteamento.

Exemplo

Modo de depuração opcional

A maioria dos esquemas de solicitação aceita um objeto debug para investigação controlada:
Campos disponíveis:
  • enabled
  • return_upstream_request
  • return_upstream_response
  • trace
  • trace_level (summary ou full)
Use o modo de depuração somente em desenvolvimento ou em ambientes rigorosamente controlados.

Estratégia de novas tentativas

  • Erros da série 400, exceto 429: corrija a requisição, as credenciais ou a política de acesso antes de tentar novamente.
  • 429: implemente espera exponencial e respeite o cabeçalho Retry-After.
  • Erros da série 500: use tentativas limitadas apenas quando for seguro repetir a operação. Um envio com resultado incerto pode já ter criado um trabalho ou gerado uma cobrança; consulte um trabalho aceito em vez de enviá-lo novamente.
Defina um limite de tentativas e um prazo total e adicione variação aleatória aos intervalos de espera. Consulte os limites de requisições para os cabeçalhos de resposta e o tratamento de novas tentativas.

Observações específicas sobre streaming

  • Se a solicitação falhar antes do início do streaming, você receberá um payload JSON de erro padrão.
  • Se falhar no meio do fluxo, considere o trecho parcial incompleto e ofereça a opção de tentar novamente.
  • Sempre registre generation_id e os metadados do endpoint/modelo.

Dicas para solucionar problemas

  • Consulte a página de status do Gateway para verificar incidentes em andamento.
  • Compare o payload da solicitação com a documentação do endpoint.
  • Informe generation_id ao entrar em contato com o suporte.

Recursos relacionados

Autenticação

Autentique-se com chaves de API Bearer.

Limites

Lide com limitações de taxa e novas tentativas definidas pelos provedores.

Streaming

Use SSE com segurança em fluxos de produção.
Última modificação em 2 de outubro de 2026