Agente de linha de comando

Conecte o Codex a modelos de terceiros com Responses

O Codex atual só oferece suporte ao protocolo Responses. Configure o provedor e a chave, teste a rota da API e veja o que fazer quando o gateway só oferece Chat Completions.

Verificado em 2026-10-26Aplica-se a
Codex CLI 0.154.0

Resposta curta

O Codex atual aceita apenas "responses" em wire_api. "chat" foi removido e causa um erro de configuração ao iniciar. O KimiSeek oferece /v1/responses, permitindo a conexão direta com a configuração abaixo.

Tabela de decisão em 30 segundos

Capacidade do gatewayO que fazer
Oferece /v1/responsesUsar "responses"
Só oferece /v1/chat/completionsUsar um gateway compatível ou uma camada de conversão que exponha Responses
DesconhecidaTestar o caminho e inspecionar o corpo da resposta abaixo

Por que o Codex usa responses por padrão

O Codex envia solicitações a /responses e processa seus eventos de streaming e chamadas de ferramentas. Chat Completions usa estruturas diferentes; mudar wire_api não faz o Codex atual utilizá-lo. As capacidades também dependem do modelo e da implementação do gateway. Uma resposta válida não comprova o funcionamento de todas as ferramentas.

Pré-requisitos

  • Node.js 20 ou superior
  • Codex CLI: npm install -g @openai/codex
  • Uma API key do KimiSeek (começa com ks-), criada no painel

Step 1 · Escreva o arquivo de configuração

Edite ~/.codex/config.toml (crie se ainda não existir):

TOML · ~/.codex/config.toml
model = "deepseek-v4-pro-0813"
model_provider = "kimiseek"

[model_providers.kimiseek]
name = "KimiSeek"
base_url = "https://api.kimiseek.app/v1"
env_key = "KIMISEEK_API_KEY"
wire_api = "responses"

Três pontos que costumam derrubar:

  1. base_url precisa incluir /v1. O Codex acrescenta /responses direto no base_url. Sem o /v1, a requisição vai para https://api.kimiseek.app/responses e volta 404.
  2. env_key é um nome de variável, não a key em si. Aqui você escreve KIMISEEK_API_KEY; o valor real fica no ambiente.
  3. model precisa ser um id que existe de verdade no catálogo. Um typo devolve model not found, e um id descontinuado também.

Step 2 · Defina a variável de ambiente e inicie

Shell
export KIMISEEK_API_KEY="ks-your-key"

codex

Para trocar de modelo temporariamente, edite model em config.toml ou passe codex --model <id>.

Step 3 · Confirme que a key funciona

Shell
curl https://api.kimiseek.app/v1/models \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}"

Se vier uma lista de modelos, tanto a key quanto a rede estão ok. A utilidade deste passo é separar falha de autenticação de falha de protocolo — sem isso, um 404 te deixa adivinhando qual dos dois foi.

Step 4 · Sondando responses em 30 segundos

Shell · OpenAI Responses
curl https://api.kimiseek.app/v1/responses \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro-0813",
    "input": "Explain what a base URL is in one sentence.",
    "max_output_tokens": 256,
    "stream": false
  }'
  • HTTP 200 com um array JSON output → a rota Responses funciona; teste depois uma tarefa e chamadas de ferramentas.
  • HTTP 404 → confira /v1 em base_url e se o corpo informa uma rota ausente ou um modelo não encontrado. O status sozinho não basta.
  • HTTP 401 → volte ao Step 3 e verifique as credenciais.

Se o gateway só oferece Chat Completions

Mantenha wire_api = "responses". Escolha um gateway com /v1/responses ou adicione uma camada de conversão compatível. Não mude para o valor removido "chat".

Erros comuns

ErroCausaCorreção
unexpected status 401 Unauthorized: Missing bearerA variável apontada por env_key não está definida ou está com o nome erradoConfirme que KIMISEEK_API_KEY está visível no shell atual
unexpected status 404 Not FoundFalta /v1 no base_url, ou o gateway não tem /v1/responsesAdicionar /v1 e ler o corpo do erro; sem Responses, usar um gateway ou camada de conversão compatível
stream disconnected before completionO stream foi cortado: proxy local, gateway corporativo ou timeoutVerifique as configurações de proxy HTTP e repita em outra rede
model not foundId de modelo errado, ou um id descontinuadoUse o id completo do catálogo, por exemplo deepseek-v4-pro-0813

Mais erros de camada de protocolo estão na referência de erros.

Custo

O uso do Codex é pesado em entrada: cada turno reenvia o context window. O DeepSeek V4 Pro é cobrado em CNY por milhão de tokens, em duas faixas:

FaixaEntradaEntrada em cacheSaída
Off-peak¥4.5¥0.45¥13.5
Peak¥9¥0.9¥27

Peak custa exatamente o dobro. Agrupar refatorações grandes no horário off-peak corta a conta pela metade. Os números atualizados de cada modelo vêm da página de preços, que lê o catálogo de modelos direto.

Versões e verificação

Configuração verificada com Codex CLI 0.154.0 em 2026-10-26. Consulte a referência oficial de configuração para os protocolos aceitos.

Perguntas frequentes

Com um gateway assim, ainda preciso de um bridge tipo Codex-Bridge?

Não. Um bridge existe para traduzir requisições Responses em Chat Completions localmente, para gateways que só falam chat completions. O KimiSeek implementa /v1/responses por conta própria, então um bridge só adiciona um salto e mais um lugar para dar errado.

Por que o base_url precisa incluir /v1?

O Codex concatena: base_url + "/responses". Se você escrever https://api.kimiseek.app, a requisição vai para https://api.kimiseek.app/responses, que é uma página web, não uma API.

O Codex atual ainda aceita wire_api = "chat"?

Não. As versões atuais rejeitam esse valor ao iniciar. Use responses; um upstream que só oferece Chat Completions exige um gateway compatível ou uma camada de conversão.

Uma única key serve para Claude Code e Codex ao mesmo tempo?

Sim. As keys são por conta; os clientes apenas chamam a mesma key por rotas de protocolo diferentes. Veja o guia do Claude Code.