SIM Swap

SIM Swap (การเปลี่ยนซิม) หมายถึงกระบวนการผูกหมายเลขโทรศัพท์ของผู้ใช้กับซิมการ์ดใหม่ ซึ่งมักเกิดขึ้นในสถานการณ์ต่อไปนี้: การแจ้งหายและขอซิมใหม่, การอัปเกรดซิมการ์ด, การย้ายค่ายเบอร์เดิม, การเปิดบริการซิมเสริม หรือผู้ใช้ใหม่ได้รับหมายเลขที่เคยมีผู้ใช้งานมาก่อน เป็นต้น

ผู้โจมตีอาจใช้ SIM Swap เพื่อปล้นหมายเลขโทรศัพท์ของผู้อื่น ดักจับรหัสยืนยันทาง SMS จากนั้นจึงรีเซ็ตรหัสผ่านและยึดครองบัญชี SIM Swap API สามารถตรวจจับได้แบบเรียลไทม์ว่าหมายเลขโทรศัพท์ที่ระบุมีการเปลี่ยนซิมการ์ดหรือไม่ ช่วยให้ธุรกิจสามารถระบุความเสี่ยงที่อาจเกิดจากการปล้นซิมในขั้นตอนสำคัญ เช่น การยืนยัน SMS OTP และลดโอกาสที่บัญชีจะถูกยึดครอง

หมายเหตุ: ปัจจุบันรองรับการตรวจสอบ SIM Swap สำหรับหมายเลขในประเทศ/ภูมิภาคต่อไปนี้เท่านั้น: บราซิล, อินโดนีเซีย

API นี้มีสองอินเทอร์เฟซอิสระ:

  • Retrieve Date: ตรวจสอบเวลาที่เกิด SIM Swap ครั้งล่าสุดของหมายเลขโทรศัพท์ที่ระบุ
  • Check: ตรวจจับว่าหมายเลขโทรศัพท์ที่ระบุมีการเกิด SIM Swap ในช่วง N ชั่วโมงที่ผ่านมาหรือไม่

การยืนยันการเรียกใช้

ทั้งสองอินเทอร์เฟซนี้ใช้วิธีการยืนยันตัวตนแบบ HTTP Basic Auth โดยเพิ่ม Authorization ใน HTTP Header:

Authorization: Basic ${base64_auth_string}
              
              Authorization: Basic ${base64_auth_string}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

อัลกอริทึมการสร้าง ${base64_auth_string} คือ: base64(dev_key:dev_secret)

สำหรับรายละเอียดเพิ่มเติม โปรดดู การยืนยันการเรียกใช้ เพื่อเรียนรู้วิธีการทำ API Authentication


Retrieve Date

ตรวจสอบเวลาที่เกิด SIM Swap ครั้งล่าสุดของหมายเลขโทรศัพท์ที่ระบุ

URL การเรียกใช้

POST https://otp.api.engagelab.cc/v1/sim-swap/retrieve-date

ตัวอย่างคำขอ

ออบเจ็กต์คำขอแสดงในรูปแบบ JSON ดังนั้น Header คำขอต้องมี Content-Type: application/json

Header คำขอ

POST /v1/sim-swap/retrieve-date HTTP/1.1 Content-Type: application/json Authorization: Basic ${base64_auth_string}
              
              POST /v1/sim-swap/retrieve-date HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

Body คำขอ

