API dla programistów

Automatyzuj weryfikacje na dużą skalę

API SNSPhone pozwala Twoim narzędziom zamawiać amerykańskie numery non-VoIP, odczytywać kody SMS i zarządzać wynajmem. Dwa formaty: REST API z JSON oraz popularny format aktywacji SMS dla istniejących skryptów.

Szybki start

Bazowy URL https://snsphone.com/api/v1. Utwórz klucz na stronie API w konsoli i wyślij go jako Authorization: Bearer spk_... (lub pole klucza). Wszystkie numery to amerykańskie non-VoIP. Pieniądze to ciąg znaków USD z 2 miejscami po przecinku, czasy w formacie ISO 8601 UTC, 300 żądań na minutę na klucz. Ceny na dzień 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);

Katalog

GET/services

Każdy kod usługi z nazwą, kategorią, ceną weryfikacji i okresami wynajmu. Nie wymaga klucza.

Publiczne, bez klucza.

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

Ceny w USD, opcjonalnie dla jednej usługi. Nie wymaga klucza.

Publiczne, bez klucza.

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

Twoje saldo w USD.

Wymaga Twojego klucza API.

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

Weryfikacje

POST/orders

Kupuje weryfikację (201). Zwraca numer USA i czas zakończenia 20 minutowego okna.

Wymaga Twojego klucza API.

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

Jedna weryfikacja z jej statusem i każdym otrzymanym kodem. Statusy: waiting, received, finished, refunded, canceled.

Wymaga Twojego klucza API.

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

Twoje otwarte weryfikacje (status=all dla ostatnich 100).

Wymaga Twojego klucza API.

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

POST/orders/VR-7K2M9QX4PB/resend

Prosi o kolejny kod na tym samym numerze, po pierwszym kodzie i podczas otwartego okna. Bez dodatkowych opłat.

Wymaga Twojego klucza API.

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

Zamyka weryfikację, która otrzymała swój kod.

Wymaga Twojego klucza API.

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

POST/orders/VR-7K2M9QX4PB/cancel

Anuluje przed otrzymaniem kodu. Pełna kwota wraca na Twoje saldo.

Wymaga Twojego klucza API.

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

Wynajem

POST/rentals

Wynajmuje numer USA dla jednej usługi i okresu (201). days jest opcjonalne, gdy usługa ma jeden okres.

Wymaga Twojego klucza API.

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

Twoje aktywne wynajmy z ich najnowszymi wiadomościami (status=all dla ostatnich 100).

Wymaga Twojego klucza API.

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

GET/rentals/RN-4J8T2W6QHM

Jeden wynajem z każdym otrzymanym SMSem.

Wymaga Twojego klucza API.

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

Dodaje kolejny okres w tej samej cenie.

Wymaga Twojego klucza API.

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

Anuluje w ciągu pierwszych 20 minut, gdy nie dotarł żaden SMS. Wszystko opłacone wraca na Twoje saldo.

Wymaga Twojego klucza API.

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

Format aktywacji SMS

Dla narzędzi, które już obsługują popularny format aktywacji. Jeden URL, pole akcji, odpowiedzi w postaci zwykłego tekstu. Tylko weryfikacje.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
AkcjaDodatkowe polaOdpowiedźZnaczenie
getBalancebrakACCESS_BALANCE:12.50Twoje saldo w USD.
getServicesListbrak{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Kody usług z ceną weryfikacji (JSON).
getCountriesbrak{"us":{"name":"United States","dial":"1"}}Tylko Stany Zjednoczone. country może być us, 187 lub pominięte.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Ceny w USD. Filtr usługi jest opcjonalny.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Kupuje weryfikację. Zwraca id i numer z 1 na początku.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (poproszono o kolejny kod), STATUS_CANCEL (anulowano lub zwrócono).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 gotowy (ACCESS_READY), 3 kolejny kod (ACCESS_RETRY_GET), 6 zakończ (ACCESS_ACTIVATION), 8 anuluj z pełnym zwrotem, gdy nie dotarł kod (ACCESS_CANCEL).

Błędy

Błędy REST przychodzą jako {"error":{"code","message"}} z tymi kodami statusu. Format aktywacji odpowiada zwykłym słowem.

400Brakujące lub nieprawidłowe pole (bad_json, bad_period).
401Brak klucza lub nieprawidłowy klucz (no_key, bad_key).
402Niewystarczające saldo (no_balance).
404Nieznana usługa, zamówienie, wynajem lub endpoint, lub produkt, którego usługa nie posiada (not_sold).
409Niemożliwe w tej chwili (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Ponad 300 żądań w ciągu minuty (rate_limited).
BAD_KEYBrakujący lub nieprawidłowy klucz API.
BAD_ACTIONNieznana akcja.
BAD_SERVICENieznany kod usługi.
BAD_COUNTRYNie Stany Zjednoczone lub usługa jest sprzedawana tylko jako wynajem.
NO_BALANCENiewystarczające saldo.
NO_NUMBERSBrak wolnego numeru w tej chwili. Spróbuj ponownie za chwilę.
NO_ACTIVATIONNieznany identyfikator lub nie należy do Ciebie.
EARLY_CANCEL_DENIEDKod już dotarł, więc nie można go anulować.
NO_ACTIVATIONS20 weryfikacji jest już otwartych.
TOO_MANY_REQUESTSPonad 300 żądań w ciągu minuty.

Pytania dotyczące API

Klucze, limity i polling, odpowiedzi.

Czy SNSPhone ma API do weryfikacji SMS?

Tak. REST API z JSON pod /api/v1 dla usług, cen, weryfikacji i wynajmu, oraz wspólny format aktywacji SMS pod /stubs/handler_api.php.

Jak uwierzytelnić żądania API?

Utwórz klucz na stronie API w konsoli i wyślij go jako Authorization: Bearer spk_..., lub jako pole key. Klucze są przechowywane tylko jako hash i pokazywane raz.

Jakie są limity szybkości API?

300 żądań na minutę na klucz, do 20 otwartych weryfikacji i 20 aktywnych wynajmów na konto.

Czy zamówienia API kosztują więcej niż zamówienia na stronie?

Nie. API używa tych samych cen i tych samych zasad zwrotu co konsola.

Skąd mam wiedzieć, że kod dotarł?

Polling GET /orders/{id} co kilka sekund. Status zmienia się z waiting na received, a pole code zawiera cyfry.

API weryfikacji SMS bez VoIP: Numery USA przez REST | SNSPhone