Claude Code "Request timed out": API_TIMEOUT_MS e correções no proxy
Wokey Team · 2026-09-24
Resposta curta: Request timed out significa que o Claude Code não recebeu resposta da API antes do prazo, que por padrão é de 10 minutos (API_TIMEOUT_MS=600000). Atrás de um gateway, a causa mais comum não é um modelo lento. Com mais frequência, algo no meio do caminho segura a resposta em streaming, ou corta conexões que ficam em silêncio por tempo demais. Pode ser um proxy local, uma rede corporativa ou o próprio gateway. Primeiro confira com curl se o stream chega aos poucos, e só então decida se vale aumentar o timeout.
Qual você está vendo
| Mensagem | Significado |
|---|---|
Waiting for API response · will retry in … · check your network abaixo do indicador de carregamento |
Sem dados por 20 segundos. O Claude Code ainda está esperando; isso ainda não é um erro |
Retrying in Ns · attempt x/y |
As novas tentativas automáticas estão em andamento, até 10 por padrão |
Request timed out |
Nenhuma resposta dentro de API_TIMEOUT_MS |
API Error: No response from API (waited …, then … on the retry) |
Duas tentativas passaram sem o primeiro byte de uma resposta |
| HTTP 504 com corpo JSON da Wokey | A Wokey estourou o tempo esperando o upstream |
| HTTP 408 | O corpo da requisição foi enviado devagar demais, então o gateway parou de esperar |
As quatro primeiras vêm do próprio Claude Code; as duas últimas vêm do servidor.
Os erros de timeout da Wokey
Todos os erros de timeout da Wokey são 504 no formato de erro padrão. O code diz onde a requisição travou:
code |
Significado |
|---|---|
upstream_gateway_timeout |
O gateway do próprio upstream estourou o tempo antes de produzir qualquer saída |
official_exit_first_byte_timeout |
O upstream nunca começou a responder, incluindo o tempo gasto tentando de novo por outras rotas |
provider_timeout |
A conexão com o upstream caiu ou estourou o tempo sem resultado |
Por exemplo:
{"error":{"code":"upstream_gateway_timeout","message":"Upstream gateway timed out before producing a response.","type":"invalid_request_error"}}
Se o timeout acontecer depois que a resposta já começou o streaming, ele chega como um evento error dentro do stream em vez de um HTTP 504.
Quando não há saída por muito tempo, por exemplo enquanto o modelo pensa longamente, a Wokey escreve periodicamente um comentário SSE no stream para manter a conexão viva:
: wokey-transport-keepalive-v1
Os clientes ignoram linhas de comentário. Se você vir uma ao testar com curl, a conexão está viva e o modelo ainda está trabalhando.
Passos para resolver
1. Confira com curl se o stream chega aos poucos.
curl -N https://api.wokey.ai/v1/messages \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":300,"stream":true,"messages":[{"role":"user","content":"Count from 1 to 60"}]}'
-N desativa o buffer do próprio curl.
- As linhas
event:edata:vão rolando conforme chegam: o caminho inteiro está ok. - Tudo aparece de uma vez depois de uma longa espera: algo no meio está fazendo buffer da resposta, e o Claude Code tende a dar timeout nesse caminho.
2. Confira seu proxy local. O Claude Code respeita HTTPS_PROXY e as configurações de proxy do sistema. Modo TUN, proxies baseados em regras e gateways corporativos podem fazer buffer de respostas em streaming ou cortar conexões ociosas. Se sua rede alcança api.wokey.ai diretamente, exclua esse domínio do proxy e tente de novo. Se você precisa usar um proxy, compare com outro nó.
3. Aumente o timeout. Quando o caminho estiver verificado e as requisições forem de fato longas, aumente o limite no bloco env de ~/.claude/settings.json:
{
"env": {
"API_TIMEOUT_MS": "1200000"
}
}
API_TIMEOUT_MSé o timeout por requisição, em milissegundos. O padrão é 600000 (10 minutos).- Se um proxy na sua rede segura as respostas até que terminem, a mensagem de erro do Claude Code sugere aumentar também
CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS. - A detecção de um stream que trava no meio é controlada por
CLAUDE_STREAM_IDLE_TIMEOUT_MS. Valores abaixo de 5 minutos são elevados para 5 minutos, e o máximo é 30 minutos.
4. Reduza o contexto. Um contexto maior é enviado mais devagar e atrasa o primeiro token. Rode /compact para condensar a sessão, ou comece uma nova.
5. Se você receber um 408. Um 408 significa que o corpo da requisição parou de chegar durante o envio e o gateway desistiu de esperar. Ele aparece quase só com contextos muito grandes em redes instáveis. Uma nova tentativa simples costuma funcionar. Se continuar acontecendo, confira seu proxy como no passo 2 e depois reduza a requisição com /compact.
Timeouts no Codex
O timeout de inatividade do stream do Codex é de 300000 ms (5 minutos) por padrão. Quando ele dispara, você vê idle timeout waiting for SSE ou stream disconnected before completion, e as novas tentativas automáticas mostram Reconnecting... n/max. Essas configurações ficam na tabela do provedor:
[model_providers.wokey]
name = "Wokey"
base_url = "https://api.wokey.ai"
env_key = "WOKEY_API_KEY"
wire_api = "responses"
stream_idle_timeout_ms = 600000
stream_max_retries = 10
stream_max_retries tem padrão 5 e request_max_retries, 4; os dois têm máximo de 100. Para a configuração completa, veja o guia do config.toml do Codex.
Perguntas frequentes
Qual é o timeout padrão do Claude Code?
Dez minutos por requisição, definido por API_TIMEOUT_MS (padrão 600000). Aumente no bloco env de ~/.claude/settings.json, por exemplo "API_TIMEOUT_MS": "1200000".
Como saber se o problema é a rede ou o modelo?
Envie uma requisição "stream":true com curl -N. Se as linhas data: chegarem uma a uma, o caminho está ok. Se tudo aparecer de uma vez depois de uma longa espera, algo no meio está fazendo buffer da resposta, e esse caminho tende a dar timeout.
O que significa um 504 da Wokey?
Todos os timeouts da Wokey são 504, e code diz onde travou: upstream_gateway_timeout significa que o gateway do upstream estourou o tempo, official_exit_first_byte_timeout significa que o upstream nunca começou a responder, e provider_timeout significa que a conexão com o upstream caiu ou estourou o tempo.
O que é wokey-transport-keepalive-v1 no stream?
É um comentário SSE que a Wokey escreve quando passa um tempo sem saída, para impedir que intermediários cortem a conexão. Os clientes o ignoram; vê-lo significa que a conexão está viva e o modelo ainda está trabalhando.
Como mudar os timeouts no Codex?
Defina stream_idle_timeout_ms (padrão 300000) e stream_max_retries (padrão 5) na tabela do provedor do config.toml.