Skip to content

404/Rota Incompatível: Base URL, Prefixo /v1 e Clientes com Caminho Sobreposto

O que você poderá fazer após completar

  • Ao ver 404, primeiro julgar se é "problema de conexão de Base URL" ou "autenticação/serviço não iniciado"
  • Selecionar Base URL correto por tipo de cliente (precisa ou não de /v1)
  • Identificar duas categorias de armadilhas de alta frequência: duplicação de prefixo (/v1/v1/...) e caminho sobreposto (/v1/chat/completions/responses)

Seu dilema atual

Ao integrar cliente externo, encontra erro 404 Not Found, investigando muito tempo descobre que é problema de configuração de Base URL:

  • Kilo Code falha ao chamar, log mostra /v1/chat/completions/responses não encontrado
  • Claude Code consegue conectar, mas sempre avisa rota incompatível
  • Python OpenAI SDK reporta 404, mas serviço já iniciado

A raiz destes problemas não é cota de conta ou autenticação, mas cliente "colocou seu próprio caminho" no seu Base URL escrito, então rota ficou torta.

Quando usar esta técnica

  • Você confirmou que proxy reverso iniciou, mas qualquer chamada de interface retorna 404
  • Você escreveu Base URL em forma com caminho (ex: /v1/...), mas não sabe se cliente vai concatenar novamente
  • Cliente que você usa "tem seu próprio conjunto de lógica de concatenação de caminho", rota de solicitação resultante não parece OpenAI/Anthropic/Gemini padrão

🎒 Preparação antes de começar

Primeiro elimine "serviço não iniciado/autenticação falhou", caso contrário você vai se afastar cada vez mais na direção errada.

Passo 1: Confirme proxy reverso rodando

bash
curl -i http://127.0.0.1:8045/healthz
powershell
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8045/healthz | Select-Object -ExpandProperty Content

Você deve ver: HTTP 200, retorna JSON (pelo menos contendo {"status":"ok"}).

Passo 2: Confirme que você encontra 404 (não 401)

Se você em modo auth_mode=strict/all_except_health/auto(allow_lan_access=true) sem trazer key, você mais provavelmente encontrará 401. Primeiro dê uma olhada em código de estado, se necessário primeiro complete Solução de Falha de Autenticação 401.

O que é Base URL?

Base URL é "endereço raiz" quando cliente envia solicitação. Cliente geralmente concatenará seu caminho API depois de Base URL e depois solicitará, então Base URL precisa ou não de /v1, depende de que caminho cliente vai adicionar. Você só precisa alinhar "caminho final" que cliente concatenar para as rotas do Antigravity Tools, não ficará mais travado por 404.

Ideia principal

As rotas de proxy reverso do Antigravity Tools são "caminho completo codificado" (veja src-tauri/src/proxy/server.rs), entradas comuns são:

ProtocoloRotaFinalidade
OpenAI/v1/modelsListar modelos
OpenAI/v1/chat/completionsChat completions
OpenAI/v1/responsesCompatibilidade Codex CLI
Anthropic/v1/messagesAPI de mensagens Claude
Gemini/v1beta/modelsListar modelos
Gemini/v1beta/models/:modelGerar conteúdo
Verificação de saúde/healthzEndpoint de verificação

O que você precisa fazer: fazer "caminho final" que cliente concatenar, cair exatamente nestas rotas.


Siga-me

Passo 1: Com curl primeiro acerte "caminho correto"

Por que Primeiro confirme "protocolo que você quer andar" na local realmente tem rota correspondente, evitando tratar 404 como "problema de modelo/conta".

bash
# Protocolo OpenAI: listar modelos
curl -i http://127.0.0.1:8045/v1/models

# Protocolo Anthropic: interface de mensagens (aqui só olha 404/401, não exige necessariamente sucesso)
curl -i http://127.0.0.1:8045/v1/messages

# Protocolo Gemini: listar modelos
curl -i http://127.0.0.1:8045/v1beta/models
powershell
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8045/v1/models | Select-Object -ExpandProperty StatusCode
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8045/v1/messages | Select-Object -ExpandProperty StatusCode
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8045/v1beta/models | Select-Object -ExpandProperty StatusCode

Você deve ver: Estes caminhos pelo menos não devem ser 404. Se aparecer 401, primeiro configure key conforme Solução de Falha de Autenticação 401.

Passo 2: Escolha Base URL por "cliente vai ou não concatenar /v1"

Por que A armadilha de Base URL, essencialmente é "caminho que você escreveu" e "caminho que cliente adiciona" ficaram juntos.

