Codex CLI no saldo pré-pago, com um bloco de provider
O Codex CLI é conectado com um bloco de model provider em ~/.codex/config.toml: base_url recebe https://api.relayswitch.io/v1 e a chave fica em uma variável de ambiente. O uso do Codex não muda, e cada turno é debitado por token do saldo pré-pago pela rota Responses.
01O que é o Codex, e o que muda aqui
O Codex CLI é o agente de programação de linha de comando da OpenAI. A configuração dele tem a opção model_provider, cujo valor padrão é openai, e assim as requisições vão para a interface da própria OpenAI. Essa opção pode ser trocada: defina o seu provider em config.toml, com o endereço do endpoint e o nome da variável de ambiente que guarda a chave, e aponte model_provider para ele. Os comandos e o uso do Codex continuam iguais; só muda quem cobra.
O Codex fala um único protocolo, a Responses API da OpenAI: a referência de configuração dele diz que wire_api só aceita o valor responses. Por isso, a primeira coisa a confirmar em um gateway é se ele oferece /v1/responses, e não apenas /v1/chat/completions. Aqui as duas rotas existem, e o Codex usa a primeira.
02config.toml: um bloco de provider
O bloco abaixo tem quatro linhas, e a API key não é escrita no arquivo. O que cada opção significa:
model_providerescolhe o bloco pelo nome da tabela. Esse nome é você quem define, masopenai,ollama,lmstudio,amazon-bedrock,amazon-bedrock-runtimeegcpsão ids embutidos do Codex e não podem ser sobrescritos.base_urlrecebe https://api.relayswitch.io/v1, com/v1; o Codex acrescenta/responsesao final.env_keyé o nome da variável de ambiente que guarda a chave, não a chave em si. Como a chave fica na variável de ambiente, o arquivo de configuração pode ser commitado ou sincronizado com segurança.wire_apitem um único valor válido,responses, que também é o padrão, então essa linha pode ser removida.requires_openai_authtemfalsecomo padrão e não precisa ser escrita: um provider personalizado usa a chave deenv_key, e não o login da conta OpenAI.
# ~/.codex/config.tomlmodel = "gpt-6.1-sol"model_provider = "relayswitch" [model_providers.relayswitch]name = "RelaySwitch"base_url = "https://api.relayswitch.io/v1"env_key = "RELAYSWITCH_API_KEY"wire_api = "responses"03Guarde a chave em uma variável de ambiente e execute codex
Escreva o bloco em ~/.codex/config.toml. Esse diretório é definido pela variável de ambiente CODEX_HOME e o padrão é ~/.codex; o provider precisa estar nesse arquivo de nível de usuário. Depois, exporte a chave no terminal em que o Codex vai rodar e inicie. Acrescente a linha de export ao arquivo de configuração do shell para que novos terminais também a carreguem.
export RELAYSWITCH_API_KEY="sk-relay-..."codex04Teste a rota Responses com curl
Antes de executar o Codex, envie uma requisição Responses pequena para confirmar que a chave e o endereço estão corretos. A opção -i mostra a linha de status e os headers da resposta, incluindo o id da requisição.
Se a resposta for 200, execute codex e envie o primeiro comando. A requisição aparece na página Usage do console em poucos segundos, com tokens e custo. Para trocar de modelo temporariamente, use codex --model seguido do id.
curl -i https://api.relayswitch.io/v1/responses \ -H "Authorization: Bearer sk-relay-..." \ -H "content-type: application/json" \ -d '{"model": "gpt-6.1-sol", "input": "Reply with ok"}'05Preços dos modelos GPT e o custo de uma tarefa
Esta tabela traz os modelos GPT do catálogo em USD por milhão de tokens, com preços separados de entrada, entrada em cache e saída. O Codex foi projetado para modelos GPT e para a rota Responses, então confirme que o id escrito no config.toml responde ao teste com curl acima.
O Codex reenvia a conversa e a saída das ferramentas a cada turno. Esses tokens são cobrados pelo preço de entrada em cache quando caem no cache, e a resposta informa quantos tokens vieram do cache; cair ou não depende do modelo e da própria requisição. Isso torna a economia concreta: use um modelo mais barato para as mudanças do dia a dia e passe para um mais caro só em reviews e refactors difíceis, comece uma sessão nova ao terminar uma tarefa para o contexto não crescer sem parar, e crie uma chave só para o Codex com orçamento em dólares e limite de gasto diário. Ao atingir o limite, o gateway responde 402 e só essa chave deixa de funcionar; o restante do saldo da conta fica intacto.
| Modelo | Desenvolvedor | Entrada | Saída | Contexto |
|---|---|---|---|---|
| GPT-6.1 Solgpt-6.1-sol | OpenAI | $0.582 | $2.91 | 1,050,000 |
| GPT-6 Lunagpt-6-luna | OpenAI | $0.0625 | $0.20 | 1,050,000 |
| GPT-6 Solgpt-6-sol | OpenAI | $0.60 | $3.00 | 1,050,000 |
| GPT-6 Astragpt-6-astra | OpenAI | $3.00 | $15.00 | 1,050,000 |
| GPT-5.6 Lunagpt-5.6-luna | OpenAI | $0.12 | $0.72 | 1,050,000 |
| GPT-5.6 Solgpt-5.6-sol | OpenAI | $1.20 | $3.00 | 1,050,000 |
| GPT-5.6 Terragpt-5.6-terra | OpenAI | $1.20 | $3.60 | 1,050,000 |
| GPT-5.5gpt-5.5 | OpenAI | $1.80 | $9.00 | 1,050,000 |
| GPT-5.4 Minigpt-5.4-mini | OpenAI | $0.75 | $4.50 | 400,000 |
| GPT-5.4gpt-5.4 | OpenAI | $1.50 | $9.00 | 1,050,000 |
| GPT-5.3-Codexgpt-5.3-codex | OpenAI | $1.75 | $14.00 | 400,000 |
| GPT-4o minigpt-4o-mini | OpenAI | $0.15 | $0.60 | 128,000 |
| GPT-4ogpt-4o | OpenAI | $2.50 | $10.00 | 128,000 |
| GPT-4.1 Nanogpt-4.1-nano | OpenAI | $0.10 | $0.40 | 1,048,576 |
| GPT 5.4 Nanogpt-5.4-nano | OpenAI | $0.40 | $2.50 | 400,000 |
| GPT 5.6gpt-5.6 | OpenAI | $0.9412 | $4.7059 | 1,050,000 |
| GPT 6.1 Terragpt-6.1-terra | OpenAI | $0.2941 | $1.4706 | 1,000,000 |
| gpt-oss-120bgpt-oss-120b | OpenAI | $0.20 | $1.80 | |
| gpt-oss-20bgpt-oss-20b | OpenAI | $0.16 | $0.72 |
USD por milhão de tokens
07Erros mais comuns
Os status 401 a 404 são devolvidos antes de a requisição chegar ao modelo, e 429, 502 e 503 não trazem resposta; nenhum deles é cobrado. A tabela completa por status está na página OpenAI API. Para programar com o Claude no terminal, use o Claude Code; os dois rodam com a mesma chave e o mesmo saldo, e a criação da chave está na página Claude API key.
| 401 | A chave está errada ou foi revogada, ou RELAYSWITCH_API_KEY está vazia no terminal em que o Codex roda. Execute o export de novo e reinicie. |
| 402 | Saldo insuficiente, ou o orçamento da chave acabou. Tudo volta ao normal assim que você recarrega ou aumenta o orçamento. |
| 404 | O id do modelo não existe no catálogo, em geral porque o menu /model reescreveu o profile. Restaure a linha model. |
| 429 | O rate limit da chave foi atingido. Espere o tempo indicado no header retry-after ou aumente o limite de requisições por minuto dessa chave no console. |
| O bloco de provider não tem efeito | O nome da tabela usa um id embutido, ou model_provider não contém o nome dessa tabela. |
| O profile não tem efeito | O conteúdo ainda está em uma tabela [profiles.<name>] no config.toml; mova as linhas para um arquivo próprio. |
Perguntas frequentes
- O que é o Codex CLI?
- O Codex CLI é o agente de programação de linha de comando da OpenAI. A opção model_provider da configuração define para onde as requisições vão; o padrão é openai, e o valor pode apontar para um provider que você mesmo define no config.toml.
- Como configurar o Codex com uma API key própria?
- Acrescente em ~/.codex/config.toml um bloco model_providers.relayswitch com name, base_url (https://api.relayswitch.io/v1) e env_key (RELAYSWITCH_API_KEY). Depois, no nível superior, preencha model_provider com relayswitch e model com um dos ids de GPT do catálogo. Guarde a chave em uma variável de ambiente com export e execute codex.
- Preciso de conta no ChatGPT ou de API key da OpenAI?
- Segundo a referência de configuração do Codex, requires_openai_auth tem false como padrão em providers personalizados, e as requisições são autenticadas com a chave da variável de ambiente indicada por env_key. Sua conta e seu saldo ficam na RelaySwitch, e a chave começa com sk-relay-.
- base_url leva /v1 ou não, e o que vai em wire_api?
- base_url recebe https://api.relayswitch.io/v1, com /v1; o Codex acrescenta /responses ao final. wire_api tem um único valor válido, responses, que também é o padrão, então a linha pode ser removida. O valor chat dos tutoriais antigos não funciona mais.
- Como saber que o modelo não foi trocado sem aviso?
- Há duas coisas que você mesmo pode conferir. Cada modelo recebe o mesmo prompt de teste uma vez por dia e a resposta é comparada com os resultados anteriores; o resultado fica aberto em https://api.relayswitch.io/v1/proof. Cada requisição também tem um recibo assinado que registra o id do modelo, os tokens cobrados e o custo. O valor de model_reasoning_effort é enviado pelo Codex em toda requisição e repassado pelo gateway ao modelo sem alteração.
- Os tokens do Codex parecem caros; como economizar?
- O Codex reenvia a conversa e a saída das ferramentas a cada turno, então o custo está sobretudo na entrada e na entrada em cache. Três medidas: use um modelo mais barato para as mudanças do dia a dia e o mais caro só para problemas difíceis, comece uma sessão nova ao terminar a tarefa, e dê à chave do Codex um orçamento em dólares e um limite diário para que ela pare quando o limite for atingido.
Um bloco de provider, uma variável de ambiente
base_url https://api.relayswitch.io/v1, modelos GPT cobrados por token pelo preço do catálogo, com verificação diária aberta ao público.