Uma chave de API do Codex é qualquer chave que o Codex CLI possa usar para cobrar por token em vez de um plano ChatGPT: uma chave de API da OpenAI obtida em platform.openai.com ou uma chave de provedor, como a sk-kn- da Kunavo, que o Codex lê da variável de ambiente indicada por env_key em um bloco model_providers. O provedor precisa disponibilizar a API Responses — esse é o único requisito abaixo.
Codex CLI é o agente de programação de terminal de código aberto da OpenAI, e pode ser executado com login no ChatGPT ou com uma chave de API. A opção com chave de API é a que vale a pena entender: ela cobra por token, sem taxa mensal, e é a única que permite apontar o CLI para outro provedor — ou para uma família de modelos completamente diferente. Este guia apresenta a configuração funcional, o único requisito que causa problemas na maioria dos gateways e quanto uma sessão realmente custa.
O único requisito importante
O Codex CLI é mais rigoroso com endpoints personalizados do que a maioria das ferramentas. Seu bloco model_providers tem uma chave wire_api e aceita exatamente um valor: responses. Isso significa que um provedor personalizado precisa disponibilizar a API Responses da OpenAI em POST /v1/responses — não o muito mais comum /v1/chat/completions. A maioria dos gateways compatíveis com a OpenAI oferece apenas este último, e é por isso que tantos deles não conseguem operar o Codex CLI, independentemente do base_url que você forneça.
A Kunavo disponibiliza ambas as superfícies, portanto a configuração abaixo funciona como está escrita.
A configuração
O Codex lê ~/.codex/config.toml. Duas chaves de nível superior selecionam o modelo e o provedor; o bloco do provedor descreve como acessá-lo:
# ~/.codex/config.toml
model = "gpt-5-6-sol"
model_provider = "kunavo"
[model_providers.kunavo]
name = "kunavo"
base_url = "https://api.kunavo.com/v1"
env_key = "KUNAVO_API_KEY"
wire_api = "responses"Observe o que não está nesse arquivo: a própria chave. env_key indica uma variável de ambiente, e o Codex lê a chave dali ao ser iniciado; assim, o arquivo de configuração permanece seguro para ser versionado ou compartilhado.
# Codex reads the key from the variable named by env_key.
export KUNAVO_API_KEY="sk-kn-..." # create at kunavo.com/app/keys
# Persist it (pick the file your shell actually loads):
echo 'export KUNAVO_API_KEY="sk-kn-..."' >> ~/.zshrc
codex "explain the structure of this repository"Crie a chave no painel depois de se cadastrar e adicionar US$ 10. Ela é exibida uma única vez, portanto armazene-a imediatamente. Se codex já estiver em execução em outro shell, reinicie-o — ele lê a variável ao ser iniciado, não a cada solicitação.
Verifique antes de depurar
Se algo estiver errado, descubra se o problema está na chave, no endpoint ou no CLI. Uma solicitação resolve a questão:
# Confirm the key and the endpoint before blaming Codex.
curl https://api.kunavo.com/v1/responses \
-H "Authorization: Bearer $KUNAVO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-6-sol",
"input": "Say OK and nothing else."
}'Uma resposta JSON significa que a chave e o endpoint estão corretos, e que qualquer problema restante está em config.toml. Um 401 significa que a chave está errada ou que a variável está vazia neste shell. Um 404 em model significa que o slug não corresponde ao catálogo.
Qual modelo definir
O valor de model é apenas um slug no mesmo endpoint, portanto trocar de modelo exige editar uma palavra — sem nova chave e sem novo bloco de provedor.
| Tarefa | Modelo | Entrada / saída do Kunavo (por 1M) |
|---|---|---|
| Padrão especializado em programação | gpt-5-6-sol | $2,00 / $12,00 |
| As refatorações e depurações mais difíceis | claude-opus-5 | $3,50 / $17,50 |
| Programação agêntica do dia a dia | claude-sonnet-5 | $1,40 / $7,00 |
| Edições rápidas e perguntas e respostas | claude-haiku-4-5 | $0,70 / $3,50 |
gpt-5-6-sol é o GPT ajustado para programação e o padrão natural para este CLI, a $2,00 / $12,00 por 1 milhão de tokens, em comparação com o preço de tabela da OpenAI de $5,00 / $30,00 — embora a OpenAI atualmente cobre o preço promocional de $4,00 / $20,00, disponível pelo menos até 21 de novembro de 2026. As tarifas completas de todos os modelos estão na página de preços.
Executando modelos Claude no Codex CLI
Isso surpreende as pessoas: o Codex CLI é vinculado ao protocolo, não ao modelo. Ele usa o formato de comunicação Responses, e qualquer modelo de chat por trás desse endpoint responde. Aponte-o para claude-opus-5 e ele funcionará de ponta a ponta — incluindo chamadas de ferramentas, portanto o agente continuará lendo arquivos, propondo edições e executando comandos normalmente.
# Same provider block, different model — no new key, no new config.
model = "claude-opus-5"
model_provider = "kunavo"
[model_providers.kunavo]
name = "kunavo"
base_url = "https://api.kunavo.com/v1"
env_key = "KUNAVO_API_KEY"
wire_api = "responses"O gateway traduz a solicitação Responses para a API Messages da Anthropic e traduz a resposta de volta para o formato Responses. Uma ressalva importante: o Codex envia itens reasoning opacos que somente um modelo nativo de Responses consegue consumir, e esses itens são descartados a caminho de um upstream que não seja GPT. O modelo perde seu bloco de rascunho privado da rodada anterior; o histórico visível com que ele trabalha permanece intacto. Na prática, isso reduz um pouco a continuidade em cadeias longas de raciocínio e não causa nenhum impacto em ciclos comuns de editar-executar-corrigir.
Se isso é uma boa ideia é uma questão separada de saber se funciona. Se você quer especificamente o Claude, o Claude Code foi criado para ele e repassa cache_control sem tradução. Mas, se prefere o sandbox do Codex CLI e quer usar Claude por trás dele, essa combinação está disponível.
Quanto custa uma sessão
CLIs agênticos reenviam o prompt do sistema, o histórico da tarefa e o contexto atualizado dos arquivos a cada etapa, portanto os tokens se acumulam mais rapidamente do que a contagem de etapas sugere. Uma etapa típica tem aproximadamente 25.000 tokens de entrada e 1.200 de saída:
| Unidade | Tokens (entrada / saída) | gpt-5-6-sol | No preço de tabela da OpenAI |
|---|---|---|---|
| Uma etapa agentiva | 25.000 / 1.200 | $0,024 | $0,061 |
| Uma tarefa de 20 etapas | ~500 mil / ~24 mil | ~$0,48 | ~$1,21 |
| Um dia intenso (5 dessas tarefas) | — | ~$2,42 | ~$6,05 |
Como as tarifas de saída diferem entre famílias de modelos muito mais do que as tarifas de entrada, trabalhos com muita saída alteram a classificação — use seus próprios números na calculadora de custos em vez de confiar em um único exemplo calculado. Solicitações malsucedidas não são cobradas.
Quando a opção com chave de API supera uma assinatura
Um plano ChatGPT inclui o uso do Codex por uma tarifa mensal fixa; uma chave de API cobra apenas pelo que você executar. A opção com chave vence quando você programa em períodos concentrados em vez de diariamente, quando quer limites de gastos por chave e visibilidade do uso em vez de uma franquia opaca, ou quando deseja um modelo que a assinatura não oferece. Ela perde quando você é um usuário intenso do dia a dia — nesse volume, uma tarifa fixa é difícil de superar. As opções não são exclusivas: os perfis do Codex permitem manter ambas e alternar por tarefa.
Solução de problemas
| Sintoma | Causa |
|---|---|
404 em cada solicitação | O provedor não disponibiliza /v1/responses ou base_url já inclui o caminho — ele deve terminar em /v1. |
401 Unauthorized | A variável indicada por env_key está vazia no shell que iniciou o Codex. Reinicie o shell depois de exportá-la. |
| Modelo não encontrado | O slug não corresponde ao catálogo. Slugs usam hífens: gpt-5-6-sol, não gpt-5.3-codex. |
wire_api rejeitado | Somente "responses" é aceito. Uma configuração que use "chat" não será carregada. |
| Cota insuficiente | O saldo da carteira está abaixo da estimativa da solicitação. Adicione saldo em faturamento. |
Perguntas frequentes
Como uso uma chave de API com o Codex CLI?
Adicione um bloco [model_providers.NAME] a ~/.codex/config.toml com base_url, env_key e wire_api = "responses"; depois defina model_provider com esse nome. O Codex lê a chave da variável de ambiente indicada por env_key — ele não armazena a chave no arquivo de configuração. Com a Kunavo, a URL base é https://api.kunavo.com/v1 e a chave é uma chave sk-kn- criada em kunavo.com/app/keys.
O Codex CLI pode usar um endpoint de API personalizado em vez da OpenAI?
Sim, mas o provedor precisa disponibilizar a API Responses da OpenAI em POST /v1/responses. O bloco model_providers do Codex CLI aceita apenas wire_api = "responses", portanto um gateway que ofereça somente /v1/chat/completions não pode ser configurado. A Kunavo disponibiliza ambas, então funciona com o bloco de configuração acima.
Preciso de uma assinatura ChatGPT Plus ou Pro para executar o Codex CLI?
Não. O Codex CLI pode ser usado com login em um plano ChatGPT ou com uma chave de API. A opção com chave de API cobra por token, sem taxa mensal, o que é mais econômico se você programa em períodos concentrados em vez de todos os dias; além disso, é a única opção que permite apontar o CLI para outro provedor ou família de modelos.
O Codex CLI consegue executar modelos Claude?
Sim, por meio de um gateway que disponibilize a API Responses. O Codex CLI é vinculado ao protocolo, não ao modelo: ele usa o formato de comunicação Responses, e qualquer modelo de chat por trás desse endpoint responde. Apontado para a Kunavo com model = claude-opus-5, o Codex CLI funciona de ponta a ponta, incluindo chamadas de ferramentas — o gateway traduz Responses para a API Messages da Anthropic e vice-versa.
Por que o Codex CLI retorna 404 com meu provedor personalizado?
Quase sempre porque o provedor não implementa POST /v1/responses ou porque base_url já inclui o caminho /responses. O Codex acrescenta o caminho sozinho, portanto base_url deve terminar em /v1. Um 401, por outro lado, significa que a variável de ambiente indicada por env_key está vazia no shell que iniciou o Codex.
Onde o Codex CLI armazena a chave de API?
Ele não armazena. env_key indica uma variável de ambiente, e o Codex lê a chave do ambiente ao ser iniciado; assim, config.toml não contém nenhum segredo e permanece seguro para ser versionado.
Preciso de uma assinatura do ChatGPT?
Não. Uma chave é uma alternativa completa ao login e a única opção compatível com um provedor personalizado ou um modelo que não seja GPT.
Isso funciona com o Codex na extensão da IDE?
A extensão compartilha ~/.codex/config.toml com o CLI, portanto o mesmo bloco de provedor se aplica. Reinicie o editor depois de editá-lo.
Posso manter a OpenAI e um gateway lado a lado?
Sim — defina vários blocos [model_providers.*] e alterne usando model_provider, ou envolva cada um em um perfil do Codex e selecione-o a cada execução.
Como isso se compara ao Claude Code?
O Claude Code lê ANTHROPIC_BASE_URL e usa a API Messages, portanto apontá-lo para um gateway exige três variáveis de ambiente e nenhum arquivo de configuração. A comparação completa — superfície da extensão, sandbox e estrutura de custos — está em Claude Code vs Codex CLI. Como o Codex é vinculado ao protocolo, e não ao modelo, usar um modelo Claude no mesmo endpoint exige uma alteração de uma linha; a lista de preços da API Claude da Anthropic apresenta as tarifas por token dessa parte da troca.