Codex CLI を API キーの従量課金で動かす
Codex CLI は ~/.codex/config.toml に model provider ブロックを 1 つ追加するだけで、接続先を切り替えられます。base_url を https://api.relayswitch.io/v1 にし、キーを環境変数に入れると、Codex の使い方はそのままで、各ターンが前払い残高からトークン単位で課金されます。
01Codex とは:OpenAI のコマンドライン型コーディングエージェント
Codex CLI は、OpenAI のコマンドライン型コーディングエージェントです。設定には model_provider という項目があり、既定値は openai で、リクエストは OpenAI 自身の API に送られます。この項目は変更できます。config.toml に自分の provider を定義し、接続先のアドレスと、キーを入れた環境変数の名前を書いて、model_provider でそれを指定します。Codex のコマンドや使い方は変わらず、変わるのは請求先だけです。
Codex が使うプロトコルは、OpenAI の Responses API の 1 つだけです。Codex の設定リファレンスには、wire_api が対応する値は responses だけだと書かれています。そのため Codex の接続先は、/v1/chat/completions だけでなく /v1/responses を提供している必要があります。RelaySwitch には両方のルートがあり、Codex は後者を使います。
02config.toml に provider ブロックを書く
下のブロックを、ユーザー設定の ~/.codex/config.toml に書きます。このディレクトリは環境変数 CODEX_HOME で決まり、既定は ~/.codex です。キーそのものはファイルに書きません。
model_providerは、テーブル名でブロックを選びます。テーブル名は自分で付けますが、openai、ollama、lmstudio、amazon-bedrock、amazon-bedrock-runtime、gcpは Codex が予約している組み込みの ID で、上書きできません。base_urlは/v1まで含めた https://api.relayswitch.io/v1 です。Codex がその後ろに/responsesを付け足します。env_keyはキーを入れた環境変数の名前で、キーそのものではありません。キーは環境変数に置くので、設定ファイルはコミットや同期をしても問題ありません。wire_apiに書ける値はresponsesだけで、既定値でもあるため、この行は省略できます。requires_openai_authの既定値はfalseで、書く必要はありません。自分で定義した provider はenv_keyのキーで認証し、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"03キーを環境変数に入れて Codex を起動する
Codex を実行するターミナルでキーを環境変数に入れてから起動します。キーはコンソールで発行した sk-relay- で始まるものです。export の行をシェルの設定ファイルに追加しておくと、新しく開いたターミナルでも有効になります。
一時的に別のモデルを使うときは、codex --model にカタログの ID を渡します。
export RELAYSWITCH_API_KEY="sk-relay-..."codex04起動前に Responses ルートを curl で確認する
Codex を起動する前に、Codex と同じ形式の最小の Responses リクエストを 1 件送り、キーとアドレスが正しいことを確認します。-i を付けるとステータス行とレスポンスヘッダーが表示され、そのリクエストの ID も確認できます。
200 が返ったら codex を起動して最初の指示を送ります。そのリクエストは数秒でコンソールの利用履歴に表示され、トークン数と料金を確認できます。
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"}'05Codex で使う GPT モデルの料金
Codex は GPT モデルと Responses API を前提に作られているので、このページの表には GPT モデルを載せています。単位は米ドル / 100 万トークンで、入力、キャッシュ入力、出力は別々に課金され、倍率はありません。
Codex は毎ターン、セッションの内容とツールの出力を送り直します。コーディングエージェントの 1 回の作業では、入力の大半がこの繰り返し送られるコンテキストです。キャッシュにヒットしたトークンはキャッシュ入力の単価で課金され、レスポンスにはその数が報告されます。ヒットするかどうかは、モデルとリクエストの内容によります。
費用を抑える方法は具体的です。日常の修正には単価の低いモデルを使い、難しいレビューやリファクタリングのときだけ高いモデルに切り替えます。1 つの作業が終わったら新しいセッションを始め、コンテキストを伸ばし続けないようにします。Codex 専用のキーを作って米ドルの予算と 1 日の利用上限を設定しておくと、上限に達した時点でそのキーだけが 402 を返して止まり、アカウントの残りの残高には影響しません。料金の仕組みは料金ページにあります。
| モデル | 開発元 | 入力 | 出力 | コンテキスト |
|---|---|---|---|---|
| GPT-6.1 Solgpt-6.1-sol | OpenAI | $0.582≈ ¥95 | $2.91≈ ¥475 | 1,050,000 |
| GPT-6 Lunagpt-6-luna | OpenAI | $0.0625≈ ¥10 | $0.20≈ ¥33 | 1,050,000 |
| GPT-6 Solgpt-6-sol | OpenAI | $0.60≈ ¥98 | $3.00≈ ¥490 | 1,050,000 |
| GPT-6 Astragpt-6-astra | OpenAI | $3.00≈ ¥490 | $15.00≈ ¥2,448 | 1,050,000 |
| GPT-5.6 Lunagpt-5.6-luna | OpenAI | $0.12≈ ¥20 | $0.72≈ ¥118 | 1,050,000 |
| GPT-5.6 Solgpt-5.6-sol | OpenAI | $1.20≈ ¥196 | $3.00≈ ¥490 | 1,050,000 |
| GPT-5.6 Terragpt-5.6-terra | OpenAI | $1.20≈ ¥196 | $3.60≈ ¥588 | 1,050,000 |
| GPT-5.5gpt-5.5 | OpenAI | $1.80≈ ¥294 | $9.00≈ ¥1,469 | 1,050,000 |
| GPT-5.4 Minigpt-5.4-mini | OpenAI | $0.75≈ ¥122 | $4.50≈ ¥734 | 400,000 |
| GPT-5.4gpt-5.4 | OpenAI | $1.50≈ ¥245 | $9.00≈ ¥1,469 | 1,050,000 |
| GPT-5.3-Codexgpt-5.3-codex | OpenAI | $1.75≈ ¥286 | $14.00≈ ¥2,285 | 400,000 |
| GPT-4o minigpt-4o-mini | OpenAI | $0.15≈ ¥24 | $0.60≈ ¥98 | 128,000 |
| GPT-4ogpt-4o | OpenAI | $2.50≈ ¥408 | $10.00≈ ¥1,632 | 128,000 |
| GPT-4.1 Nanogpt-4.1-nano | OpenAI | $0.10≈ ¥16 | $0.40≈ ¥65 | 1,048,576 |
| GPT 5.4 Nanogpt-5.4-nano | OpenAI | $0.40≈ ¥65 | $2.50≈ ¥408 | 400,000 |
| GPT 5.6gpt-5.6 | OpenAI | $0.9412≈ ¥154 | $4.7059≈ ¥768 | 1,050,000 |
| GPT 6.1 Terragpt-6.1-terra | OpenAI | $0.2941≈ ¥48 | $1.4706≈ ¥240 | 1,000,000 |
| gpt-oss-120bgpt-oss-120b | OpenAI | $0.20≈ ¥33 | $1.80≈ ¥294 | |
| gpt-oss-20bgpt-oss-20b | OpenAI | $0.16≈ ¥26 | $0.72≈ ¥118 |
米ドル / 100 万トークン · ≈ は欧州中央銀行の 2026-11-13 のレートで換算した日本円の参考価格で、課金は米ドルです
06うまく動かないとき:profile、/model メニュー、エラーコード
profile は ~/.codex/<name>.config.toml という名前のファイルです。config.toml と異なるキーだけを書き、codex --profile <name> で起動すると上に重ねて適用されます。Codex 0.134.0 以降、config.toml の中の [profiles.<name>] テーブルは読み込まれず、トップレベルの profile = による選択もなくなりました。それ以前に書かれた記事の書き方をそのまま写しても、有効になりません。
自分で定義した provider を使っているとき、Codex の /model メニューに並ぶのは組み込みの OpenAI モデルで、その provider のモデルではありません。項目を選ぶと現在の profile ファイルが書き換えられ、モデルは変わりますが provider は変わりません。書き込まれた ID がカタログにあればそのモデルの料金で動き続け、なければ 404 が返ります。モデルの切り替えには --profile か --model を使ってください。
model_reasoning_effort に指定できる値は、選んだモデルが対応する段階によります。Codex がリクエストごとに送り、ゲートウェイはそのままモデルに渡します。401 から 404 はリクエストがモデルに届く前に返り、429、502、503 は内容が返らないため、いずれも課金されません。
| 401 | キーが間違っているか失効しています。または、Codex を起動したターミナルで環境変数 RELAYSWITCH_API_KEY が空です。export し直してから起動します。 |
| 402 | 残高が不足しているか、そのキーの予算を使い切っています。チャージするか予算を引き上げると、すぐに再開します。 |
| 404 | モデル ID がカタログにありません。多くは /model メニューが profile を書き換えたことが原因です。model の行を元に戻します。 |
| 429 | キーのレート上限に達しました。retry-after ヘッダーが示す秒数だけ待つか、コンソールでそのキーの 1 分あたりのリクエスト数を引き上げます。 |
| provider ブロックが効かない | テーブル名に予約済みの ID を使っているか、model_provider の値がそのテーブルの名前と一致していません。 |
| profile が効かない | config.toml の [profiles.<name>] テーブルのままになっています。中のキーを個別のファイルに移します。 |
07Codex と Claude Code を同じキーで使い分ける
Codex は GPT モデル向けのツールです。ターミナルで Claude を使ってコードを書きたい場合は、Claude Code を使います。どちらも同じキー、同じ残高で動くので、ツールごとにアカウントを分ける必要はありません。自分のコードから GPT を呼ぶ場合は OpenAI API の使い方を参照してください。
よくある質問
- Codex を API キーで使うには、何を設定しますか?
- ~/.codex/config.toml に model provider ブロックを追加し、name、base_url(https://api.relayswitch.io/v1)、env_key を書きます。トップレベルの model_provider をそのブロックの名前に、model をカタログの GPT の ID にします。キーを export で環境変数に入れてから codex を起動します。
- ChatGPT のアカウントや OpenAI の API キーは必要ですか?
- Codex の設定リファレンスによると、自分で定義した provider の requires_openai_auth は既定で false で、リクエストは env_key が指す環境変数のキーで認証されます。アカウントと残高は RelaySwitch 側にあり、キーは sk-relay- で始まります。
- base_url に /v1 は付けますか? wire_api には何を書きますか?
- base_url は /v1 まで含めた https://api.relayswitch.io/v1 で、Codex がその後ろに /responses を付け足します。wire_api に書ける値は responses だけで、既定値でもあるので省略できます。古い記事にある wire_api = "chat" は、現在は使えません。
- Codex の料金を抑えるにはどうすればよいですか?
- Codex は毎ターン、セッションとツールの出力を送り直すので、費用は主に入力とキャッシュ入力にかかります。方法は 3 つあります。日常の修正には単価の低いモデルを使い、難しい作業のときだけ高いモデルに切り替えること。作業が終わったら新しいセッションを始めること。Codex 用のキーに米ドルの予算と 1 日の上限を設定し、上限で止まるようにすることです。
- モデルが別のものにすり替えられていないか、確認できますか?
- 確認できます。全モデルに毎日同じチェック用プロンプトを送り、過去の応答と比較した結果を https://api.relayswitch.io/v1/proof で公開しています。リクエストごとの署名付きレシートには、モデル ID、課金トークン数、料金が記載されます。model_reasoning_effort は Codex がリクエストに付けて送り、ゲートウェイはそのままモデルに渡します。
- Codex と Claude Code はどう使い分けますか?
- Codex は GPT モデルと Responses API を前提にしたツールで、Claude Code は Claude を使うツールです。RelaySwitch ではどちらも同じキー、同じ残高で動くので、作業に合わせて使い分けられます。