ตั้งค่า Codex ให้ใช้ API key แบบจ่ายตาม token
ใช้ Codex ผ่าน RelaySwitch โดยเพิ่ม model provider หนึ่ง block ใน ~/.codex/config.toml: ตั้ง base_url เป็น https://api.relayswitch.io/v1 เก็บ key ไว้ในตัวแปรสภาพแวดล้อม แล้วใช้ Codex ตามเดิม request ไปที่ route Responses และคิดเงินตาม token จากยอดที่เติมไว้ล่วงหน้า
01Codex คืออะไร และ model provider ทำงานอย่างไร
Codex CLI คือ coding agent บน command line ของ OpenAI ในการตั้งค่ามีค่า model_provider ซึ่งค่าเริ่มต้นคือ openai และส่ง request ไปยัง API ของ OpenAI เอง ค่านี้เปลี่ยนได้: นิยาม provider ของตัวเองใน config.toml ระบุที่อยู่ของ API กับชื่อตัวแปรสภาพแวดล้อมที่เก็บ key แล้วชี้ model_provider ไปที่ provider นั้น คำสั่งและวิธีใช้ Codex ไม่เปลี่ยน สิ่งที่เปลี่ยนคือผู้ที่คิดเงิน
Codex ใช้ protocol เดียว คือ Responses API ของ OpenAI เอกสารการตั้งค่าของ Codex ระบุว่า wire_api รองรับค่า responses เพียงค่าเดียว ปลายทางที่จะใช้กับ Codex จึงต้องมี route /v1/responses ไม่ใช่มีแค่ /v1/chat/completions ที่นี่มีทั้งสอง route และ Codex ใช้ route แรก
02config.toml: provider หนึ่ง block
เขียน block นี้ลงใน ~/.codex/config.toml ซึ่งเป็นไฟล์ระดับผู้ใช้ โฟลเดอร์นี้กำหนดด้วยตัวแปร CODEX_HOME และมีค่าเริ่มต้นเป็น ~/.codex ในไฟล์มีสี่ key และตัว API key ไม่อยู่ในไฟล์
model_providerเลือก block ตามชื่อ table ชื่อนี้ต้องตั้งเอง เพราะopenai,ollama,lmstudio,amazon-bedrock,amazon-bedrock-runtimeและgcpเป็น id ที่ Codex สงวนไว้ ใช้ทับไม่ได้base_urlใส่ https://api.relayswitch.io/v1 แบบมี/v1แล้ว Codex จะต่อ/responsesให้เองenv_keyคือชื่อของตัวแปรสภาพแวดล้อมที่เก็บ key ไม่ใช่ตัว key เอง key อยู่ในตัวแปร ไฟล์ตั้งค่าจึง commit หรือ sync ได้wire_apiมีค่าที่ใช้ได้ค่าเดียวคือresponsesซึ่งเป็นค่าเริ่มต้นด้วย บรรทัดนี้จึงละได้ ส่วนwire_api = "chat"ในคู่มือเก่าใช้ไม่ได้แล้วrequires_openai_authมีค่าเริ่มต้นเป็นfalseจึงไม่ต้องเขียน provider ที่นิยามเองยืนยันตัวด้วย key จาก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เก็บ key ในตัวแปรสภาพแวดล้อม แล้วเปิด Codex
export key ใน terminal เดียวกับที่จะรัน Codex แล้วจึงเปิดโปรแกรม ถ้าต้องการให้ terminal ที่เปิดใหม่มีค่านี้ด้วย ให้เพิ่มบรรทัด export ลงในไฟล์ตั้งค่าของ shell
เมื่อ Codex ทำงาน request จะปรากฏในหน้า Usage ของคอนโซลภายในไม่กี่วินาที พร้อมจำนวน token และค่าใช้จ่าย ถ้าต้องการเปลี่ยนโมเดลชั่วคราว ให้ใช้ codex --model ตามด้วย id จากตารางราคา
export RELAYSWITCH_API_KEY="sk-relay-..."codex04ทดสอบ route Responses ด้วย curl ก่อน
ก่อนเปิด Codex ให้ส่ง request แบบ Responses ขนาดเล็กที่สุดหนึ่งครั้งในรูปแบบเดียวกับที่ Codex ส่ง เพื่อยืนยันว่า key และที่อยู่ถูกต้อง ตัวเลือก -i พิมพ์บรรทัดสถานะและ header ซึ่งมี request 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"}'05ราคา GPT ที่ Codex ใช้ และค่าใช้จ่ายของหนึ่งงาน
Codex ออกแบบมาสำหรับโมเดล GPT ตารางนี้จึงแสดงเฉพาะ GPT ราคาเป็น USD ต่อหนึ่งล้าน token อ่านจากแคตตาล็อกตอนสร้างหน้า โดย input, cached input และ output คิดราคาแยกกัน และราคาที่เห็นคือราคาที่ถูกหักจริง
ในงานของ coding agent นั้น input ส่วนใหญ่คือ context ที่ส่งซ้ำ: Codex ส่งบทสนทนาและผลลัพธ์ของ tool ใหม่ทุก turn token ส่วนนี้เมื่อตรงกับ cache จะคิดตามราคา cached input และ response รายงานจำนวน token ที่มาจาก cache จะตรงกับ cache หรือไม่ขึ้นกับโมเดลและตัว request ตัวเลขจริงของแต่ละ session จึงดูได้จากหน้า Usage ของคอนโซล
วิธีลดค่าใช้จ่ายมีสามข้อ ข้อแรก ใช้รุ่นที่ราคาต่ำกว่ากับการแก้ไขประจำวัน แล้วสลับไปรุ่นที่แพงกว่าเฉพาะงานรีวิวและ refactor ที่ยาก ข้อสอง เปิด session ใหม่เมื่อจบงาน ไม่ปล่อยให้ context ยาวขึ้นเรื่อย ๆ ข้อสาม สร้าง key แยกสำหรับ Codex พร้อมตั้งงบเป็น USD และเพดานรายวัน เมื่อถึงเพดาน gateway ตอบ 402 แล้ว key นั้นหยุด โดยยอดเงินส่วนที่เหลือในบัญชีไม่ถูกแตะ
| โมเดล | ผู้พัฒนา | Input | Output | Context |
|---|---|---|---|---|
| GPT-6.1 Solgpt-6.1-sol | OpenAI | $0.582≈ ฿20.13 | $2.91≈ ฿100.67 | 1,050,000 |
| GPT-6 Lunagpt-6-luna | OpenAI | $0.0625≈ ฿2.16 | $0.20≈ ฿6.92 | 1,050,000 |
| GPT-6 Solgpt-6-sol | OpenAI | $0.60≈ ฿20.76 | $3.00≈ ฿103.78 | 1,050,000 |
| GPT-6 Astragpt-6-astra | OpenAI | $3.00≈ ฿103.78 | $15.00≈ ฿518.90 | 1,050,000 |
| GPT-5.6 Lunagpt-5.6-luna | OpenAI | $0.12≈ ฿4.15 | $0.72≈ ฿24.91 | 1,050,000 |
| GPT-5.6 Solgpt-5.6-sol | OpenAI | $1.20≈ ฿41.51 | $3.00≈ ฿103.78 | 1,050,000 |
| GPT-5.6 Terragpt-5.6-terra | OpenAI | $1.20≈ ฿41.51 | $3.60≈ ฿124.54 | 1,050,000 |
| GPT-5.5gpt-5.5 | OpenAI | $1.80≈ ฿62.27 | $9.00≈ ฿311.34 | 1,050,000 |
| GPT-5.4 Minigpt-5.4-mini | OpenAI | $0.75≈ ฿25.94 | $4.50≈ ฿155.67 | 400,000 |
| GPT-5.4gpt-5.4 | OpenAI | $1.50≈ ฿51.89 | $9.00≈ ฿311.34 | 1,050,000 |
| GPT-5.3-Codexgpt-5.3-codex | OpenAI | $1.75≈ ฿60.54 | $14.00≈ ฿484.31 | 400,000 |
| GPT-4o minigpt-4o-mini | OpenAI | $0.15≈ ฿5.19 | $0.60≈ ฿20.76 | 128,000 |
| GPT-4ogpt-4o | OpenAI | $2.50≈ ฿86.48 | $10.00≈ ฿345.93 | 128,000 |
| GPT-4.1 Nanogpt-4.1-nano | OpenAI | $0.10≈ ฿3.46 | $0.40≈ ฿13.84 | 1,048,576 |
| GPT 5.4 Nanogpt-5.4-nano | OpenAI | $0.40≈ ฿13.84 | $2.50≈ ฿86.48 | 400,000 |
| GPT 5.6gpt-5.6 | OpenAI | $0.9412≈ ฿32.56 | $4.7059≈ ฿162.79 | 1,050,000 |
| GPT 6.1 Terragpt-6.1-terra | OpenAI | $0.2941≈ ฿10.17 | $1.4706≈ ฿50.87 | 1,000,000 |
| gpt-oss-120bgpt-oss-120b | OpenAI | $0.20≈ ฿6.92 | $1.80≈ ฿62.27 | |
| gpt-oss-20bgpt-oss-20b | OpenAI | $0.16≈ ฿5.54 | $0.72≈ ฿24.91 |
USD ต่อหนึ่งล้าน token · ≈ คือราคาอ้างอิงเป็นเงินบาทตามอัตราของธนาคารกลางยุโรป ณ วันที่ 2026-11-13 การคิดค่าบริการเป็นดอลลาร์สหรัฐ
06ไฟล์ profile และเมนู /model
profile คือไฟล์ชื่อ ~/.codex/<name>.config.toml ที่เขียนเฉพาะค่าที่ต่างจาก config.toml และถูกนำมาซ้อนทับเมื่อเปิดด้วย codex --profile <name> ตั้งแต่ Codex 0.134.0 เป็นต้นมา table แบบ profiles ที่เขียนไว้ใน config.toml ไม่ถูกอ่านแล้ว และตัวเลือก profile ที่ระดับบนสุดก็ถูกยกเลิก คู่มือที่เขียนก่อนหน้านั้นยังใช้รูปแบบเก่า ทำตามแล้วจะไม่มีผล
ค่า model_reasoning_effort ใช้ตามระดับที่โมเดลที่เลือกรองรับ Codex ส่งค่านี้ไปกับทุก request และ gateway ส่งต่อให้โมเดลตามเดิม
เมื่อใช้ provider ที่นิยามเอง เมนู /model ใน Codex ยังแสดงรายการโมเดล OpenAI ที่ติดมากับตัวโปรแกรม ไม่ใช่ของ provider นี้ การเลือกจากเมนูจะเขียนทับไฟล์ profile ปัจจุบัน: โมเดลเปลี่ยน แต่ provider ไม่เปลี่ยน ถ้า id ที่ถูกเขียนลงไปมีในแคตตาล็อก Codex จะทำงานต่อด้วยราคาของโมเดลนั้น ถ้าไม่มีจะได้ 404 การเปลี่ยนโมเดลจึงควรใช้ --profile หรือ --model
07Codex vs Claude Code: ใช้ตัวไหนกับโมเดลอะไร
Codex ออกแบบรอบโมเดล GPT และ route Responses ถ้าต้องการเขียนโค้ดใน terminal ด้วย Claude ให้ใช้ Claude Code ซึ่งตั้งค่าด้วยตัวแปรสองตัว ทั้งสองเครื่องมือใช้ key เดียวกันและยอดเงินเดียวกัน ส่วนการเรียก GPT จากโปรแกรมของตัวเองอยู่ที่หน้า OpenAI API และการตั้งค่าใน editor อยู่ที่หน้า Cursor
คำถามที่พบบ่อย
- ตั้งค่า Codex ให้ใช้ API key ของ RelaySwitch อย่างไร
- เพิ่ม block model_providers.relayswitch ใน ~/.codex/config.toml โดยระบุ name, base_url (https://api.relayswitch.io/v1) และ env_key (RELAYSWITCH_API_KEY) จากนั้นตั้ง model_provider ที่ระดับบนสุดเป็น relayswitch และตั้ง model เป็น GPT id จากแคตตาล็อก แล้ว export key ลงตัวแปรสภาพแวดล้อมและรัน codex
- ใช้ Codex แบบนี้ยังต้องมีบัญชี ChatGPT หรือ API key ของ OpenAI ไหม
- ตามเอกสารการตั้งค่าของ Codex ค่า requires_openai_auth ของ provider ที่นิยามเองมีค่าเริ่มต้นเป็น false และ request ยืนยันตัวด้วย key ในตัวแปรที่ env_key ระบุ บัญชีและยอดเงินอยู่ที่ RelaySwitch และ key ขึ้นต้นด้วย sk-relay-
- base_url ของ Codex ต้องมี /v1 ไหม และ wire_api ใส่ค่าอะไร
- base_url ใส่ https://api.relayswitch.io/v1 แบบมี /v1 แล้ว Codex ต่อ /responses ให้เอง ส่วน wire_api มีค่าที่ใช้ได้ค่าเดียวคือ responses ซึ่งเป็นค่าเริ่มต้นด้วย จึงละบรรทัดนี้ได้ ค่า chat ที่คู่มือเก่าใช้นั้นใช้ไม่ได้แล้ว
- รู้ได้อย่างไรว่าโมเดลไม่ถูกสลับเป็นรุ่นที่ถูกกว่า
- ตรวจเองได้สองทาง ทางแรก ทุกโมเดลได้รับ prompt ทดสอบชุดเดียวกันทุกวัน คำตอบถูกเทียบกับรอบก่อนหน้า และผลเปิดเผยที่ https://api.relayswitch.io/v1/proof ทางที่สอง ทุก request มีใบเสร็จลงลายเซ็นที่ระบุ model id, token ที่คิดเงิน และค่าใช้จ่าย ส่วนค่า model_reasoning_effort ที่ Codex ส่งมา gateway ส่งต่อให้โมเดลตามเดิม
- Codex ใช้ token มาก จะลดค่าใช้จ่ายอย่างไร
- Codex ส่งบทสนทนาและผลลัพธ์ของ tool ใหม่ทุก turn ค่าใช้จ่ายจึงอยู่ที่ input และ cached input เป็นหลัก มีสามวิธี: ใช้รุ่นที่ราคาต่ำกว่ากับงานประจำวันแล้วสลับไปรุ่นที่แพงกว่าเฉพาะงานยาก เปิด session ใหม่เมื่อจบงานเพื่อไม่ให้ context ยาวขึ้นเรื่อย ๆ และตั้งงบเป็น USD กับเพดานรายวันให้ key ของ Codex เพื่อให้หยุดเมื่อถึงวงเงิน
- error 401, 402, 404 และ 429 ใน Codex หมายความว่าอะไร
- 401 คือ key ผิดหรือถูกเพิกถอน หรือตัวแปร RELAYSWITCH_API_KEY ว่างใน terminal ที่เปิด Codex ให้ export ใหม่แล้วเปิดอีกครั้ง 402 คือยอดเงินไม่พอหรืองบของ key หมด 404 คือ model id ไม่อยู่ในแคตตาล็อก ซึ่งส่วนใหญ่เกิดจากเมนู /model เขียนทับไฟล์ profile ส่วน 429 คือ key ถึงขีดจำกัดอัตราการเรียก ให้รอตาม header retry-after รหัส 401 ถึง 404 ตอบกลับก่อนถึงโมเดล และ 429 ไม่มีเนื้อหาตอบกลับ จึงไม่คิดเงิน
provider หนึ่ง block กับตัวแปรหนึ่งตัว
ตั้ง base_url เป็น https://api.relayswitch.io/v1 แล้ว Codex จะคิดเงินตาม token ตามราคาสดของ GPT ในแคตตาล็อก พร้อมการตรวจโมเดลแบบเปิดเผยทุกวัน