Codex CLI sur un solde prépayé, avec un seul bloc provider
Codex CLI se connecte en ajoutant un bloc model provider dans ~/.codex/config.toml : base_url reçoit https://api.relayswitch.io/v1 et la clé reste dans une variable d'environnement. L'usage de Codex ne change pas, et chaque tour est débité au token du solde prépayé via la route Responses.
01Ce qu'est Codex, et ce qui change ici
Codex CLI est l'agent de code en ligne de commande d'OpenAI. Sa configuration a un réglage model_provider dont la valeur par défaut est openai : les requêtes partent donc vers l'interface d'OpenAI. Ce réglage se remplace : définissez votre provider dans config.toml avec l'adresse de l'endpoint et le nom de la variable d'environnement qui contient la clé, puis pointez model_provider dessus. Les commandes et l'usage de Codex restent les mêmes ; seul change celui qui facture.
Codex ne parle qu'un protocole, la Responses API d'OpenAI : sa référence de configuration indique que wire_api n'accepte que la valeur responses. La première chose à vérifier sur une passerelle est donc la présence de /v1/responses, et pas seulement de /v1/chat/completions. Ici, les deux routes existent, et Codex utilise la première.
02config.toml : un bloc provider
Le bloc ci-dessous tient en quatre lignes, et la clé API n'est pas écrite dans le fichier. Le rôle de chaque réglage :
model_providerchoisit le bloc par le nom de sa table. Ce nom, vous le choisissez, maisopenai,ollama,lmstudio,amazon-bedrock,amazon-bedrock-runtimeetgcpsont des id intégrés à Codex qui ne peuvent pas être redéfinis.base_urlreçoit https://api.relayswitch.io/v1, avec/v1; Codex ajoute/responsesderrière.env_keyest le nom de la variable d'environnement qui contient la clé, pas la clé elle-même. Comme la clé reste dans la variable d'environnement, le fichier de configuration peut être commité ou synchronisé sans risque.wire_apin'a qu'une valeur valide,responses, qui est aussi sa valeur par défaut : cette ligne peut donc être supprimée.requires_openai_authvautfalsepar défaut et n'a pas à être écrit : un provider personnalisé utilise la clé deenv_key, pas la connexion à un compte 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"03Mettez la clé dans une variable d'environnement, puis lancez codex
Écrivez ce bloc dans ~/.codex/config.toml. Ce répertoire est fixé par la variable d'environnement CODEX_HOME et vaut ~/.codex par défaut ; le provider doit être écrit dans ce fichier de niveau utilisateur. Exportez ensuite la clé dans le terminal où Codex est lancé, puis démarrez. Ajoutez la ligne export au fichier de configuration de votre shell pour que les nouveaux terminaux la reprennent.
export RELAYSWITCH_API_KEY="sk-relay-..."codex04Tester la route Responses avec curl
Avant de lancer Codex, envoyez une petite requête Responses pour vérifier la clé et l'adresse. L'option -i affiche la ligne de statut et les en-têtes de la réponse, dont l'id de la requête.
Si la réponse est 200, lancez codex et envoyez une première instruction. La requête apparaît en quelques secondes sur la page Usage de la console, avec ses tokens et son coût. Pour changer de modèle temporairement, utilisez codex --model suivi de l'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"}'05Prix des modèles GPT et coût d'une tâche
Ce tableau présente les modèles GPT du catalogue en USD par million de tokens, avec des prix distincts pour l'entrée, l'entrée en cache et la sortie. Codex est conçu pour les modèles GPT et la route Responses : assurez-vous donc que l'id écrit dans config.toml répond au test curl ci-dessus.
Codex renvoie la conversation et les sorties d'outils à chaque tour. Ces tokens sont facturés au prix de l'entrée en cache quand ils touchent le cache, et la réponse indique le nombre de tokens en cache ; qu'ils le touchent ou non dépend du modèle et de la requête elle-même. Les économies deviennent alors concrètes : un modèle moins cher pour les modifications quotidiennes et un plus cher seulement pour les revues et les refactorings difficiles, une nouvelle session une fois la tâche terminée pour que le contexte ne s'allonge pas sans fin, et une clé dédiée à Codex avec un budget en dollars et un plafond de dépenses quotidien. Quand la limite est atteinte, la passerelle répond 402 et seule cette clé s'arrête ; le reste du solde du compte n'est pas touché.
| Modèle | Éditeur | Entrée | Sortie | Contexte |
|---|---|---|---|---|
| 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 par million de tokens
07Erreurs fréquentes
Les statuts 401 à 404 sont renvoyés avant que la requête n'atteigne le modèle, tandis que 429, 502 et 503 ne portent aucune réponse ; aucun n'est facturé. Le tableau complet par statut est sur la page OpenAI API. Pour coder avec Claude dans le terminal, utilisez Claude Code ; les deux tournent avec la même clé et le même solde, et la création d'une clé est expliquée sur la page Clé API Claude.
| 401 | La clé est fausse ou révoquée, ou RELAYSWITCH_API_KEY est vide dans le terminal où Codex est lancé. Refaites export, puis relancez Codex. |
| 402 | Le solde est insuffisant, ou le budget de la clé est épuisé. Tout revient à la normale dès que vous rechargez ou relevez le budget. |
| 404 | L'id du modèle n'existe pas dans le catalogue, le plus souvent parce que le menu /model a réécrit le profil. Rétablissez la ligne model. |
| 429 | La limite de débit de la clé est atteinte. Attendez le délai de l'en-tête retry-after, ou relevez la limite de requêtes par minute de cette clé dans la console. |
| Le bloc provider est ignoré | Le nom de la table reprend un id intégré, ou model_provider ne contient pas le nom de cette table. |
| Le profil est ignoré | Il est encore sous forme de table [profiles.<name>] dans config.toml ; déplacez ses lignes dans un fichier à part. |
Questions fréquentes
- Qu'est-ce que Codex CLI ?
- Codex CLI est l'agent de code en ligne de commande d'OpenAI. Le réglage model_provider de sa configuration détermine où partent les requêtes ; sa valeur par défaut est openai, et il peut pointer vers un provider que vous définissez vous-même dans config.toml.
- Comment configurer Codex avec sa propre clé API ?
- Ajoutez dans ~/.codex/config.toml un bloc model_providers.relayswitch avec name, base_url (https://api.relayswitch.io/v1) et env_key (RELAYSWITCH_API_KEY). Mettez ensuite relayswitch dans model_provider au premier niveau, et l'un des id GPT du catalogue dans model. Placez la clé dans la variable d'environnement avec export, puis lancez codex.
- Faut-il un compte ChatGPT ou une clé API OpenAI ?
- D'après la référence de configuration de Codex, requires_openai_auth vaut false par défaut sur un provider personnalisé, et les requêtes sont authentifiées avec la clé de la variable d'environnement désignée par env_key. Votre compte et votre solde sont chez RelaySwitch, et la clé commence par sk-relay-.
- base_url prend-elle /v1, et que mettre dans wire_api ?
- base_url reçoit https://api.relayswitch.io/v1, avec /v1 ; Codex ajoute /responses derrière. wire_api n'a qu'une valeur valide, responses, qui est aussi sa valeur par défaut : la ligne peut donc être supprimée. La valeur chat des anciens tutoriels ne fonctionne plus.
- Comment savoir que le modèle n'est pas remplacé en douce ?
- Vous pouvez vérifier deux choses vous-même. Chaque modèle reçoit le même prompt de test une fois par jour et sa réponse est comparée aux résultats précédents ; les résultats sont publics sur https://api.relayswitch.io/v1/proof. Chaque requête a aussi un reçu signé qui indique l'id du modèle, les tokens facturés et le coût. La valeur de model_reasoning_effort est envoyée par Codex à chaque requête et transmise telle quelle au modèle par la passerelle.
- Les tokens de Codex coûtent cher, comment économiser ?
- Codex renvoie la conversation et les sorties d'outils à chaque tour : le coût tient donc surtout à l'entrée et à l'entrée en cache. Trois leviers : un modèle moins cher pour les modifications quotidiennes et un plus cher seulement pour les problèmes difficiles, une nouvelle session une fois la tâche terminée, et un budget en dollars avec un plafond quotidien sur la clé de Codex pour qu'elle s'arrête une fois la limite atteinte.
Un bloc provider, une variable d'environnement
base_url https://api.relayswitch.io/v1, modèles GPT facturés au token au prix du catalogue, avec un contrôle quotidien public.