v1REST · JSON

SNSOTP OTP API

REST API do weryfikacji SMS. Zamów numer dla jednej z 182 usług w jednym z 154 krajów, odczytaj jednorazowy kod z zamówienia i odzyskaj pełną kwotę, jeśli kod nie przyjdzie w ciągu 20 minut.

Każdy endpoint akceptuje parametry jako parametry zapytania (GET) lub jako pola formularza lub JSON (POST). Odpowiedzi są w formacie JSON; pieniądze są w USD z dwoma miejscami po przecinku, a czasy są w formacie ISO 8601 w UTC.

Serwer

https://snsotp.com/api/v1

UwierzytelnianieBearer token

Twój klucz API z konsoli, wysłany jako Authorization: Bearer sok_...

Uwierzytelnianie

Utwórz klucz na stronie API w konsoli. Zaczyna się od sok_ i jest pokazywany tylko raz, więc zapisz go w zmiennej środowiskowej. Zastąpienie klucza natychmiast unieważnia stary klucz. Wywołania do /services, /countries i /prices działają bez klucza.

Nagłówek
Authorization: Bearer sok_your_key_here

Klucz może być również wysłany jako parametr zapytania key lub pole formularza, co pomaga narzędziom, które nie mogą ustawiać nagłówków.

Szybki start

Zamów numer, podaj go do aplikacji, a następnie sprawdzaj zamówienie, aż pojawi się kod. Ten sam przepływ w czterech językach:

# 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

Każda usługa z jej kodem i najniższą ceną · bez klucza

Każda usługa, którą możesz zamówić, wraz z jej kodem (użyj go jako service w innych wywołaniach), kategorią i najniższą ceną w różnych krajach. Nie wymaga klucza.

