กลับไปที่บล็อก

การแก้ไขปัญหาคู่มือ

ข้อผิดพลาด API 401 หรือ 404: คีย์, base URL หรือ model id ผิด

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

โดย CheapTokens Teamเผยแพร่เมื่อ ใช้เวลาอ่าน 5 นาที

การ์ดข้อผิดพลาดที่มีสถานะ 401 พร้อมคำใบ้ให้ตรวจคีย์, base URL และ model id
ในหน้านี้
  1. วิธีแยกแยะอย่างรวดเร็ว
  2. 401: คีย์ไม่ตรงกับ endpoint
  3. 404 ทุกโมเดล: ที่อยู่ผิด
  4. 404 แค่โมเดลเดียว: model id
  5. พิสูจน์การแก้ไขด้วยคำสั่ง curl หนึ่งคำสั่ง
  6. ถ้ายังไม่ทำงาน

คำขอของคุณล้มเหลวพร้อมรหัสสถานะ และคุณไม่แน่ใจว่าจะเริ่มแก้ตรงไหนก่อน คำตอบสั้น ๆ: 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 ไม่มีอะไรพัง คีย์แค่เป็นของบ้านอื่น

สิ่งที่ต้องตรวจ:

  1. คีย์ออกโดย provider ไหน? ต้องเป็นรายเดียวกับที่อยู่ที่คุณเรียก คีย์ของบริการหนึ่งใช้ไม่ได้กับอีกบริการ
  2. อักขระแปลกปลอม ช่องว่างหรือการขึ้นบรรทัดใหม่ที่ติดมากับคีย์ หรือเครื่องหมายคำพูดที่หลุดเข้าไปในค่า
  3. เครื่องมืออ่านคีย์จากที่ไหน ตัวแปรสภาพแวดล้อมที่ตั้งไว้ในเทอร์มินัลหนึ่งแต่ไม่ได้ตั้งในเทอร์มินัลที่เอดิเตอร์ของคุณเริ่มมา เป็นสาเหตุที่พบบ่อย ถ้าเครื่องมือมีทั้งไฟล์ config และตัวแปรสภาพแวดล้อม ให้หาว่าอันไหนมีผลเหนือกว่า
  4. คีย์ที่ถูกเพิกถอนหรือลบ คีย์ที่คุณลบหรือเพิกถอนจะหยุดทำงาน — สร้างใหม่แล้วใส่ใน config

ถ้าคุณไม่แน่ใจว่าคีย์ทำงานอย่างไรหรือควรเก็บไว้ที่ไหน API key คืออะไรและวิธีเก็บอย่างปลอดภัย อธิบายไว้ด้วยคำง่าย ๆ

404 ทุกโมเดล: ที่อยู่ผิด#

base URL สำหรับ CheapTokens คือ https://api.cheaptokens.dev/v1 เครื่องมือและ 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-V4-Flash แต่ API ต้องการ gateway id เต็ม พร้อมคำนำหน้าผู้พัฒนาและรุ่น:

ที่คุณเห็น สิ่งที่ API ต้องการ
DeepSeek-V4-Flash deepseek-ai/DeepSeek-V4-Flash-0731
GLM-5.3-Flash zai-org/GLM-5.3-Flash
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7

id แบบสั้นจากป้ายราคา API ไม่รับ และการสะกดสำคัญ: ตัวพิมพ์ใหญ่ เครื่องหมายทับ และส่วนต่อท้าย -0731 คัดลอก id จากเอกสาร CheapTokens แทนการพิมพ์จากความจำ — provider ต่าง ๆ ตั้งชื่อโมเดลเดียวกันไม่เหมือนกัน หากต้องการดู id ที่ใช้ได้กับคีย์ของคุณจริง ๆ ให้เรียก GET https://api.cheaptokens.dev/v1/models ด้วย Authorization header เดียวกัน แล้วคัดลอก id จากรายการ:

bash
curl https://api.cheaptokens.dev/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

ถ้า logic การตั้งชื่อในตารางดูแปลก ๆ วิธีอ่านชื่อโมเดล AI อธิบาย alias กับเวอร์ชันที่ปักหมุดไว้

พิสูจน์การแก้ไขด้วยคำสั่ง curl หนึ่งคำสั่ง#

เอาเครื่องมือออกจากภาพแล้วเรียก API โดยตรง แทนที่ตัวแทนคีย์ด้วยคีย์ของคุณเอง:

bash
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://api.cheaptokens.dev/v1 หรือไม่มี /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 สักไฟล์