รหัสข้อผิดพลาด (Error codes)

ทุก response ของ Open API จะมี field status ครอบไว้เสมอ (ok หรือ error) เพื่อให้ฝั่งที่เรียกแยกสำเร็จ/ผิดพลาดได้ง่าย

รูปแบบ response

สำเร็จ
{
  "status": "ok",
  "data": { ... }
}
ผิดพลาด
{
  "status": "error",
  "error": {
    "code": "not_found",
    "message": "Not found, or it isn't owned by your account.",
    "errorId": null
  }
}
  • status — ok เมื่อสำเร็จ (ข้อมูลอยู่ใน data) หรือ error เมื่อผิดพลาด (รายละเอียดอยู่ใน error)
  • error.code — รหัสคงที่สำหรับให้โปรแกรมเช็ก (ดูความหมายในตารางด้านล่าง)
  • error.message — ข้อความอธิบายสำหรับคน
  • error.errorId — รหัสอ้างอิงเฉพาะครั้ง (มีเฉพาะ error ฝั่งเซิร์ฟเวอร์ 500); ปกติเป็น null

ความหมายของแต่ละ code

codeHTTPหมายความว่าเกิดเมื่อ
unauthorized 401 คีย์ไม่ถูกต้อง / หาย / ถูกปิด ไม่ได้ส่ง header X-Api-Key, คีย์ผิด, หรือคีย์ถูกปิดใช้งานที่ /me/api
not_found 404 ไม่พบข้อมูล หรือไม่ใช่ของบัญชีคุณ จึงเข้าถึงไม่ได้ เรียกทรัพยากรที่ไม่มีอยู่ หรือเป็นของผู้ใช้คนอื่น (จงใจไม่บอกต่างกัน เพื่อกันการเดา ID ของคนอื่น)
bad_cursor 400 ค่า cursor ไม่ถูกต้อง ส่งพารามิเตอร์ after ที่ไม่ใช่ค่า nextCursor ที่ระบบให้มาจาก response ก่อนหน้า
rate_limited 429 เรียกถี่เกินลิมิต เกิน 120 คำขอ/นาที ต่อคีย์ — รอแล้วลองใหม่ ดูจำนวนวินาทีที่ header Retry-After
internal_error 500 ข้อผิดพลาดภายในระบบ (ไม่คาดคิด) เหตุไม่คาดคิดฝั่งเซิร์ฟเวอร์ — response จะมี errorId มาด้วย ให้แจ้งผู้ดูแลพร้อม errorId นี้เพื่อให้ตามรอยได้

errorId คืออะไร

เมื่อเกิดข้อผิดพลาดที่ไม่คาดคิดฝั่งเซิร์ฟเวอร์ (internal_error / HTTP 500) ระบบจะสร้าง errorId เฉพาะของครั้งนั้น แล้วส่งกลับมาใน response พร้อมบันทึกไว้ในระบบ log ของเซิร์ฟเวอร์ — เวลามีปัญหา ให้ แจ้งผู้ดูแลพร้อม errorId นี้ เพื่อให้ตามหา log ของเหตุการณ์นั้นได้ตรงตัว

รูปแบบ: E-yyyyMMddHHmmss-xxxxxx (เวลา + เลขสุ่ม) เช่น

{
  "status": "error",
  "error": {
    "code": "internal_error",
    "message": "An unexpected server error occurred. Please retry, or contact support with this errorId.",
    "errorId": "E-20260617143012-a1b2c3"
  }
}

ติดปัญหาการใช้งาน หรืออยากสอบถาม?

ทักได้ที่ LINE @happym หรือโทร 085-926-9797 (คุณพล) ได้เลย