在 OpenAI Codex CLI 使用自己的 API Key
在 ~/.codex/config.toml 加一個 model provider 區塊,base_url 填 https://api.relayswitch.io/v1,金鑰放進環境變數,Codex CLI 的用法完全不變。請求走 Responses 路由,每一輪從預付的美元餘額按 token 扣款。
01Codex 是什麼,為什麼能換 API 來源
Codex CLI 是 OpenAI 的命令列程式代理。它的設定裡有一項 model_provider,預設值是 openai,請求送到 OpenAI 自己的介面。這一項可以換:在 config.toml 定義一個自己的 provider,寫明介面網址與存放金鑰的環境變數,再把 model_provider 指過去。Codex 的指令和用法都不變,變的是計費對象:之後每一輪都從你在 RelaySwitch 的預付餘額扣款。
Codex 只使用一種協定:OpenAI 的 Responses API。它的設定參考文件寫明 wire_api 只支援 responses 一個值,所以替 Codex 挑 API 服務,第一件事是確認對方提供 /v1/responses,而不是只有 /v1/chat/completions。這裡兩條路由都有,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填https://api.relayswitch.io/v1,要帶/v1;Codex 會在後面接上/responses。env_key是存放金鑰的環境變數名稱,不是金鑰本身。金鑰留在環境變數裡,設定檔就可以放心提交或同步。wire_api只有responses一個可用值,也是預設值,這一行可以省略;舊教學裡的wire_api = "chat"已經不能用。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 的那個終端機視窗匯出金鑰,再啟動。把 export 那一行加進 shell 的設定檔,之後新開的終端機才會帶上它。金鑰怎麼取得,見 Claude API Key:同一把金鑰就能用在 Codex。
export RELAYSWITCH_API_KEY="sk-relay-..."codex04啟動前先測通 Responses 路由
啟動之前,先照 Codex 的格式送一個最小的 Responses 請求,確認金鑰和網址都正確。-i 會印出狀態列與回應標頭,標頭裡有這次請求的 id。
回覆 200 之後再執行 codex 送出第一個指令;這次請求會在幾秒內出現在控制台的用量頁,附上它的 token 數與扣款。臨時換模型,用 codex --model 加上模型 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"}'05GPT 系列的即時價格
Codex 是圍繞 GPT 模型與 Responses 介面設計的,所以本頁只列 GPT。單位為美元/每百萬 token,輸入、快取輸入與輸出分開計價,表中的價格就是扣款價格。填進 config.toml 的模型 id 必須支援 Responses 路由,上面範例裡的那個就是。想在終端機用 Claude 寫程式,見 Claude Code 教學,用的是同一把金鑰、同一筆餘額。
| 模型 | 開發商 | 輸入 | 輸出 | 上下文長度 |
|---|---|---|---|---|
| GPT-6.1 Solgpt-6.1-sol | OpenAI | $0.582≈ NT$19.56 | $2.91≈ NT$97.80 | 1,050,000 |
| GPT-6 Lunagpt-6-luna | OpenAI | $0.0625≈ NT$2.10 | $0.20≈ NT$6.72 | 1,050,000 |
| GPT-6 Solgpt-6-sol | OpenAI | $0.60≈ NT$20.17 | $3.00≈ NT$100.83 | 1,050,000 |
| GPT-6 Astragpt-6-astra | OpenAI | $3.00≈ NT$100.83 | $15.00≈ NT$504.14 | 1,050,000 |
| GPT-5.6 Lunagpt-5.6-luna | OpenAI | $0.12≈ NT$4.03 | $0.72≈ NT$24.20 | 1,050,000 |
| GPT-5.6 Solgpt-5.6-sol | OpenAI | $1.20≈ NT$40.33 | $3.00≈ NT$100.83 | 1,050,000 |
| GPT-5.6 Terragpt-5.6-terra | OpenAI | $1.20≈ NT$40.33 | $3.60≈ NT$120.99 | 1,050,000 |
| GPT-5.5gpt-5.5 | OpenAI | $1.80≈ NT$60.50 | $9.00≈ NT$302.48 | 1,050,000 |
| GPT-5.4 Minigpt-5.4-mini | OpenAI | $0.75≈ NT$25.21 | $4.50≈ NT$151.24 | 400,000 |
| GPT-5.4gpt-5.4 | OpenAI | $1.50≈ NT$50.41 | $9.00≈ NT$302.48 | 1,050,000 |
| GPT-5.3-Codexgpt-5.3-codex | OpenAI | $1.75≈ NT$58.82 | $14.00≈ NT$470.53 | 400,000 |
| GPT-4o minigpt-4o-mini | OpenAI | $0.15≈ NT$5.04 | $0.60≈ NT$20.17 | 128,000 |
| GPT-4ogpt-4o | OpenAI | $2.50≈ NT$84.02 | $10.00≈ NT$336.09 | 128,000 |
| GPT-4.1 Nanogpt-4.1-nano | OpenAI | $0.10≈ NT$3.36 | $0.40≈ NT$13.44 | 1,048,576 |
| GPT 5.4 Nanogpt-5.4-nano | OpenAI | $0.40≈ NT$13.44 | $2.50≈ NT$84.02 | 400,000 |
| GPT 5.6gpt-5.6 | OpenAI | $0.9412≈ NT$31.63 | $4.7059≈ NT$158.16 | 1,050,000 |
| GPT 6.1 Terragpt-6.1-terra | OpenAI | $0.2941≈ NT$9.88 | $1.4706≈ NT$49.42 | 1,000,000 |
| gpt-oss-120bgpt-oss-120b | OpenAI | $0.20≈ NT$6.72 | $1.80≈ NT$60.50 | |
| gpt-oss-20bgpt-oss-20b | OpenAI | $0.16≈ NT$5.38 | $0.72≈ NT$24.20 |
美元/每百萬 token · ≈ 為按 2026-11-14 各國央行參考匯率換算的新台幣參考價,實際以美元計費
06Codex 的費用怎麼省
Codex 每一輪都會把對話與工具輸出重新送一次,所以花費主要在輸入與快取輸入。這些 token 命中快取時以快取價計費,回應裡會回報快取 token 的數量;能不能命中,取決於模型與請求本身。省錢的辦法因此很具體:
- 日常修改用便宜的模型,困難的審查與重構再切到貴的。
- 一個任務做完就開新的工作階段,不要讓上下文一直變長。
- 替 Codex 另外建一把金鑰,設美元預算與每日消費上限:到了上限,API 回覆 402,這把金鑰停下來,帳戶裡其餘的餘額不受影響。
07profile、/model 選單與常見錯誤
401 到 404 在請求送到模型之前就回覆,429、502、503 沒有內容回傳,這些情況都不扣款。依狀態碼排查的完整對照,在 OpenAI API 串接的錯誤碼一節。
| profile 檔 | profile 是名為 ~/.codex/<name>.config.toml 的檔案,只寫和 config.toml 不同的鍵,用 codex --profile <name> 啟動時疊加上去。Codex 0.134.0 起,寫在 config.toml 裡的 [profiles.<name>] 表不再被讀取,照舊教學抄不會生效。 |
/model 選單 | 使用自訂 provider 時,選單列出的仍是 Codex 內建的 OpenAI 模型。選了會改寫目前的 profile 檔:模型變了,provider 沒變。換模型請用 --profile 或 --model。 |
| 401 | 金鑰不對或已撤銷,或啟動 Codex 的終端機裡 RELAYSWITCH_API_KEY 是空的。重新 export 後再啟動。 |
| 402 | 餘額不足,或這把金鑰的預算用完了。儲值或調高預算後立即恢復。 |
| 404 | 模型 id 不在目錄裡,多半是 /model 選單改寫了 profile。把 model 那一行改回來。 |
| 429 | 金鑰到了速率上限。等回應標頭 retry-after 給的秒數,或在控制台調高這把金鑰的每分鐘請求數。 |
| provider 區塊沒生效 | 表名用了保留的 id,或 model_provider 填的不是這張表的名字。 |
常見問題
- Codex CLI 怎麼設定自己的 API Key?
- 在 ~/.codex/config.toml 加一個 [model_providers.relayswitch] 區塊,寫 name、base_url(https://api.relayswitch.io/v1)與 env_key(RELAYSWITCH_API_KEY),再把最上層的 model_provider 設成 relayswitch、model 設成目錄裡的一個 GPT id。金鑰用 export 放進環境變數,然後執行 codex。
- 還需要 ChatGPT 帳號或 OpenAI 的 API Key 嗎?
- 依 Codex 的設定參考文件,自訂 provider 的 requires_openai_auth 預設是 false,請求以 env_key 指向的環境變數裡的金鑰驗證。帳戶與餘額都在 RelaySwitch,金鑰以 sk-relay- 開頭。
- base_url 要不要加 /v1,wire_api 要填什麼?
- base_url 填 https://api.relayswitch.io/v1,要帶 /v1,Codex 會在後面接上 /responses。wire_api 只有 responses 一個可用值,也是預設值,這一行可以省略;舊教學裡的 wire_api = "chat" 已經不能用。
- Codex 和 Claude Code 差在哪裡?
- Codex CLI 是 OpenAI 的命令列程式代理,圍繞 GPT 模型與 Responses 介面設計,在 config.toml 設定 provider。想在終端機用 Claude 寫程式,用的是 Claude Code,設定方式是兩個環境變數。兩者可以用同一把金鑰、同一筆餘額。
- Codex 的費用怎麼算,要怎麼省?
- Codex 每一輪都會重送對話與工具輸出,花費主要在輸入與快取輸入,依目錄價格從預付餘額按 token 扣款。三個辦法:日常修改用便宜的模型,難題再切到貴的;任務做完就開新的工作階段;替 Codex 的金鑰設美元預算與每日上限,到了額度就停。
- 怎麼確認模型沒有被換掉,推理強度也沒有被改?
- 兩樣都能自己核對。每個模型每天收到同一則檢查提示,回答與先前的結果比對,結果公開在 https://api.relayswitch.io/v1/proof;每次請求有一張附簽章的收據,寫明模型 id、計費 token 與費用。model_reasoning_effort 由 Codex 隨請求送出,閘道會原樣轉給模型。