Para erros HTTP em geral e exceções do SDK, consulte o guia de códigos de erro.
Como investigar um erro
Em caso de erro de requisição, verifique a resposta HTTP. Para falhas durante um turno ou na preparação do ambiente, verifique os eventos e o estado salvo.
| Falha | Onde verificar |
|---|---|
| Requisição à API | Consulte o código de status HTTP e o objeto error da resposta. |
| Turno | Ao receber agent.session.turn.failed, recupere o turno e verifique status e error. |
| Sessão | Ao receber agent.session.failed, recupere a sessão e verifique status e error. |
| Ambiente | Consulte environment.error no evento agent.session.environment.failed. Veja como resolver problemas do sandbox. |
Para erros estruturados, use error.code na lógica do aplicativo e error.message para explicar a falha.
Em erros de validação da requisição, error.param pode indicar qual campo corrigir.
O código de tratamento de erros deve funcionar mesmo quando o código de erro for desconhecido ou param estiver ausente.
Na API beta (OpenAI-Beta: agents=v1), o campo error da sessão contém uma mensagem de texto ou null. Consulte o evento SSE error correspondente para obter o código da falha da sessão.
Erros de requisição à API
Esses erros se referem à requisição enviada à API de Agentes. São distintos dos erros de turno, que a API retorna após o início do trabalho.
| Código | Descrição |
|---|---|
400: invalid_request_error |
Causa: Um valor de entrada ou de configuração é inválido ou grande demais. Solução: Corrija o campo indicado por error.param ou error.message. Veja como corrigir entradas inválidas. |
400: invalid_beta |
Causa: O cabeçalho OpenAI-Beta contém um valor inválido. Solução: Confira o cabeçalho exigido pela versão da API que você usa. |
400: agent_not_persisted |
Causa: O agent_id informado pertence a um agente que só existe naquela sessão. Solução: Crie um agente salvo e use o ID dele. |
400: invalid_otlp_endpoint, invalid_otlp_header |
Causa: O endpoint ou os cabeçalhos de rastreamento são inválidos. Solução: Corrija a configuração de rastreamento. |
401: unauthorized; 403: forbidden |
Causa: A autenticação falhou ou quem fez a requisição não tem acesso. Solução: Consulte as orientações sobre autenticação e permissões. |
404: not_found_error, model_not_found |
Causa: O recurso ou modelo não está disponível para essa requisição. Solução: Confira o ID, o modelo e o projeto. Verifique também se o recurso foi excluído. |
409: conflict_error |
Causa: A operação é incompatível com o estado atual do recurso. Solução: Leia a mensagem e recupere o estado atual antes de tentar novamente. |
409: executor_version_incompatible |
Causa: A versão do executor não é compatível. Solução: Atualize o executor e tente novamente. |
424: mcp_server_startup_failed |
Causa: Um servidor MCP não conseguiu iniciar. Solução: Confira a configuração e as credenciais do servidor. Veja como resolver problemas de conexão. |
429: files_api_rate_limit_exceeded |
Causa: As requisições que acessam arquivos excederam o limite da API de Arquivos para seu usuário. Solução: Reduza o número de requisições simultâneas e siga as orientações sobre limites de taxa da API de Arquivos. |
500: internal_error |
Causa: Ocorreu um erro inesperado no serviço. Solução: Verifique o trabalho salvo antes de tentar novamente. Consulte as orientações sobre erros de servidor. |
503: service_unavailable_error, server_is_overloaded |
Causa: O serviço ou uma de suas dependências está temporariamente indisponível ou sob sobrecarga. Solução: Siga as orientações sobre o erro 503 e verifique o trabalho salvo antes de tentar novamente. |
Limites de taxa da API de Arquivos
Requisições para criar sessões ou anexar arquivos podem retornar HTTP 429 com files_api_rate_limit_exceeded. A API de Agentes usa a API de Arquivos para verificar os arquivos. Essas verificações consomem a cota do usuário autenticado na API de Arquivos. Cada arquivo anexado pode exigir uma verificação separada.
{
"error": {
"type": "rate_limit_error",
"code": "files_api_rate_limit_exceeded",
"message": "The Files API rate limit for your user has been exceeded. Reduce the rate of requests that access files, then try again.",
"param": null
}
}Reduza o número de requisições simultâneas que acessam arquivos. Limite o número de tentativas e aumente exponencialmente o intervalo entre elas. Novas tentativas imediatas podem continuar esgotando a cota.
Essa resposta HTTP indica que a operação falhou. O caso é diferente de uma sessão ou de um turno que falha de forma assíncrona após uma resposta de criação bem-sucedida. Para identificar essa condição, verifique error.code em vez de comparar o texto da mensagem.
Erros de turno
Um turno que falhou tem status: "failed" e um objeto error com os campos code e message. Por exemplo, se o modelo estiver sobrecarregado, o erro poderá ser:
{
"code": "server_overloaded",
"message": "The model is temporarily overloaded. Please retry your request after a brief delay."
}Os códigos de erro de turno não têm um status HTTP próprio. Por exemplo, em caso de sobrecarga, um turno que falhou usa server_overloaded, enquanto uma resposta HTTP pode usar server_is_overloaded.
| Código | Descrição |
|---|---|
invalid_request |
Causa: A entrada ou a configuração é inválida. Solução: Corrija a entrada indicada na mensagem antes de tentar novamente. |
context_length_exceeded |
Causa: A entrada excede a janela de contexto do modelo. Solução: Reduza a entrada. Se a conversa estiver longa demais, inicie uma nova sessão com um resumo mais curto. |
session_budget_exceeded |
Causa: A sessão esgotou seu orçamento de uso. Solução: Inicie uma nova sessão para continuar. |
credit_balance_exhausted |
Causa: A organização esgotou os créditos da API. Solução: Consulte as orientações sobre o saldo de créditos. |
project_spend_limit_exceeded |
Causa: O projeto atingiu o limite de gastos imposto a ele. Solução: Consulte as orientações sobre o limite de gastos do projeto. |
organization_spend_limit_exceeded |
Causa: A organização atingiu o limite de gastos imposto a ela. Solução: Consulte as orientações sobre o limite de gastos da organização. |
organization_usage_limit_exceeded |
Causa: A organização atingiu o limite de uso definido pela OpenAI. Solução: Consulte as orientações sobre o limite de uso da organização. |
usage_limit_exceeded |
Causa: Um limite de cobrança ou de uso foi atingido, sem um código de erro mais específico. Solução: Siga as orientações sobre erros de cobrança. |
rate_limit_exceeded |
Causa: As requisições excederam um limite de taxa aplicável. Solução: Siga as etapas para tentar novamente. |
server_overloaded |
Causa: O serviço do modelo está temporariamente sobrecarregado. Solução: Aguarde um pouco antes de retomar o trabalho pendente. Se a sobrecarga persistir, altere o modelo para os próximos turnos. |
flex_unavailable |
Causa: O processamento Flex está temporariamente indisponível. Solução: Tente novamente mais tarde ou altere o nível de serviço da sessão para usar o processamento padrão ( default) nos próximos turnos. |
connection_failed, request_timeout, server_error, internal_error |
Causa: Uma falha de conexão, o esgotamento do tempo de espera ou uma falha do serviço impediu a conclusão do turno. Solução: Verifique o trabalho salvo e tente novamente, limitando o número de tentativas. |
authentication_error |
Causa: O acesso ao modelo falhou devido às credenciais ou permissões. Solução: Consulte as orientações sobre autenticação e permissões. |
resource_not_found |
Causa: O modelo ou recurso solicitado está indisponível. Solução: Verifique o modelo e a configuração da sessão antes de tentar novamente. |
sandbox_error |
Causa: O ambiente não conseguiu concluir uma operação. Solução: Examine o erro do ambiente e corrija o problema de configuração ou conectividade. |
executor_version_incompatible |
Causa: O executor não consegue executar este turno. Solução: Atualize o executor e tente novamente na mesma sessão, caso ela não tenha falhado. |
active_turn_not_steerable |
Causa: O turno ativo não aceita mais entradas. Solução: Aguarde o término do turno antes de enviar outra mensagem. |
cyber_policy, misalignment_policy_violation |
Causa: Os sistemas de segurança bloquearam a requisição. Solução: Verifique se a requisição atende aos requisitos de segurança aplicáveis antes de enviar a entrada revisada. |
Erros de sessão e de ambiente
Uma falha no turno nem sempre indica que a sessão falhou. Recupere a sessão para verificar se é possível continuar nela. Se o valor de status for requires_action, execute as ações necessárias.
Se a sessão tiver falhado, corrija a causa e crie uma nova sessão com as entradas de que ainda precisa.
| Código | Descrição |
|---|---|
environment_connection_failed, environment_connection_timeout |
Causa: O sandbox não conseguiu se conectar ou demorou demais para estabelecer a conexão. Solução: Verifique a inicialização do executor e o acesso à rede. Em ambientes com hospedagem própria, confira a configuração da conexão. |
sandbox_error |
Causa: Houve uma falha na preparação ou na execução do sandbox. Solução: Examine os comandos de preparação, os pacotes, os arquivos de entrada e o erro do ambiente. |
executor_version_incompatible |
Causa: A versão do executor da sessão não é compatível. Solução: Atualize o executor antes de criar uma nova sessão. |
idle_timeout |
Causa: O ambiente hospedado expirou por inatividade. Solução: Crie uma nova sessão e forneça as entradas novamente. |
internal_error |
Causa: Uma falha interna impediu que a sessão ou o ambiente ficasse pronto para uso. Solução: Aguarde um pouco e repita a preparação. Se a falha persistir, entre em contato com o suporte. |
Recuperação
Como tentar novamente após falhas temporárias
Use este procedimento quando um limite de taxa for excedido, houver sobrecarga, o tempo de espera se esgotar ou o serviço falhar temporariamente. Em caso de problemas com a entrada, as credenciais ou os limites de cobrança, corrija a causa antes de tentar novamente.
- Verifique o resultado. Se uma sessão tiver sido criada, recupere a sessão, o turno e os itens salvos. Se o turno ainda estiver ativo, continue acompanhando a execução. Se já tiver sido concluído, use o resultado.
- Verifique as ações concluídas. Um turno que falhou pode já ter alterado arquivos ou chamado ferramentas externas. Confirme os efeitos dessas ações antes de pedir ao agente que repita o trabalho.
- Aguarde e limite o número de tentativas. Siga as orientações para novas tentativas. Respeite o intervalo indicado por
Retry-Afternas respostas HTTP e defina um número máximo de tentativas ou um prazo. - Repita a requisição ou inicie um novo turno. Em caso de erro HTTP, verifique o resultado da operação original antes de repeti-la. Se o turno tiver falhado, aguarde até que a sessão esteja no estado
idlee envie outra mensagem pedindo ao agente que retome apenas o trabalho pendente. Isso inicia um novo turno na conversa existente.
Examine os resultados das ferramentas mesmo quando o turno for concluído. Interrompa as tentativas automáticas se o erro mudar ou se o número de tentativas atingir o limite.
Como corrigir entradas inválidas
Antes de reenviar a requisição, corrija o campo indicado por error.param ou error.message.
Em caso de erros de tamanho, reduza o tamanho da entrada e do schema de saída ou do resultado da ferramenta antes de tentar novamente. Se a configuração do agente for grande demais, crie uma nova sessão com instruções e definições de ferramentas mais curtas.
Para consultar os requisitos de upload e ver exemplos, veja como resolver erros de upload. Se a mensagem indicar um problema com uma imagem, verifique os dados ou a URL da imagem.
Fluxos desconectados
Um evento error ou a desconexão do fluxo não confirma o estado final do turno.
Siga as etapas para recuperar um fluxo desconectado e restabelecer a conexão. Verifique o trabalho salvo antes de reenviar a entrada.
Se a sessão recuperada tiver status: "failed" ou se você receber agent.session.failed, interrompa as tentativas de reconexão e siga as orientações para recuperar a sessão.
Em caso de erros persistentes, inclua os IDs da requisição, da sessão e do turno ao entrar em contato com o suporte.