ไทย

API การยืนยัน SMS

แก้ไขล่าสุดเมื่อ 2026/11/03

การส่งคำสั่งไปยัง API

สอง API ใช้คีย์เดียวกัน: REST API ที่ใช้ JSON และรูปแบบการเปิดใช้งาน SMS ที่เครื่องมือหลายตัวใช้อยู่แล้ว สร้างคีย์ในหน้า API key ของคอนโซล; คีย์จะแสดงเพียงครั้งเดียว จำกัด: 300 คำขอต่อนาทีต่อคีย์ แต่ละคำสั่งมีเวลารอรับรหัส 20 นาที เหมือนกับในคอนโซล

# REST API (JSON)
curl https://virtualsns.com/api/v1/balance -H "Authorization: Bearer YOUR_KEY"

# SMS activation format
curl "https://virtualsns.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getBalance"
รหัสบริการและรหัสประเทศ

รหัสบริการคือชื่อในที่อยู่หน้าบริการของเรา เช่น kakaotalk, line, wechat, zalo, naver, shopee และ whatsapp รหัสประเทศคือรหัส ISO ในตัวพิมพ์เล็ก: kr, jp, id, ph, vn, th, us GET /services และ GET /countries จะส่งกลับรายการทั้งหมด

ขั้นตอนทั่วไป
  1. สั่งเบอร์ด้วยบริการและประเทศ บันทึก id
  2. ป้อนเบอร์ในแอปและขอให้ส่ง SMS
  3. อ่านคำสั่งซื้อทุก 4 วินาทีจนกว่าจะได้รับรหัส
  4. ต้องการ SMS อีกครั้ง? ขอรหัสอีกครั้ง แล้วอ่านอีกครั้ง เสร็จสิ้น: จบคำสั่งซื้อ
  5. ไม่มีรหัส? ยกเลิกเพื่อรับเงินคืนเต็มจำนวน โดยไม่ต้องโทรออก เงินคืนจะเกิดขึ้นโดยอัตโนมัติเมื่อหน้าต่างสิ้นสุดลง

Python

import os, time, requests

API = "https://virtualsns.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['VIRTUALSNS_KEY']}"}

order = requests.post(f"{API}/orders", headers=H,
    data={"service": "kakaotalk", "country": "kr"}).json()["order"]
print("Use this number:", order["phone"])

while True:
    o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
    if o["code"] or o["status"] in ("refunded", "canceled"):
        break
    time.sleep(4)
print("Code:", o["code"])

Node.js

