v1REST · JSON

SNSOTP OTP API

REST API สำหรับการยืนยันด้วย SMS สั่งหมายเลขสำหรับบริการใดก็ได้จาก 182 บริการในประเทศใดก็ได้จาก 154 ประเทศ อ่านรหัสครั้งเดียวจากคำสั่งซื้อ และรับเงินคืนเต็มจำนวนเมื่อไม่มีรหัสมาถึงภายใน 20 นาที

ทุก endpoint รับพารามิเตอร์เป็น query parameters (GET) หรือเป็น form fields หรือ JSON (POST) คำตอบเป็น JSON เงินเป็นสตริง USD ทศนิยมสองตำแหน่ง และเวลาเป็น ISO 8601 ใน UTC

เซิร์ฟเวอร์

https://snsotp.com/api/v1

การยืนยันตัวตนBearer token

API key ของคุณจาก console ส่งเป็น Authorization: Bearer sok_...

การยืนยันตัวตน

สร้างคีย์ในหน้า API ของ console คีย์จะขึ้นต้นด้วย sok_ และแสดงเพียงครั้งเดียว ดังนั้นให้เก็บไว้ในตัวแปรแวดล้อม การแทนที่คีย์จะหยุดคีย์เก่าทันที การเรียก /services, /countries และ /prices ทำงานได้โดยไม่ต้องใช้คีย์

Header
Authorization: Bearer sok_your_key_here

คีย์ยังสามารถส่งเป็น key query parameter หรือ form field ซึ่งช่วยเครื่องมือที่ไม่สามารถตั้งค่า headers ได้

เริ่มต้นอย่างรวดเร็ว

สั่งหมายเลข มอบให้แอป แล้วตรวจสอบคำสั่งซื้อจนกว่าจะมีรหัส กระบวนการเดียวกันในสี่ภาษา:

# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us

# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"

GET/services

ทุกบริการพร้อมรหัสและราคาต่ำสุด · ไม่ต้องใช้คีย์

ทุกบริการที่คุณสามารถสั่งซื้อ พร้อมรหัส (ใช้เป็น service ในการเรียกอื่น) ประเภท และราคาต่ำสุดในทุกประเทศ ไม่ต้องใช้คีย์