ŻądaniecURL
curl https://snsotp.com/api/v1/services
Odpowiedź200
{
  "services": [
    { "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
    { "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
  ]
}

GET/countries

Każdy kraj z jego kodem i numerem kierunkowym · bez klucza

Każdy kraj wraz z kodem (ISO 3166 alpha-2 małymi literami, użyj go jako country) i jego kodem wybierania. Nie wymaga klucza.

ŻądaniecURL
curl https://snsotp.com/api/v1/countries
Odpowiedź200
{
  "countries": [
    { "code": "us", "name": "United States", "dial_code": "1" },
    { "code": "gb", "name": "United Kingdom", "dial_code": "44" }
  ]
}

GET/prices

Ceny dla usługi, kraju lub obu · bez klucza

Cena za zamówienie dla jednej usługi w każdym kraju, jeden kraj dla każdej usługi lub jedna para. Wyślij przynajmniej jeden filtr. Nie wymaga klucza.

Parametry

  • servicestring

    Kod usługi, na przykład whatsapp

  • countrystring

    Kod kraju, na przykład us

ŻądaniecURL
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
Odpowiedź200
{
  "prices": [
    { "service": "whatsapp", "country": "us", "price": "0.93" }
  ]
}

GET/balance

Twoje saldo w USD · wymagany klucz

Twoje saldo w USD.

ŻądaniecURL
curl https://snsotp.com/api/v1/balance \
  -H "Authorization: Bearer $SNSOTP_KEY"
Odpowiedź200
{
  "balance": "42.50",
  "currency": "USD"
}

POST/orders

Zamów numer dla usługi i kraju · wymagany klucz

Zamawia numer i pobiera jego cenę. Odpowiedź zawiera numer w pełnej formie (phone) i bez kodu wybierania (number). Zamówienie pozostaje otwarte przez 20 minut; jeśli w tym czasie nie pojawi się kod, cena automatycznie wraca na Twoje saldo. Status odpowiedzi 201.

Parametry

  • servicestringwymagane

    Kod usługi z GET /services

  • countrystringwymagane

    Kod kraju z GET /countries

ŻądaniecURL
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us
Odpowiedź201
{
  "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}

Status, kod i treść SMS dla jednego zamówienia · wymagany klucz

Jedno zamówienie z jego statusem, najnowszym kodem, najnowszym tekstem SMS i każdym otrzymanym dotąd kodem. Sprawdzaj co 3 do 5 sekund, gdy status to waiting.

Parametry

  • idpathwymagane

    ID zamówienia z POST /orders

ŻądaniecURL
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"
Odpowiedź200
{
  "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

Twoje otwarte zamówienia (lub wszystkie z status=all) · wymagany klucz

Twoje otwarte zamówienia, od najnowszych. Dodaj status=all, aby zobaczyć ostatnie zamówienia w każdym statusie.

Parametry

  • statusstring

    open (domyślnie) lub all

  • limitnumber

    1 do 100, domyślnie 50

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

POST/orders/{id}/resend

Kolejny kod na tym samym numerze · wymagany klucz

Prosi o kolejny kod na tym samym numerze po pierwszym kodzie, w ramach okna, bez dodatkowych kosztów. Następnie wywołaj nowy SMS w aplikacji; waiting_for_resend jest prawdziwe, aż przyjdzie.

Parametry

  • idpathwymagane

    ID zamówienia

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

POST/orders/{id}/finish

Zamknij zamówienie po użyciu kodu · wymagany klucz

Zamyka zamówienie, które otrzymało kod, gdy już go użyłeś. Zakończenie jest opcjonalne: otwarte zamówienia zamykają się same, gdy kończy się okno.

Parametry

  • idpathwymagane

    ID zamówienia

ŻądaniecURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \
  -H "Authorization: Bearer $SNSOTP_KEY"
Odpowiedź200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}

POST/orders/{id}/cancel

Anuluj przed otrzymaniem kodu, pełny zwrot · wymagany klucz

Anuluje zamówienie przed otrzymaniem kodu i natychmiast zwraca pełną kwotę na Twoje saldo. Po otrzymaniu kodu, anulowanie zwraca has_code.

Parametry

  • idpathwymagane

    ID zamówienia

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

Status zamówienia

wartości statusu
  • waitingNumer jest gotowy i żaden SMS jeszcze nie przybył. Anulowanie jest możliwe.
  • receivedPrzynajmniej jeden kod przybył. code i sms zawierają najnowszy.
  • finishedZamknięte po otrzymaniu kodu, przez finish lub gdy okno się zakończyło.
  • refundedŻaden kod nie przybył w ciągu 20 minut. Pełna kwota wróciła na Twoje saldo.
  • canceledAnulowane przed otrzymaniem kodu. Pełna kwota wróciła na Twoje saldo.

Błędy

Błędy używają statusu HTTP i ciała ze stabilnym kodem i czytelną wiadomością.

Status HTTP i kody
  • 400missing_filter, bad_jsonBrak wymaganej wartości lub ciało nie może zostać odczytane.
  • 401no_key, bad_keyKlucz jest brakujący, błędny lub usunięty.
  • 402no_balanceNiewystarczające saldo na to zamówienie. Doładuj saldo w konsoli.
  • 404unknown_service, unknown_country, not_sold, not_foundKod lub zamówienie nie istnieje, lub para nie jest sprzedawana.
  • 409too_many_open, has_code, not_ready, no_numbersAkcja nie pasuje do stanu zamówienia lub żaden numer nie jest dostępny w tej chwili (nic nie jest pobierane).
  • 429rate_limitedWięcej niż 300 żądań w ciągu minuty z jednym kluczem.
Ciało błędu402
{
  "error": {
    "code": "no_balance",
    "message": "Not enough credit. Add credit in the console."
  }
}

Limity szybkości

  • 300 żądań na minutę na klucz. Powyżej tego API odpowiada 429 rate_limited przez resztę minuty.
  • Maksymalnie 20 otwartych zamówień na konto. Zakończ lub anuluj jedno, aby otworzyć kolejne.
  • Sprawdzaj zamówienie co 3 do 5 sekund; kody zazwyczaj przychodzą w ciągu minuty.

Format aktywacji SMS

Skrypty napisane dla wspólnego formatu handler_api.php działają z tym samym kluczem API: zmień podstawowy adres na https://snsotp.com/stubs/handler_api.php i zachowaj akcje. Kody usług i krajów są takie same jak w REST API.

Akcje
  • getBalance

    ACCESS_BALANCE:42.50

  • getServicesList

    Lista usług w formacie JSON

  • getCountries

    Mapa krajów w formacie JSON

  • getPricesservice, country (opcjonalnie)

    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

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

ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182

wartości setStatus: 1 gotowy, 3 kolejny kod, 6 zakończ, 8 anuluj z pełnym zwrotem.

Dokumentacja API OTP: REST API do weryfikacji SMS | SNSOTP