{ "phone_number": "+381692223535" }
              
              {
  "phone_number": "+381692223535"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์คำขอ

พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
phone_number String จำเป็น หมายเลขโทรศัพท์เป้าหมายที่ต้องการตรวจสอบ แนะนำให้ใช้รูปแบบ E.164

พารามิเตอร์ส่งคืน

ส่งคืนสำเร็จ

ฟิลด์ ประเภท ตัวเลือก คำอธิบาย
request_id String จำเป็น ID บันทึกการตรวจสอบครั้งนี้
latest_sim_change String / null จำเป็น เวลาที่เกิด SIM Swap ครั้งล่าสุด ในรูปแบบ RFC3339; หากไม่เคยเปลี่ยนซิมจะคืนค่าเวลาเปิดใช้งานครั้งแรก; หากไม่สามารถคืนค่าข้อมูลได้เนื่องจากข้อจำกัดทางกฎหมายความเป็นส่วนตัวจะเป็น null

ตัวอย่างการส่งคืนสำเร็จ:

{ "request_id": "2055136570436075520", "latest_sim_change": "2026-05-01T15:00:00Z" }
              
              {
  "request_id": "2055136570436075520",
  "latest_sim_change": "2026-05-01T15:00:00Z"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ส่งคืนล้มเหลว

HTTP Status Code เป็น 4xx หรือ 5xx และ Body การตอบกลับมีฟิลด์ดังนี้:

ฟิลด์ ประเภท ตัวเลือก คำอธิบาย
code int จำเป็น รหัสข้อผิดพลาด ดูรายละเอียดที่ รหัสข้อผิดพลาด
message String จำเป็น รายละเอียดข้อผิดพลาด

ตัวอย่างการส่งคืนล้มเหลวที่พบบ่อย:

ตัวอย่างพารามิเตอร์ผิดพลาด:

{ "code": 3002, "message": "invalid phone_number" }
              
              {
  "code": 3002,
  "message": "invalid phone_number"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างยอดเงินไม่เพียงพอ:

{ "code": 3005, "message": "balance not enough" }
              
              {
  "code": 3005,
  "message": "balance not enough"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างหมายเลขไม่อยู่ในพื้นที่ให้บริการ:

{ "code": 5101, "message": "phone number is not in sim swap service coverage" }
              
              {
  "code": 5101,
  "message": "phone number is not in sim swap service coverage"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างความล้มเหลวทั่วไป:

{ "code": 5100, "message": "failed to retrieve sim swap date" }
              
              {
  "code": 5100,
  "message": "failed to retrieve sim swap date"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

Check

ตรวจจับว่าหมายเลขโทรศัพท์ที่ระบุมีการเกิด SIM Swap ในช่วง N ชั่วโมงที่ผ่านมาหรือไม่

URL การเรียกใช้

POST https://otp.api.engagelab.cc/v1/sim-swap/check

ตัวอย่างคำขอ

ออบเจ็กต์คำขอแสดงในรูปแบบ JSON และ Header คำขอก็ต้องมี Content-Type: application/json เช่นกัน

Header คำขอ

POST /v1/sim-swap/check HTTP/1.1 Content-Type: application/json Authorization: Basic ${base64_auth_string}
              
              POST /v1/sim-swap/check HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

Body คำขอ

{ "phone_number": "+381692223535", "max_age": 400 }
              
              {
  "phone_number": "+381692223535",
  "max_age": 400
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์คำขอ

พารามิเตอร์ ประเภท ตัวเลือก คำอธิบาย
phone_number String จำเป็น หมายเลขโทรศัพท์เป้าหมายที่ต้องการตรวจสอบ แนะนำให้ใช้รูปแบบ E.164
max_age Integer จำเป็น หน้าต่างการตรวจสอบ หน่วยเป็นชั่วโมง ช่วงค่า 1 ~ 2400

พารามิเตอร์ส่งคืน

ส่งคืนสำเร็จ

ฟิลด์ ประเภท ตัวเลือก คำอธิบาย
request_id String จำเป็น ID บันทึกการตรวจสอบครั้งนี้
swapped Boolean จำเป็น มีการเกิด SIM Swap ในช่วงเวลาที่กำหนดหรือไม่

ตัวอย่างการส่งคืนสำเร็จ:

{ "request_id": "2055136570293469184", "swapped": true }
              
              {
  "request_id": "2055136570293469184",
  "swapped": true
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ส่งคืนล้มเหลว

โครงสร้างเหมือนกับอินเทอร์เฟซ Retrieve Date ตัวอย่างการส่งคืนล้มเหลวเฉพาะ:

พารามิเตอร์ผิดพลาด (max_age อยู่นอกช่วง):

{ "code": 3002, "message": "max_age must be between 1 and 2400" }
              
              {
  "code": 3002,
  "message": "max_age must be between 1 and 2400"
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

รหัสข้อผิดพลาด

รหัสข้อผิดพลาด HTTP Code คำอธิบาย
1000 500 ข้อผิดพลาดภายใน
2001 401 การยืนยันตัวตนล้มเหลว ไม่ได้แนบ token ที่ถูกต้อง
2002 401 การยืนยันตัวตนล้มเหลว token หมดอายุหรือถูกปิดใช้งาน
2004 403 ไม่มีสิทธิ์เรียกใช้ API นี้
3001 400 รูปแบบพารามิเตอร์คำขอไม่ถูกต้อง โปรดตรวจสอบว่าเนื้อหา JSON ตรงตามรูปแบบพารามิเตอร์หรือไม่
3002 400 พารามิเตอร์คำขอผิดพลาด โปรดตรวจสอบว่าพารามิเตอร์คำขอตรงตามข้อกำหนดหรือไม่
3005 400 ยอดเงินไม่เพียงพอ
5100 400 SIM Swap ล้มเหลวทั่วไป
5101 400 หมายเลขนี้ไม่อยู่ในพื้นที่ให้บริการ SIM Swap รวมถึงประเทศ ผู้ให้บริการ และกลุ่มหมายเลขที่ยังไม่รองรับในขณะนี้ หรือไม่สามารถระบุหมายเลขได้
Icon Solid Transparent White Qiyu
ติดต่อฝ่ายขาย