API dành cho nhà phát triển

Tự động hóa xác minh quy mô lớn

API SNSPhone cho phép công cụ của bạn đặt số Non-VoIP Mỹ, đọc mã SMS và quản lý thuê bao. Hai định dạng: API REST với JSON và định dạng kích hoạt SMS phổ biến cho các script có sẵn.

Bắt đầu nhanh

URL cơ sở https://snsphone.com/api/v1. Tạo khóa trên trang API trong bảng điều khiển và gửi nó dưới dạng Authorization: Bearer spk_... (hoặc trường khóa). Tất cả số điện thoại đều là Non-VoIP của Mỹ. Tiền là chuỗi USD với 2 số thập phân, thời gian theo ISO 8601 UTC, 300 yêu cầu mỗi phút mỗi khóa. Giá tính đến 2026-11-03.

Python

import os, time, requests

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

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US 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://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US 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);

Danh mục

GET/services

Mỗi mã dịch vụ với tên, danh mục, giá xác minh và thời gian thuê. Không cần khóa.

Công khai, không cần khóa.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

Giá bằng USD, tùy chọn cho một dịch vụ. Không cần khóa.

Công khai, không cần khóa.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

Số dư của bạn bằng USD.

Cần khóa API của bạn.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

Xác minh

POST/orders

Mua một lần xác minh (201). Trả về số điện thoại Mỹ và thời gian kết thúc cửa sổ 20 phút.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

Một lần xác minh với trạng thái và mọi mã đã nhận. Trạng thái: waiting, received, finished, refunded, canceled.

Cần khóa API của bạn.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

Các lần xác minh đang mở của bạn (status=all cho 100 lần gần nhất).

Cần khóa API của bạn.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

Yêu cầu mã khác trên cùng số, sau mã đầu tiên và trong khi cửa sổ còn mở. Không tính phí thêm.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

Đóng một lần xác minh đã nhận mã.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

Hủy trước khi mã đến. Toàn bộ số tiền được hoàn vào số dư của bạn.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

Thuê số

POST/rentals

Thuê một số điện thoại Mỹ cho một dịch vụ và thời gian (201). days là tùy chọn khi dịch vụ có một thời gian.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

Các thuê bao đang hoạt động của bạn với tin nhắn mới nhất (status=all cho 100 lần gần nhất).

Cần khóa API của bạn.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

Một thuê bao với mọi SMS đã nhận trên đó.

Cần khóa API của bạn.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

Thêm một thời gian nữa với cùng giá.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

Hủy trong 20 phút đầu khi chưa có SMS nào đến. Toàn bộ số tiền đã thanh toán được hoàn vào số dư của bạn.

Cần khóa API của bạn.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

Định dạng kích hoạt SMS

Dành cho công cụ đã hỗ trợ định dạng kích hoạt phổ biến. Một URL, trường hành động, câu trả lời văn bản thuần. Chỉ xác minh.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
Hành độngTrường bổ sungTrả lờiÝ nghĩa
getBalancekhông cóACCESS_BALANCE:12.50Số dư của bạn bằng USD.
getServicesListkhông có{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Mã dịch vụ với giá xác minh (JSON).
getCountrieskhông có{"us":{"name":"United States","dial":"1"}}Chỉ Hoa Kỳ. country có thể là us, 187 hoặc bỏ trống.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Giá bằng USD. Bộ lọc dịch vụ là tùy chọn.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Mua một lần xác minh. Trả về id và số điện thoại với số 1 ở đầu.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (đã yêu cầu mã khác), STATUS_CANCEL (đã hủy hoặc hoàn tiền).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 sẵn sàng (ACCESS_READY), 3 mã khác (ACCESS_RETRY_GET), 6 hoàn tất (ACCESS_ACTIVATION), 8 hủy với hoàn tiền đầy đủ khi chưa có mã (ACCESS_CANCEL).

Lỗi

Lỗi REST trả về dưới dạng {"error":{"code","message"}} với các mã trạng thái này. Định dạng kích hoạt trả lời bằng một từ thuần.

400Thiếu hoặc sai trường (bad_json, bad_period).
401Không có khóa hoặc khóa sai (no_key, bad_key).
402Không đủ số dư (no_balance).
404Dịch vụ, đơn hàng, thuê bao hoặc endpoint không xác định, hoặc sản phẩm dịch vụ không có (not_sold).
409Không thể thực hiện ngay bây giờ (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Hơn 300 yêu cầu trong một phút (rate_limited).
BAD_KEYThiếu hoặc sai API key.
BAD_ACTIONHành động không xác định.
BAD_SERVICEMã dịch vụ không xác định.
BAD_COUNTRYKhông phải Hoa Kỳ, hoặc dịch vụ chỉ bán dưới dạng thuê bao.
NO_BALANCEKhông đủ số dư.
NO_NUMBERSHiện không có số nào trống. Thử lại sau.
NO_ACTIVATIONID không xác định hoặc không thuộc về bạn.
EARLY_CANCEL_DENIEDMã đã đến nên không thể hủy.
NO_ACTIVATIONSĐã có 20 xác minh đang mở.
TOO_MANY_REQUESTSHơn 300 yêu cầu trong một phút.

Câu hỏi về API

Giải đáp về khóa, giới hạn và polling.

SNSPhone có API xác minh SMS không?

Có. API REST với JSON tại /api/v1 cho dịch vụ, giá cả, xác minh và thuê bao, cùng định dạng SMS activation phổ biến tại /stubs/handler_api.php.

Làm cách nào xác thực yêu cầu API?

Tạo khóa trên trang API trong console và gửi kèm Authorization: Bearer spk_..., hoặc qua trường key. Khóa chỉ được lưu dạng hash và hiển thị một lần.

Giới hạn API là gì?

300 yêu cầu mỗi phút mỗi khóa, tối đa 20 xác minh đang mở và 20 thuê bao đang hoạt động mỗi tài khoản.

Đơn hàng API có đắt hơn website không?

Không. API dùng chung giá và chính sách hoàn tiền như console.

Làm sao biết mã đã đến?

Poll GET /orders/{id} mỗi vài giây. Trạng thái sẽ thay đổi từ waiting sang received và trường code sẽ chứa mã số.

API Xác minh SMS non-VoIP: Số Mỹ qua REST | SNSPhone