SNSOTP OTP API
Một REST API để xác minh SMS. Đặt một số cho một trong 182 dịch vụ tại một trong 154 quốc gia, đọc mã một lần từ đơn hàng và nhận lại toàn bộ giá tiền nếu không có mã nào đến trong 20 phút.
Mọi endpoint chấp nhận tham số dưới dạng tham số truy vấn (GET) hoặc dưới dạng trường biểu mẫu hoặc JSON (POST). Câu trả lời là JSON; tiền là chuỗi USD với hai chữ số thập phân và thời gian là ISO 8601 theo UTC.
https://snsotp.com/api/v1
Khóa API của bạn từ console, được gửi dưới dạng Authorization: Bearer sok_...
Xác thực
Tạo một khóa trên trang API của console. Nó bắt đầu với sok_ và chỉ hiển thị một lần, vì vậy hãy lưu trữ nó trong một biến môi trường. Thay thế khóa sẽ dừng khóa cũ ngay lập tức. Các cuộc gọi đến /services, /countries và /prices hoạt động mà không cần khóa.
Authorization: Bearer sok_your_key_here
Khóa cũng có thể được gửi dưới dạng tham số truy vấn hoặc trường biểu mẫu key, điều này giúp các công cụ không thể thiết lập header.
Bắt đầu nhanh
Đặt một số, cung cấp nó cho ứng dụng, sau đó kiểm tra đơn hàng cho đến khi mã xuất hiện. Quy trình tương tự bằng bốn ngôn ngữ:
# 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
Mọi dịch vụ với mã và giá thấp nhất · không cần khóa
Mọi dịch vụ bạn có thể đặt, với mã của nó (sử dụng nó làm service trong các cuộc gọi khác), danh mục và giá thấp nhất trên các quốc gia. Không cần khóa.
curl https://snsotp.com/api/v1/services
{
"services": [
{ "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
{ "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
]
}GET/countries
Mọi quốc gia với mã và mã quay số · không cần khóa
Mọi quốc gia với mã của nó (ISO 3166 alpha-2 viết thường, sử dụng nó làm country) và mã quay số. Không cần khóa.
curl https://snsotp.com/api/v1/countries
{
"countries": [
{ "code": "us", "name": "United States", "dial_code": "1" },
{ "code": "gb", "name": "United Kingdom", "dial_code": "44" }
]
}GET/prices
Giá cho một dịch vụ, một quốc gia hoặc cả hai · không cần khóa
Giá mỗi đơn hàng cho một dịch vụ tại mọi quốc gia, một quốc gia cho mọi dịch vụ hoặc một cặp. Gửi ít nhất một bộ lọc. Không cần khóa.
Tham số
servicestring
Mã dịch vụ, ví dụ whatsapp
countrystring
Mã quốc gia, ví dụ us
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
{
"prices": [
{ "service": "whatsapp", "country": "us", "price": "0.93" }
]
}GET/balance
Số dư của bạn bằng USD · cần khóa
Số dư của bạn bằng USD.
curl https://snsotp.com/api/v1/balance \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"balance": "42.50",
"currency": "USD"
}POST/orders
Đặt một số cho một dịch vụ và một quốc gia · cần khóa
Đặt một số và tính phí của nó. Câu trả lời có số đầy đủ (phone) và không có mã quay số (number). Đơn hàng vẫn mở trong 20 phút; nếu không có mã trong thời gian đó, giá tiền sẽ tự động trả lại vào số dư của bạn. Trạng thái phản hồi 201.
Tham số
servicestringbắt buộc
Mã dịch vụ từ GET /services
countrystringbắt buộc
Mã quốc gia từ GET /countries
curl -X POST https://snsotp.com/api/v1/orders \ -H "Authorization: Bearer $SNSOTP_KEY" \ -d service=whatsapp -d country=us
{
"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}
Trạng thái, mã và văn bản SMS của một đơn hàng · cần khóa
Một đơn hàng với trạng thái của nó, mã mới nhất, tin nhắn SMS mới nhất và mọi mã đã nhận cho đến nay. Kiểm tra mỗi 3 đến 5 giây trong khi trạng thái là waiting.
Tham số
idpathbắt buộc
ID đơn hàng từ POST /orders
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"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
Các đơn hàng mở của bạn (hoặc tất cả với status=all) · cần khóa
Các đơn hàng mở của bạn, mới nhất trước. Thêm status=all cho các đơn hàng gần đây trong mọi trạng thái.
Tham số
statusstring
mở (mặc định) hoặc tất cả
limitnumber
1 đến 100, mặc định 50
curl "https://snsotp.com/api/v1/orders?status=open" \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"orders": [
{ "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
]
}POST/orders/{id}/resend
Mã khác trên cùng một số · cần khóa
Yêu cầu một mã khác trên cùng một số sau mã đầu tiên, trong cửa sổ, mà không tính thêm phí. Sau đó kích hoạt một SMS mới trong ứng dụng; waiting_for_resend là true cho đến khi nó đến.
Tham số
idpathbắt buộc
ID đơn hàng
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}POST/orders/{id}/finish
Đóng đơn hàng sau khi bạn sử dụng mã · cần khóa
Đóng một đơn hàng đã nhận mã sau khi bạn đã sử dụng nó. Hoàn thành là tùy chọn: các đơn hàng mở sẽ tự động đóng khi cửa sổ kết thúc.
Tham số
idpathbắt buộc
ID đơn hàng
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}POST/orders/{id}/cancel
Hủy trước khi nhận mã, hoàn tiền đầy đủ · cần khóa
Hủy một đơn hàng trước khi mã đến và trả lại toàn bộ giá tiền vào số dư của bạn ngay lập tức. Sau khi có mã, hủy trả lời has_code.
Tham số
idpathbắt buộc
ID đơn hàng
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}Trạng thái đơn hàng
waitingSố đã sẵn sàng và chưa có SMS nào đến. Hủy là có thể.receivedÍt nhất một mã đã đến. code và sms giữ mã mới nhất.finishedĐóng sau khi có mã, bằng finish hoặc khi cửa sổ kết thúc.refundedKhông có mã nào đến trong 20 phút. Toàn bộ giá tiền đã trả lại vào số dư của bạn.canceledĐã hủy trước khi có mã. Toàn bộ giá tiền đã trả lại vào số dư của bạn.
Lỗi
Lỗi sử dụng trạng thái HTTP và một phần thân với mã ổn định và thông báo dễ đọc.
- 400
missing_filter, bad_jsonMột giá trị bắt buộc bị thiếu hoặc không thể đọc phần thân. - 401
no_key, bad_keyKhóa bị thiếu, sai hoặc đã bị xóa. - 402
no_balanceKhông đủ số dư cho đơn hàng này. Thêm số dư trong console. - 404
unknown_service, unknown_country, not_sold, not_foundMã hoặc đơn hàng không tồn tại, hoặc cặp không được bán. - 409
too_many_open, has_code, not_ready, no_numbersHành động không phù hợp với trạng thái đơn hàng, hoặc không có số nào miễn phí ngay bây giờ (không tính phí). - 429
rate_limitedHơn 300 yêu cầu trong một phút với một khóa.
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}Giới hạn tốc độ
- 300 yêu cầu mỗi phút mỗi khóa. Trên đó API trả lời 429 rate_limited trong phần còn lại của phút.
- Tối đa 20 đơn hàng mở mỗi tài khoản. Hoàn thành hoặc hủy một đơn hàng để mở một đơn hàng khác.
- Kiểm tra đơn hàng mỗi 3 đến 5 giây; mã thường đến trong vòng một phút.
Định dạng kích hoạt SMS
Các script viết cho định dạng handler_api.php phổ biến hoạt động với cùng API key: thay đổi địa chỉ cơ sở thành https://snsotp.com/stubs/handler_api.php và giữ nguyên các hành động. Mã dịch vụ và quốc gia giống như trong REST API.
getBalanceACCESS_BALANCE:42.50
getServicesListDanh sách dịch vụ dạng JSON
getCountriesBản đồ quốc gia dạng JSON
getPricesservice, country (tùy chọn)JSON {country: {service: {cost, count}}}
getNumberservice, countryACCESS_NUMBER:<id>:<phone>
getStatusidSTATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL
setStatusid, status 1 / 3 / 6 / 8ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL
curl "https://snsotp.com/stubs/handler_api.php\ ?api_key=$SNSOTP_KEY&action=getNumber\ &service=telegram&country=gb" ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182
Giá trị setStatus: 1 sẵn sàng, 3 mã khác, 6 hoàn thành, 8 hủy với hoàn tiền đầy đủ.