RequestcURL
curl https://snsotp.com/api/v1/services
Response200
{
  "services": [
    { "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
    { "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
  ]
}

GET/countries

ทุกประเทศพร้อมรหัสและรหัสโทร · ไม่ต้องใช้คีย์

ทุกประเทศพร้อมรหัส (ISO 3166 alpha-2 ในตัวพิมพ์เล็ก ใช้เป็น country) และรหัสโทร ไม่ต้องใช้คีย์

RequestcURL
curl https://snsotp.com/api/v1/countries
Response200
{
  "countries": [
    { "code": "us", "name": "United States", "dial_code": "1" },
    { "code": "gb", "name": "United Kingdom", "dial_code": "44" }
  ]
}

GET/prices

ราคาสำหรับบริการ, ประเทศ หรือทั้งสองอย่าง · ไม่ต้องใช้คีย์

ราคาต่อคำสั่งซื้อสำหรับหนึ่งบริการในทุกประเทศ หนึ่งประเทศสำหรับทุกบริการ หรือหนึ่งคู่ ส่งตัวกรองอย่างน้อยหนึ่งตัว ไม่ต้องใช้คีย์

Parameters

  • servicestring

    รหัสบริการ เช่น whatsapp

  • countrystring

    รหัสประเทศ เช่น us

RequestcURL
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
Response200
{
  "prices": [
    { "service": "whatsapp", "country": "us", "price": "0.93" }
  ]
}

GET/balance

เครดิตของคุณใน USD · ต้องใช้คีย์

เครดิตของคุณใน USD

RequestcURL
curl https://snsotp.com/api/v1/balance \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "balance": "42.50",
  "currency": "USD"
}

POST/orders

สั่งซื้อหมายเลขสำหรับบริการและประเทศ · ต้องใช้คีย์

สั่งหมายเลขและคิดราคา คำตอบมีหมายเลขเต็ม (phone) และไม่มีรหัสโทร (number) คำสั่งซื้อจะเปิดไว้ 20 นาที หากไม่มีรหัสในเวลานั้น ราคาจะคืนสู่เครดิตของคุณโดยอัตโนมัติ คำตอบสถานะ 201

Parameters

  • servicestringจำเป็น

    รหัสบริการจาก GET /services

  • countrystringจำเป็น

    รหัสประเทศจาก GET /countries

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us
Response201
{
  "order": {
    "id": "OT-7K2M9QX4PB",
    "service": "whatsapp",
    "country": "us",
    "phone": "+13475550182",
    "number": "3475550182",
    "dial_code": "1",
    "price": "0.93",
    "status": "waiting",
    "code": null,
    "sms": null,
    "codes": [],
    "expires_at": "2026-11-03T12:20:00.000Z"
  },
  "window_minutes": 20
}

GET/orders/{id}

สถานะ, รหัส และข้อความ SMS ของคำสั่งซื้อหนึ่งรายการ · ต้องใช้คีย์

หนึ่งคำสั่งซื้อพร้อมสถานะ รหัสล่าสุด ข้อความ SMS ล่าสุด และทุกรหัสที่ได้รับจนถึงตอนนี้ ตรวจสอบทุก 3 ถึง 5 วินาทีในขณะที่สถานะเป็น waiting

Parameters

  • idpathจำเป็น

    รหัสคำสั่งซื้อจาก POST /orders

RequestcURL
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": {
    "id": "OT-7K2M9QX4PB",
    "service": "whatsapp",
    "country": "us",
    "phone": "+13475550182",
    "number": "3475550182",
    "price": "0.93",
    "status": "received",
    "code": "284913",
    "sms": "Your WhatsApp code is 284913",
    "expires_at": "2026-11-03T12:20:00.000Z"
  }
}

GET/orders

คำสั่งซื้อที่เปิดอยู่ของคุณ (หรือทั้งหมดด้วย status=all) · ต้องใช้คีย์

คำสั่งซื้อที่เปิดอยู่ของคุณ เรียงจากใหม่สุด เพิ่ม status=all สำหรับคำสั่งซื้อล่าสุดในทุกสถานะ

Parameters

  • statusstring

    open (ค่าเริ่มต้น) หรือ all

  • limitnumber

    1 ถึง 100 ค่าเริ่มต้น 50

RequestcURL
curl "https://snsotp.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "orders": [
    { "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
  ]
}

POST/orders/{id}/resend

ขอรหัสอีกครั้งบนหมายเลขเดิม · ต้องใช้คีย์

ขอรหัสอื่นในหมายเลขเดียวกันหลังจากรหัสแรก ภายในเวลา window โดยไม่มีค่าใช้จ่ายเพิ่มเติม จากนั้นเรียก SMS ใหม่ในแอป waiting_for_resend เป็น true จนกว่าจะมาถึง

Parameters

  • idpathจำเป็น

    รหัสคำสั่งซื้อ

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}

POST/orders/{id}/finish

ปิดคำสั่งซื้อหลังจากใช้รหัสแล้ว · ต้องใช้คีย์

ปิดคำสั่งซื้อที่ได้รับรหัสแล้วเมื่อคุณใช้มันเสร็จสิ้น การ finish เป็นทางเลือก: คำสั่งซื้อที่เปิดอยู่จะปิดโดยตัวเองเมื่อ window สิ้นสุด

Parameters

  • idpathจำเป็น

    รหัสคำสั่งซื้อ

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}

POST/orders/{id}/cancel

ยกเลิกก่อนได้รับรหัส, คืนเงินเต็มจำนวน · ต้องใช้คีย์

ยกเลิกคำสั่งซื้อก่อนที่รหัสจะมาถึงและคืนเงินเต็มจำนวนสู่เครดิตของคุณทันที หลังจากมีรหัสแล้ว การยกเลิกจะตอบ has_code

