Bazowy URL https://snsverify.com/api/v1
Wszystkie ścieżki na tej stronie są względne do niego. Kwoty podane są w dolarach amerykańskich jako ciągi znaków z dwoma miejscami po przecinku, czas w UTC (ISO 8601).
Dwa formaty, jedno konto
Ta strona opisuje REST API z JSON. Jeśli Twoje narzędzie już obsługuje wspólny format aktywacji SMS (handler_api.php z parametrami action=), użyj API aktywacji SMS. Obie współdzielą Twój klucz API, ceny, otwarte aktywacje i zwroty.
Przegląd
API weryfikacji SMS pozwala Twojemu oprogramowaniu kupić numer telefonu dla aplikacji, oczekiwać na SMS weryfikacyjny i odczytać kod, bez otwierania strony internetowej. Każde zamówienie to jedna aktywacja: jedna usługa, jeden kraj, jeden numer i 20-minutowe okno czasowe. Zamówienia bez kodu są w pełni zwracane po zakończeniu okna.
Żądania używają GET do odczytu i POST do akcji. Ciała POST mogą być polami formularza lub JSON. Pomyślne odpowiedzi to obiekty JSON; błędy mają ten sam kształt wszędzie: {"error":{"code":"...","message":"..."}}.
Uwierzytelnianie
Utwórz klucz API w konsoli w sekcji Klucz API. Jest on pokazywany tylko raz; przechowujemy tylko zaszyfrowaną kopię. Wyślij go w nagłówku Authorization jako token bearer. Parametr key jest również akceptowany dla narzędzi, które nie mogą ustawiać nagłówków.
Authorization: Bearer vfk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Utworzenie nowego klucza natychmiast zastępuje stary. Endpointy usług, krajów i cen działają bez klucza.
Błędy
| HTTP | Znaczenie |
|---|---|
| 400 | Brakujące lub błędne pole (missing_filter, bad_json). |
| 401 | Brak klucza lub błędny klucz (no_key, bad_key). |
| 402 | Niewystarczające saldo (no_balance). |
| 404 | Nieznana usługa, kraj, zamówienie lub endpoint. |
| 409 | Zamówienie nie może teraz tego zrobić (has_code, not_ready, too_many_open, no_numbers). |
| 429 | Więcej niż 300 żądań w ciągu minuty (rate_limited). |
Szybki start
Zamów numer WhatsApp w UK za pomocą curl, a następnie sprawdzaj zamówienie co kilka sekund, aż kod się pojawi.
curl -X POST https://snsverify.com/api/v1/orders \ -H "Authorization: Bearer $SNSVERIFY_KEY" \ -d service=whatsapp -d country=gb
Python
import os, time, requests
API = "https://snsverify.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSVERIFY_KEY']}"}
order = requests.post(f"{API}/orders", headers=H,
data={"service": "whatsapp", "country": "gb"}).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://snsverify.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSVERIFY_KEY}` };
const { order } = await fetch(`${API}/orders`, {
method: "POST", headers: H,
body: new URLSearchParams({ service: "telegram", country: "nl" }),
}).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);Limity szybkości
300 żądań na minutę na klucz i do 20 otwartych zamówień na konto. Sprawdzanie zamówienia co 3 do 5 sekund jest wystarczające: większość kodów przychodzi w ciągu minuty.
Statusy zamówień
waitingNumer jest otwarty i żaden kod jeszcze nie dotarł.receivedPrzynajmniej jeden kod dotarł; poproś o kolejny z resend, gdy okno jest otwarte.finishedZamknięte po kodzie, przez Ciebie lub po zakończeniu okna.refundedOkno zakończyło się bez kodu; pełna kwota wróciła na Twoje saldo.canceledAnulowałeś przed otrzymaniem kodu; pełna kwota wróciła na Twoje saldo.
Endpointy
GET/services
Każdy kod usługi z nazwą, kategorią i najniższą ceną. Nie wymaga klucza.
{"services":[{"code":"whatsapp","name":"WhatsApp","category":"social","from":"0.31"}]}GET/countries
Każdy kod kraju (ISO, małe litery) z nazwą i numerem kierunkowym. Nie wymaga klucza.
{"countries":[{"code":"gb","name":"United Kingdom","dial_code":"44"}]}GET/prices?service=whatsapp&country=gb
Ceny w USD. Filtruj według usługi, kraju lub obu. Nie wymaga klucza.
{"prices":[{"service":"whatsapp","country":"gb","price":"0.94"}]}GET/balance
Twoje saldo w USD.
{"balance":"25.00","currency":"USD"}POST/orders
Kupuje numer (HTTP 201). Zwraca zamówienie z numerem telefonu i czasem zakończenia okna.
Ciało: service=whatsapp&country=gb
{"order":{"id":"AC-7K2M9QX4PB","service":"whatsapp","country":"gb","phone":"+447700900123","price":"0.94","status":"waiting","code":null,"expires_at":"2026-11-04T12:20:00.000Z"},"window_minutes":20}GET/orders/AC-7K2M9QX4PB
Jedno zamówienie z jego statusem i każdym otrzymanym kodem. Statusy: waiting, received, finished, refunded, canceled.
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482915","sms":"Your WhatsApp code: 482-915"}}GET/orders?status=open
Twoje otwarte zamówienia; status=all zwraca ostatnie 100.
{"orders":[{"id":"AC-7K2M9QX4PB","status":"waiting"}]}POST/orders/AC-7K2M9QX4PB/resend
Prosi o kolejny kod na tym samym numerze po pierwszym kodzie, gdy okno jest otwarte. Bez dodatkowych opłat.
{"order":{"status":"received","waiting_for_resend":true}}POST/orders/AC-7K2M9QX4PB/finish
Zamyka zamówienie, które otrzymało swój kod.
{"order":{"status":"finished"}}POST/orders/AC-7K2M9QX4PB/cancel
Anuluje przed otrzymaniem kodu. Pełna kwota wraca na Twoje saldo.
{"order":{"status":"canceled","refunded":"0.94"}}