const API = "https://virtualsns.com/api/v1";
const H = { Authorization: `Bearer ${process.env.VIRTUALSNS_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H,
  body: new URLSearchParams({ service: "line", country: "jp" }),
}).then((r) => r.json());
console.log("Use this number:", order.phone);

let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
  await new Promise((r) => setTimeout(r, 4000));
  ({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);
ส่งกลับรหัสข้อผิดพลาด

REST API

ข้อผิดพลาดจะมาในรูปแบบ JSON: {"error":{"code","message"}} พร้อมสถานะ HTTP เหล่านี้:

400ฟิลด์หายไปหรือไม่ถูกต้อง (missing_filter, bad_json)
401ไม่มีคีย์หรือคีย์ผิด (no_key, bad_key)
402เครดิตไม่เพียงพอ (no_balance)
404บริการ ประเทศ คำสั่งซื้อ หรือจุดสิ้นสุดที่ไม่รู้จัก
409คำสั่งซื้อไม่สามารถทำได้ในตอนนี้ (has_code, not_ready, too_many_open, no_numbers)
429มากกว่า 300 คำขอในหนึ่งนาที (rate_limited)

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

BAD_KEYไม่มีหรือคีย์ API ผิด
BAD_ACTIONการดำเนินการที่ไม่รู้จัก
BAD_SERVICEรหัสบริการที่ไม่รู้จัก
BAD_COUNTRYบริการนี้ไม่ขายในประเทศนั้น
NO_BALANCEเครดิตไม่เพียงพอ
NO_NUMBERSไม่มีหมายเลขที่พร้อมใช้งานในตอนนี้ ลองอีกครั้งในไม่ช้า
NO_ACTIVATIONรหัสเปิดใช้งานที่ไม่รู้จัก หรือไม่ใช่ของคุณ
EARLY_CANCEL_DENIEDรหัสได้มาถึงแล้ว ดังนั้นไม่สามารถยกเลิกการเปิดใช้งานได้
TOO_MANY_REQUESTSมากกว่า 300 คำขอในหนึ่งนาที
NO_ACTIVATIONSมีการเปิดใช้งาน 20 รายการแล้ว

วิธีการ REST API

https://virtualsns.com/api/v1

GET/services

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

curl "https://virtualsns.com/api/v1/services"
{"services":[{"code":"kakaotalk","name":"KakaoTalk","category":"social","from":"0.06"}]}
GET/countries

ทุกรหัสประเทศ (ISO, ตัวพิมพ์เล็ก) พร้อมชื่อและรหัสโทร ไม่จำเป็นต้องใช้คีย์

curl "https://virtualsns.com/api/v1/countries"
{"countries":[{"code":"kr","name":"South Korea","dial_code":"82"}]}
GET/prices

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

curl "https://virtualsns.com/api/v1/prices?service=line&country=jp"
{"prices":[{"service":"line","country":"jp","price":"5.40"}]}
GET/balance

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

curl "https://virtualsns.com/api/v1/balance" \
  -H "Authorization: Bearer YOUR_KEY"
{"balance":"25.00","currency":"USD"}
POST/orders

ซื้อหมายเลข (201) ส่งกลับคำสั่งซื้อพร้อมหมายเลขโทรศัพท์และเวลาที่หน้าต่างสิ้นสุด

curl -X POST https://virtualsns.com/api/v1/orders \
  -H "Authorization: Bearer YOUR_KEY" \
  -d service=kakaotalk -d country=kr
{"order":{"id":"AC-7K2M9QX4PB","service":"kakaotalk","country":"kr","phone":"+821023456789","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}
GET/orders/AC-7K2M9QX4PB

หนึ่งคำสั่งซื้อพร้อมสถานะและทุกรหัสที่ได้รับ สถานะ: รอ, ได้รับ, เสร็จสิ้น, คืนเงิน, ยกเลิก

curl "https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB" \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482193","sms":"[Kakao] Verification code [482193]"}}
GET/orders

คำสั่งซื้อที่เปิดอยู่ของคุณ (status=all สำหรับ 100 รายการล่าสุด)

curl "https://virtualsns.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer YOUR_KEY"
{"orders":[...]}
POST/orders/AC-7K2M9QX4PB/resend

ขอรหัสอีกครั้งบนหมายเลขเดียวกัน หลังจากรหัสแรกและขณะที่หน้าต่างยังเปิดอยู่ ไม่มีค่าใช้จ่ายเพิ่มเติม

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/resend \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"received","waiting_for_resend":true}}
POST/orders/AC-7K2M9QX4PB/finish

ปิดคำสั่งซื้อที่ได้รับรหัสแล้ว

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/finish \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"finished"}}
POST/orders/AC-7K2M9QX4PB/cancel

ยกเลิกก่อนที่รหัสจะมาถึง ราคาเต็มจะกลับไปที่เครดิตของคุณ

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"canceled","refunded":"8.40"}}

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

https://virtualsns.com/stubs/handler_api.php

วิธีการ getBalance

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

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getBalance
ACCESS_BALANCE:12.50
วิธีการ getServicesList

รหัสบริการที่คุณสามารถซื้อได้ (JSON)

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getServicesList
{"status":"success","services":[{"code":"line","name":"LINE"}]}
วิธีการ getCountries

รหัสประเทศ (ISO, ตัวพิมพ์เล็ก) และรหัสโทร (JSON)

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getCountries
{"jp":{"name":"Japan","dial":"81"}}
วิธีการ getPrices

ราคาเป็น USD ต่อประเทศและบริการ ทั้งสองตัวกรองเป็นทางเลือก

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getPrices&service=line&country=jp
{"jp":{"line":{"cost":5.4,"count":100}}}
วิธีการ getNumber

ซื้อหมายเลข ส่งกลับรหัสเปิดใช้งานและหมายเลขพร้อมรหัสประเทศ

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getNumber&service=line&country=jp
ACCESS_NUMBER:AC-7K2M9QX4PB:819012345678
วิธีการ getStatus

STATUS_WAIT_CODE (ยังไม่ได้รับรหัส), STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (ขอรหัสอีกครั้ง), STATUS_CANCEL (ยกเลิกหรือคืนเงินแล้ว)

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getStatus&id=AC-7K2M9QX4PB
STATUS_OK:482913
วิธีการ setStatus

status=1 พร้อมใช้งาน (ACCESS_READY), 3 ขอรหัสอีกครั้ง (ACCESS_RETRY_GET), 6 เสร็จสิ้น (ACCESS_ACTIVATION), 8 ยกเลิกพร้อมคืนเงินเต็มจำนวนเมื่อยังไม่ได้รับรหัส (ACCESS_CANCEL)

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=setStatus&id=AC-7K2M9QX4PB&status=3
ACCESS_RETRY_GET
SMS Verification API สำหรับเบอร์ KakaoTalk, LINE และ WeChat