การแก้ไขปัญหาคู่มือ
ข้อผิดพลาด API 401 หรือ 404: คีย์, base URL หรือ model id ผิด
อ่านรหัสสถานะ หาว่าในสามอย่างนี้ (คีย์, base URL, model id) อันไหนผิด แล้วยืนยันการแก้ไขด้วยคำขอ curl หนึ่งครั้ง

ในหน้านี้
คำขอของคุณล้มเหลวพร้อมรหัสสถานะ และคุณไม่แน่ใจว่าจะเริ่มแก้ตรงไหนก่อน คำตอบสั้น ๆ: 401 มักชี้ไปที่คีย์ ส่วน 404 มักหมายความว่าคุณเคาะผิดที่ — ไม่ใช่ที่อยู่ (base URL และ path) ก็คือ model id มีสามอย่างที่ต้องตรวจ ตามลำดับนี้ และคำสั่ง curl หนึ่งคำสั่งที่พิสูจน์ว่าการแก้ไขได้ผล
หน้าผังข้อผิดพลาดของ OpenAI (ตรวจสอบเมื่อ 26 ตุลาคม 2026) ระบุข้อความ 401 สองแบบ: "Invalid Authentication" และ "Incorrect API key provided" วิธีแก้ที่ให้มาเหมือนกันทั้งคู่: ตรวจสอบคีย์หรือสร้างใหม่ หน้านั้นไม่ได้ระบุ 404 สำหรับ API เอง ดังนั้นสำหรับ 404 กฎด้านล่างมาจากวิธีการทำงานของ endpoint ที่เข้ากันได้กับ OpenAI ไม่ใช่จากหน้านั้น
วิธีแยกแยะอย่างรวดเร็ว#
เลื่อนตารางไปทางขวา →
| สถานะ | สิ่งที่เซิร์ฟเวอร์กำลังบอก | ดูที่แรก |
|---|---|---|
| 401 | โดยปกติ: ฉันไม่รับคีย์นี้ | คีย์ และคีย์นั้นเป็นของ provider ไหน |
| 404 ทุกโมเดล | โดยปกติ: ไม่มีอะไรอยู่ที่ที่อยู่นี้ | base URL และ /v1 |
| 404 แค่โมเดลเดียว | โดยปกติ: ที่อยู่ถูกต้อง แต่ไม่รู้จัก model id นี้ | model id |
ถ้อยคำของข้อความขึ้นอยู่กับเซิร์ฟเวอร์และเครื่องมือของคุณ (Cline, Aider, OpenCode และ Continue ต่างห่อข้อผิดพลาดด้วยวิธีของตัวเอง) ดังนั้นเริ่มจากตัวเลข แล้วยืนยันด้วยการตรวจ curl ด้านล่าง
401: คีย์ไม่ตรงกับ endpoint#
เรื่องคลาสสิก: คุณย้ายเครื่องมือไปยัง provider ใหม่ เปลี่ยน base URL แล้วทิ้งคีย์ของ provider เก่าไว้ใน config ที่อยู่ใหม่ คีย์เก่า และเซิร์ฟเวอร์ตอบ 401 ไม่มีอะไรพัง คีย์แค่เป็นของบ้านอื่น
สิ่งที่ต้องตรวจ:
- คีย์ออกโดย provider ไหน? ต้องเป็นรายเดียวกับที่อยู่ที่คุณเรียก คีย์ของบริการหนึ่งใช้ไม่ได้กับอีกบริการ
- อักขระแปลกปลอม ช่องว่างหรือการขึ้นบรรทัดใหม่ที่ติดมากับคีย์ หรือเครื่องหมายคำพูดที่หลุดเข้าไปในค่า
- เครื่องมืออ่านคีย์จากที่ไหน ตัวแปรสภาพแวดล้อมที่ตั้งไว้ในเทอร์มินัลหนึ่งแต่ไม่ได้ตั้งในเทอร์มินัลที่เอดิเตอร์ของคุณเริ่มมา เป็นสาเหตุที่พบบ่อย ถ้าเครื่องมือมีทั้งไฟล์ config และตัวแปรสภาพแวดล้อม ให้หาว่าอันไหนมีผลเหนือกว่า
- คีย์ที่ถูกเพิกถอนหรือลบ คีย์ที่คุณลบหรือเพิกถอนจะหยุดทำงาน — สร้างใหม่แล้วใส่ใน config
ถ้าคุณไม่แน่ใจว่าคีย์ทำงานอย่างไรหรือควรเก็บไว้ที่ไหน API key คืออะไรและวิธีเก็บอย่างปลอดภัย อธิบายไว้ด้วยคำง่าย ๆ
404 ทุกโมเดล: ที่อยู่ผิด#
base URL สำหรับ CheapTokens คือ https:/ เครื่องมือและ SDK จะต่อ path ของ endpoint เอง ดังนั้นความผิดพลาดที่พบบ่อยจึงเกี่ยวกับ /v1:
- ขาด
/v1: เครื่องมือจะเรียกhttps:// api. cheaptokens. dev/ chat/ completions /v1ซ้ำ: คุณวาง path เต็มลงในช่องที่ต่อให้อยู่แล้ว และได้https:// api. cheaptokens. dev/ v1/ v1/ chat/ completions - แบบผิด: เครื่องมือสไตล์ OpenAI และ OpenAI SDK ใช้ที่อยู่ที่มี
/v1ส่วน Anthropic SDK และ Claude Code ใช้ที่อยู่ ที่ไม่มี/v1:https:// api. cheaptokens. dev
ถ้าคุณเคยสงสัยว่า base URL คืออะไรกันแน่และเครื่องมือต่อส่วนไหนให้ คำอธิบายนี้ พาไล่ดูทีละขั้น สำหรับฝั่ง Anthropic ดู Anthropic Python SDK กับ CheapTokens
404 แค่โมเดลเดียว: model id#
อันนี้จับคนที่คัดลอกชื่อจากตารางราคาหรือจาก provider อื่น ตารางราคาอาจเขียนว่า DeepSeek- แต่ API ต้องการ gateway id เต็ม พร้อมคำนำหน้าผู้พัฒนาและรุ่น:
เลื่อนตารางไปทางขวา →
| ที่คุณเห็น | สิ่งที่ API ต้องการ |
|---|---|
| DeepSeek-V4-Flash | deepseek- |
| GLM-5.3-Flash | zai- |
| MiniMax-M2.7 | MiniMaxAI/ |
id แบบสั้นจากป้ายราคา API ไม่รับ และการสะกดสำคัญ: ตัวพิมพ์ใหญ่ เครื่องหมายทับ และส่วนต่อท้าย -0731 คัดลอก id จากเอกสาร CheapTokens แทนการพิมพ์จากความจำ — provider ต่าง ๆ ตั้งชื่อโมเดลเดียวกันไม่เหมือนกัน หากต้องการดู id ที่ใช้ได้กับคีย์ของคุณจริง ๆ ให้เรียก GET https:/ ด้วย Authorization header เดียวกัน แล้วคัดลอก id จากรายการ:
curl https://api.cheaptokens.dev/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"ถ้า logic การตั้งชื่อในตารางดูแปลก ๆ วิธีอ่านชื่อโมเดล AI อธิบาย alias กับเวอร์ชันที่ปักหมุดไว้
พิสูจน์การแก้ไขด้วยคำสั่ง curl หนึ่งคำสั่ง#
เอาเครื่องมือออกจากภาพแล้วเรียก API โดยตรง แทนที่ตัวแทนคีย์ด้วยคีย์ของคุณเอง:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"messages": [{"role": "user", "content": "Say hi in one word."}],
"max_tokens": 20
}'คำขอเดียวนี้มีผู้ต้องสงสัยทั้งสามอยู่ในนั้น: คีย์ใน header, base URL ในบรรทัดแรก, model id ใน body คำตอบ JSON ที่มีอาร์เรย์ choices หมายความว่าทั้งสามถูกต้อง และสิ่งที่เครื่องมือของคุณทำต่างออกไปคือปัญหา ถ้ามันล้มเหลว ให้เปลี่ยน ทีละหนึ่ง อย่าง:
- 401 → เปลี่ยนเป็นคีย์ที่คุณได้จาก CheapTokens แล้วรันอีกครั้ง
- 404 → เทียบ URL ทีละอักขระกับอันด้านบน แล้วจึงเทียบ model id
หลังจาก curl ทำงานได้ ให้คัดลอกค่าสามอย่างเดียวกันลงในเครื่องมือ: คีย์, base URL (https:/ หรือไม่มี /v1 สำหรับ Anthropic SDK และ Claude Code) และ model id เต็ม
ถ้ายังไม่ทำงาน#
- ข้อผิดพลาดเดิมในเครื่องมือ แต่ curl ปกติ เครื่องมือกำลังอ่านคีย์หรือ URL เก่าจากที่อื่น: ไฟล์ config ที่สอง โปรไฟล์ที่บันทึกไว้ ตัวแปรสภาพแวดล้อม รีสตาร์ทเครื่องมือหลังเปลี่ยน
- ไม่แน่ใจว่า model id ถูกต้อง เรียก
GET /v1/modelsด้วยคีย์ของคุณแล้วคัดลอก id จากรายการ - Connection refused, timeout, ข้อผิดพลาดใบรับรอง นั่นไม่ใช่ 401 หรือ 404 ดู ข้อผิดพลาดการเชื่อมต่อที่พบบ่อย
- ไม่แน่ใจว่าคำขอแรกควรเป็นอย่างไร คำขอ API แรกของคุณ อธิบายทีละขั้น และ เอกสาร มีข้อมูลอ้างอิงครบถ้วน
นิสัยที่ควรเก็บไว้: เมื่อการเรียกล้มเหลว ให้อ่านตัวเลขก่อน 401 มักหมายถึงคีย์ 404 มักหมายถึงที่อยู่หรือ model id และ curl ช่วยตัดสินได้ วิธีนี้แก้ข้อผิดพลาดเหล่านี้ได้เกือบทั้งหมดก่อนที่คุณจะเปิด log สักไฟล์