Parameters

  • idpathจำเป็น

    รหัสคำสั่งซื้อ

RequestcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer $SNSOTP_KEY"
Response200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}

สถานะคำสั่งซื้อ

ค่าสถานะ
  • waitingหมายเลขพร้อมแล้วและยังไม่มี SMS มาถึง สามารถยกเลิกได้
  • receivedมีรหัสมาถึงอย่างน้อยหนึ่งรหัส code และ sms เก็บรหัสล่าสุด
  • finishedปิดหลังจากมีรหัส โดย finish หรือเมื่อ window สิ้นสุด
  • refundedไม่มีรหัสมาถึงใน 20 นาที เงินเต็มจำนวนกลับสู่เครดิตของคุณ
  • canceledยกเลิกก่อนมีรหัส เงินเต็มจำนวนกลับสู่เครดิตของคุณ

ข้อผิดพลาด

ข้อผิดพลาดใช้ HTTP status และ body พร้อมรหัสที่คงที่และข้อความที่อ่านได้

HTTP status และรหัส
  • 400missing_filter, bad_jsonค่าที่จำเป็นหายไปหรือไม่สามารถอ่าน body ได้
  • 401no_key, bad_keyคีย์หายไป ผิด หรือถูกลบ
  • 402no_balanceเครดิตไม่เพียงพอสำหรับคำสั่งซื้อนี้ เพิ่มเครดิตใน console
  • 404unknown_service, unknown_country, not_sold, not_foundรหัสหรือคำสั่งซื้อไม่มีอยู่ หรือคู่ไม่มีการขาย
  • 409too_many_open, has_code, not_ready, no_numbersการกระทำไม่สอดคล้องกับสถานะคำสั่งซื้อ หรือไม่มีหมายเลขว่างในตอนนี้ (ไม่มีการคิดเงิน)
  • 429rate_limitedมากกว่า 300 คำขอในหนึ่งนาทีด้วยคีย์เดียว
ข้อผิดพลาด body402
{
  "error": {
    "code": "no_balance",
    "message": "Not enough credit. Add credit in the console."
  }
}

ข้อจำกัดอัตรา

  • 300 คำขอต่อนาทีต่อคีย์ เกินนั้น API จะตอบ 429 rate_limited สำหรับส่วนที่เหลือของนาที
  • สูงสุด 20 คำสั่งซื้อที่เปิดอยู่ต่อบัญชี finish หรือยกเลิกหนึ่งรายการเพื่อเปิดอีกรายการ
  • ตรวจสอบคำสั่งซื้อทุก 3 ถึง 5 วินาที โดยปกติรหัสจะมาถึงภายในหนึ่งนาที

รูปแบบการเปิดใช้งาน SMS

สคริปต์ที่เขียนสำหรับรูปแบบ handler_api.php ทั่วไปทำงานกับ API key เดียวกัน: เปลี่ยนที่อยู่ฐานเป็น https://snsotp.com/stubs/handler_api.php และเก็บการดำเนินการไว้ รหัสบริการและประเทศจะเหมือนกับใน REST API

การดำเนินการ
  • getBalance

    ACCESS_BALANCE:42.50

  • getServicesList

    รายการบริการในรูปแบบ JSON

  • getCountries

    แผนที่ประเทศในรูปแบบ JSON

  • getPricesservice, country (ไม่จำเป็น)

    JSON {country: {service: {cost, count}}}

  • getNumberservice, country

    ACCESS_NUMBER:<id>:<phone>

  • getStatusid

    STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL

  • setStatusid, status 1 / 3 / 6 / 8

    ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL

RequestcURL
curl "https://snsotp.com/stubs/handler_api.php\
?api_key=$SNSOTP_KEY&action=getNumber\
&service=telegram&country=gb"

ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182

ค่าของ setStatus: 1 พร้อมใช้งาน, 3 รหัสอื่น, 6 เสร็จสิ้น, 8 ยกเลิกพร้อมคืนเงินเต็มจำนวน

เอกสาร API OTP: SMS Verification REST API | SNSOTP