Cấu hình Codex bằng config.toml và một API key trả theo token
Thêm một khối model provider vào ~/.codex/config.toml, điền base_url là https://api.relayswitch.io/v1 và đặt key vào một biến môi trường: cách dùng Codex không đổi. Các model GPT đi qua route Responses và trừ theo token vào số dư trả trước.
01Codex là gì và vì sao đổi được nhà cung cấp
Codex CLI là coding agent chạy trong terminal của OpenAI. Trong cấu hình của nó có mục model_provider, giá trị mặc định là openai, tức request gửi tới API của chính OpenAI. Mục này đổi được: bạn khai báo một provider của riêng mình trong config.toml, ghi địa chỉ API và tên biến môi trường chứa key, rồi trỏ model_provider sang đó. Lệnh và cách dùng Codex giữ nguyên, chỉ có bên tính tiền là khác.
Codex chỉ nói một giao thức là Responses API của OpenAI: tài liệu cấu hình của nó ghi wire_api chỉ hỗ trợ giá trị responses. Vì vậy khi chọn relay cho Codex, việc đầu tiên là xác nhận bên đó có /v1/responses chứ không chỉ /v1/chat/completions. RelaySwitch có cả hai route; Codex dùng route đầu.
02config.toml: một khối model provider
Bốn khóa, và key không nằm trong file. Ghi khối dưới vào ~/.codex/config.toml; thư mục này do biến CODEX_HOME quyết định, mặc định là ~/.codex. Provider phải được khai báo trong file cấp người dùng này.
model_providerchọn khối bên dưới theo tên bảng. Tên do bạn tự đặt, nhưngopenai,ollama,lmstudio,amazon-bedrock,amazon-bedrock-runtimevàgcplà các id Codex giữ riêng, không ghi đè được.base_urlđiền https://api.relayswitch.io/v1, có/v1; Codex tự ghép/responsesvào sau.env_keylà tên của biến môi trường chứa key, không phải bản thân key. Key nằm trong biến môi trường nên file cấu hình commit hay đồng bộ đều an toàn.wire_apichỉ có một giá trị dùng được làresponses, cũng là giá trị mặc định, nên dòng này bỏ đi cũng được.requires_openai_authmặc định làfalse, không cần ghi: provider tự khai báo xác thực bằng key trongenv_key, không qua đăng nhập tài khoản 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Đặt key vào biến môi trường rồi chạy codex
Export key ngay trong terminal sẽ chạy Codex, rồi khởi động. Biến chỉ có hiệu lực với cửa sổ terminal đang mở; muốn terminal mới nào cũng có thì thêm dòng export vào file cấu hình của shell.
export RELAYSWITCH_API_KEY="sk-relay-..."codex04Thử route Responses bằng curl trước
Trước khi mở Codex, gửi một request Responses tối thiểu theo đúng định dạng Codex dùng để chắc key và địa chỉ đều đúng. -i in dòng trạng thái và header của response, trong đó có request id của lần gọi này.
Nhận về 200 thì chạy codex và gửi lệnh đầu tiên; request hiện trong trang Usage của console sau vài giây, kèm số token và số tiền. Muốn tạm đổi model cho một lần chạy thì dùng codex --model kèm 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"}'05Giá các model GPT dùng cho Codex
Codex được thiết kế quanh model GPT và route Responses, nên bảng giá trên trang này là bảng của họ GPT. Giá tính bằng USD cho mỗi triệu token, đọc từ catalog khi trang được dựng; input, cached input và output tính riêng, và giá trong bảng là giá trừ vào số dư. Trước khi ghi một id vào config.toml, hãy thử nó bằng lệnh curl ở mục trên.
Ở mỗi lượt, Codex gửi lại toàn bộ phiên làm việc và kết quả của các tool. Phần token đó khi trúng cache được tính theo giá cached, và response có báo số token cache. Trúng hay không tùy model và tùy request, nên chi phí thực nằm giữa hai mức có cache và không cache. Ba cách giữ chi phí thấp:
- Việc sửa hằng ngày dùng model giá thấp; việc review và refactor khó mới chuyển sang model đắt.
- Xong một task thì mở phiên mới, đừng để context dài mãi.
- Tạo một key riêng cho Codex, đặt ngân sách bằng USD và trần chi tiêu theo ngày: chạm trần thì gateway trả về 402, key đó dừng, phần số dư còn lại của tài khoản không bị đụng tới. Cách đặt ở trang Claude API key.
| Model | Nhà phát triển | Input | Output | Context |
|---|---|---|---|---|
| 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 cho mỗi triệu token
07Lỗi thường gặp với Codex
Các mã từ 401 đến 404 được trả về trước khi request tới model; 429, 502 và 503 không trả nội dung nào. Tất cả đều không bị tính tiền. Bảng mã lỗi đầy đủ ở trang OpenAI API. Muốn viết code bằng Claude trong terminal thì dùng Claude Code; cả hai dùng chung một key và một số dư.
| 401 | Key sai hoặc đã bị thu hồi, hoặc biến RELAYSWITCH_API_KEY đang trống trong terminal chạy Codex. Export lại rồi khởi động lại. |
| 402 | Hết số dư, hoặc key đã dùng hết ngân sách đặt trên nó. Nạp thêm hoặc nâng ngân sách là chạy lại ngay. |
| 404 | Id model không có trong catalog, thường do menu /model đã ghi đè profile. Sửa lại dòng model. |
| 429 | Key chạm giới hạn tốc độ. Chờ số giây ghi trong header retry-after, hoặc nâng số request mỗi phút của key trong console. |
| Khối provider không có tác dụng | Tên bảng trùng một id Codex giữ riêng, hoặc model_provider không ghi đúng tên bảng đó. |
| Profile không có tác dụng | Nó vẫn là bảng [profiles.<name>] trong config.toml; chuyển các khóa trong đó sang một file riêng. |
Câu hỏi thường gặp
- Codex là gì?
- Codex CLI là coding agent chạy trong terminal của OpenAI. Mặc định nó gửi request tới API của OpenAI, nhưng mục model_provider trong config.toml cho phép trỏ nó sang một provider khác; trang này dùng cách đó để Codex chạy trên số dư trả trước của RelaySwitch.
- Cấu hình Codex với relay như thế nào?
- Thêm khối [model_providers.relayswitch] vào ~/.codex/config.toml với name, base_url (https://api.relayswitch.io/v1) và env_key (RELAYSWITCH_API_KEY), đặt model_provider ở cấp cao nhất thành "relayswitch" và model thành một id GPT trong catalog. Export key vào biến môi trường rồi chạy codex.
- Có cần tài khoản ChatGPT hay API key của OpenAI không?
- Theo tài liệu cấu hình của Codex, provider tự khai báo có requires_openai_auth mặc định là false: request được xác thực bằng key trong biến môi trường mà env_key trỏ tới. Tài khoản và số dư đều nằm ở RelaySwitch, key bắt đầu bằng sk-relay-.
- base_url có cần /v1 không, wire_api điền gì?
- base_url điền https://api.relayswitch.io/v1, có /v1; Codex tự ghép /responses vào sau. wire_api chỉ có một giá trị dùng được là responses, cũng là mặc định, nên bỏ dòng này đi cũng được. Cách ghi wire_api = "chat" trong các bài hướng dẫn cũ không còn dùng được.
- Làm sao biết relay không lặng lẽ đổi sang model yếu hơn?
- Tự kiểm tra được bằng hai thứ. Mỗi model nhận cùng một prompt kiểm tra mỗi ngày, câu trả lời được so với các lần trước và kết quả công bố tại https://api.relayswitch.io/v1/proof. Mỗi request có một biên nhận có chữ ký số ghi id model, số token tính tiền và số tiền. Mức model_reasoning_effort do Codex gửi kèm request và gateway chuyển nguyên vẹn tới model.
- Codex tốn token quá, giảm chi phí thế nào?
- Mỗi lượt Codex gửi lại phiên làm việc và kết quả tool, nên tiền nằm chủ yếu ở input và cached input. Ba cách: việc hằng ngày dùng model giá thấp, việc khó mới chuyển sang model đắt; xong task thì mở phiên mới để context không dài mãi; đặt ngân sách USD và trần theo ngày cho key của Codex, chạm trần là dừng.
Một khối provider, một biến môi trường
base_url https://api.relayswitch.io/v1, model GPT tính theo giá trong catalog, mỗi model được kiểm tra công khai mỗi ngày.