Coisa que você está usandoEscrita recomendada de Base URLRota que você está alinhando
OpenAI SDK (Python/Node, etc)http://127.0.0.1:8045/v1/v1/chat/completions, /v1/models
Claude Code CLI (Anthropic)http://127.0.0.1:8045/v1/messages
Gemini SDK / Cliente estilo Geminihttp://127.0.0.1:8045/v1beta/models/*

Dica

OpenAI SDK geralmente exige que você coloque /v1 no Base URL; Anthropic/Gemini mais comum é só escrever até host:port.

Passo 3: Lide com cliente "caminho sobreposto" como Kilo Code

Por que Antigravity Tools não tem rota /v1/chat/completions/responses. Se cliente concatenar este caminho, com certeza será 404.

Conforme recomendação README:

  1. Seleção de protocolo: priorize usar Protocolo Gemini
  2. Base URL: preencha http://127.0.0.1:8045

Você deve ver: Solicitação vai por conjunto de rotas /v1beta/models/..., não mais aparece /v1/chat/completions/responses.

Passo 4: Não escreva Base URL até "caminho de recurso específico"

Por que Muitos SDKs concatenarão seu próprio caminho de recurso depois de Base URL. Se você escreveu Base URL muito fundo, finalmente vai se tornar "caminho em duas camadas".

✅ Recomendado (OpenAI SDK):

text
http://127.0.0.1:8045/v1

❌ Erros comuns:

text
http://127.0.0.1:8045
http://127.0.0.1:8045/v1/chat/completions

Você deve ver: Após corrigir Base URL mais raso, caminho de solicitação volta para /v1/... ou /v1beta/..., 404 desaparece.


Ponto de verificação ✅

Você pode usar esta tabela para verificar rapidamente se seu "caminho de solicitação final" pode atingir rotas do Antigravity Tools:

Caminho que você vê nos logsConclusão
Começando com /v1/ (ex: /v1/models, /v1/chat/completions)Rotas compatíveis OpenAI/Anthropic
Começando com /v1beta/ (ex: /v1beta/models/...)Rotas geradoras Gemini
Aparecendo /v1/v1/Base URL trouxe /v1, cliente concatenou novamente
Aparecendo /v1/chat/completions/responsesCliente com caminho sobreposto, tabela de rota atual não suporta

Aviso sobre armadilhas

Armadilha 1: Duplicar prefixo /v1

Fenômeno de erro: Caminho se torna /v1/v1/chat/completions

Causa: Base URL já tem /v1, cliente concatenou novamente.

Solução: Mude Base URL para "só até /v1", não continue escrevendo caminho de recurso específico.

Armadilha 2: Cliente com caminho sobreposto

Fenômeno de erro: Caminho se torna /v1/chat/completions/responses

Causa: Cliente adicionou caminho de negócio adicional em cima de caminho de protocolo OpenAI.

Solução: Priorize mudar para outro modo de protocolo desse cliente (ex: Kilo Code usar Gemini).

Armadilha 3: Porta escrita errada

Fenômeno de erro: Connection refused ou timeout

Solução: Na página "API Reverso" do Antigravity Tools confirme porta de escuta atual (padrão 8045), porta do Base URL deve ser igual.


Resumo da lição

FenômenoCausa mais comumComo você deve corrigir
Sempre 404Conexão de Base URL erradaPrimeiro verifique com curl /v1/models//v1beta/models não é 404
/v1/v1/.../v1 duplicadoBase URL do OpenAI SDK mantenha até terminar em /v1
/v1/chat/completions/responsesCliente com caminho sobrepostoMude para protocolo Gemini ou faça reescrita de caminho (não recomendado para iniciante)

Próximo aviso de lição

Na próxima lição aprendemos Interrupção de Fluxo e Problema de 0 Token

Você aprenderá:

  • Por que resposta de fluxo inesperadamente interrompe
  • Método de solução de erro de 0 Token
  • Mecanismo de garantia automática do Antigravity

Apêndice: Referência de código-fonte

Clique para expandir localização do código-fonte

Atualizado em: 2026-01-23

FuncionalidadeCaminho do arquivoLinha
Definição de rota de proxy reverso (tabela completa de rotas)src-tauri/src/proxy/server.rs120-193
AxumServer::start() (entrada de construção de rota)src-tauri/src/proxy/server.rs79-216
health_check_handler()src-tauri/src/proxy/server.rs266-272
README: recomendação de Base URL do Claude CodeREADME.md197-204
README: explicação de caminho sobreposto do Kilo Code e protocolo recomendadoREADME.md206-211
README: exemplo de base_url do Python OpenAI SDKREADME.md213-227

Funções principais:

  • AxumServer::start(): inicia servidor de proxy reverso Axum e registra todas as rotas externas
  • health_check_handler(): processador de verificação de saúde (GET /healthz)