Przejdź do głównej treści
100+
Kraje
Ponad 1000 usług. Płać kryptowalutą, bez KYC.
Kup numer

API weryfikacji SMS — SMSBurner

Automatyzuj weryfikację OTP na dużą skalę. Kupuj wirtualne numery telefonu w ponad 190 krajach, odbieraj kody SMS w kilka sekund, wynajmuj dedykowane numery długoterminowe i zarządzaj każdym zamówieniem przez jeden punkt końcowy REST — bez klucza API, bez KYC, z rozliczeniem w kryptowalutach.

Czas czytania: 5 min REST · JSON · OpenAPI 3.0 Specyfikacja OpenAPI →

Wymagane uwierzytelnienie. Wszystkie żądania API korzystają z uwierzytelniania sesji opartego na plikach cookie. Aby korzystać z API, musisz być zalogowany na swoje konto SMSBurner. Zaloguj się przez interfejs webowy lub użyj punktu końcowego auth, aby utworzyć sesję.

Dlaczego programiści wybierają API SMSBurner

SMSBurner to najbardziej elastyczne API weryfikacji SMS dla deweloperów, którzy potrzebują anonimowości, globalnego zasięgu i przewidywalnych cen. W przeciwieństwie do tradycyjnych dostawców SMS-OTP, którzy ograniczają dostęp umowami korporacyjnymi, miesięcznymi minimami i ankietami KYC, SMSBurner działa z dowolnym klientem HTTPS, nalicza opłaty ściśle za numer i akceptuje 8 kryptowalut, w tym Bitcoin, Monero, Ethereum, USDT, Solana, Litecoin i TRON.

Typowe zastosowania obejmują automatyzację rejestracji kont do skalowanego QA, pobieranie haseł jednorazowych dla agentów headless i botów CI, walidację procesów wymagających numeru telefonu w ciągłej integracji, wynajem dedykowanych numerów długoterminowych do kont Telegram lub WhatsApp, które wymagają nieprzerwanego odbioru SMS, oraz obsługę geograficznie rozproszonej weryfikacji w ponad 190 krajach z pełną kontrolą poziomu operatora — wirtualnego, fizycznego lub premium.

Uwierzytelnianie

API korzysta z uwierzytelniania sesji opartego na plikach cookie. Aby uwierzytelnić się programowo:

  1. Wyślij żądanie POST do /auth-api.php z Twoją frazą seed
  2. Zapisz plik cookie sesji z odpowiedzi
  3. Dołącz plik cookie do wszystkich kolejnych żądań API
POST /auth-api.php

Uwierzytelnij się za pomocą frazy seed i rozpocznij sesję.

ParametrTypWymaganeOpis
actionstringwymaganeMusi być "login"
seedstringwymaganeTwój 16-znakowy seed dostępu (np. AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsburner.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsburner.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsburner.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
Odpowiedź z powodzeniem
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Odpowiedź błędu
{ "success": false, "error": "Invalid seed." }

Adres bazowy URL

Wszystkie endpointy API są względne wobec:

https://smsburner.com/api.php?action={action}

Wszystkie odpowiedzi są w formacie JSON. Punkty końcowe POST akceptują treść żądań zarówno w formacie application/json, jak i application/x-www-form-urlencoded.

Limity żądań

API stosuje następujące limity liczby żądań:

EndpointLimitOkno
Uwierzytelnianie5 prób15 minut
Wszystkie pozostałe endpointyBrak twardego limitu

Ograniczanie liczby żądań: Uwierzytelnianie jest ograniczone do 5 prób na 15 minut. Pozostałe punkty końcowe nie mają obecnie limitu żądań, ale nadmierne użycie może zostać ograniczone. Zachowuj rozsądne odstępy między żądaniami.

Obsługa błędów

Wszystkie błędy zwracają obiekt JSON z polem <code>error</code>:

{ "error": "Description of what went wrong" }
Kod HTTPZnaczenie
200Sukces (sprawdź treść odpowiedzi pod kątem błędów na poziomie aplikacji)
403Nieprawidłowy token CSRF
405Nieprawidłowa metoda HTTP (np. GET na endpoincie tylko dla POST)
429Przekroczono limit żądań

Typowe błędy na poziomie aplikacji:

BłądPrzyczyna
"Login required"Sesja wygasła lub brak uwierzytelnienia
"Insufficient balance"Niewystarczające środki — zawiera pola need i have
"Service not available for this country"Brak dostępnych numerów lub usługa nieaktywna dla wybranego kraju
"Missing country or service"Nie podano wymaganych parametrów

Lista krajów

GET /api.php?action=countries

Zwraca wszystkie aktywne kraje z dostępnymi wirtualnymi numerami. Nie wymaga uwierzytelniania.

cURL
Python
JavaScript
curl https://smsburner.com/api.php?action=countries
resp = session.get("https://smsburner.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsburner.com/api.php?action=countries"); const countries = await resp.json();
Odpowiedź
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

Lista usług

GET /api.php?action=services&country={code}

Zwraca dostępne usługi dla danego kraju, w tym ceny i dostępność. Bez kodu kraju zwraca wszystkie usługi bez cen.

ParametrTypWymaganeOpis
countrystringopcjonalneDwuliterowy kod kraju ISO 3166-1 alpha-2 (np. us, gb, de)
Odpowiedź (z krajem)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

Lista operatorów

GET /api.php?action=operators&country={code}

Zwraca dostępnych operatorów (sieci) dla danego kraju. Każdy operator ma typ oraz mnożnik ceny stosowany do podstawowej ceny usługi.

ParametrTypWymaganeOpis
countrystringwymaganeKod kraju ISO 3166-1 alpha-2
Odpowiedź
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Typy operatorów: virtual — numery VoIP, najtańsze, mogą być blokowane przez niektóre usługi. physical — prawdziwe karty SIM, wyższa skuteczność. premium — najszybsza dostawa (~10 s), najwyższa skuteczność.

Kup numer (aktywacja SMS)

POST /api.php?action=buy

Kup wirtualny numer do jednorazowej weryfikacji SMS. Numer jest aktywny przez 20 minut. Jeśli nie otrzymasz SMS-a, Twoje saldo zostanie automatycznie zwrócone.

ParametrTypWymaganeOpis
countrystringwymaganeKod kraju (np. us)
service_idintegerwymaganeID usługi z Listy usług
operator_idintegeropcjonalneID operatora z List Operators. Pomiń, aby użyć domyślnego operatora.
cURL
Python
JavaScript
curl -X POST https://smsburner.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsburner.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsburner.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
Odpowiedź z powodzeniem
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Błąd: Niewystarczające saldo
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

Lista zamówień

GET /api.php?action=orders

Zwraca Twoje 50 najnowszych zamówień, w tym numery telefonów i kody SMS. Odpytuj ten endpoint, aby sprawdzać przychodzące kody SMS dla aktywnych zamówień.

Odpowiedź
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

Statusy zamówień: active — oczekiwanie na SMS. completed — SMS odebrany. cancelled — anulowane przez użytkownika. refunded — automatyczny zwrot (nie odebrano SMS przed upływem limitu czasu). expired — upłynął limit czasu.

Sprawdź cenę wynajmu

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

Sprawdź cenę wynajmu dedykowanego numeru od konkretnego operatora na określony czas.

ParametrTypWymaganeOpis
countrystringwymaganeKod kraju
operator_idintegerwymaganeID operatora
durationintegerwymaganeCzas wynajmu w dniach: 7, 14, 30 lub 90
Odpowiedź
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Wynajmij numer

POST /api.php?action=rental_buy

Wynajmij jeden lub więcej dedykowanych numerów telefonu. Numer należy wyłącznie do Ciebie przez cały okres wynajmu i odbiera nieograniczoną liczbę przychodzących SMS-ów.

ParametrTypWymaganeOpis
countrystringwymaganeKod kraju
operator_idintegerwymaganeID operatora
durationintegerwymagane7, 14, 30 lub 90 dni
qtyintegeropcjonalneLiczba numerów do wynajęcia (1–10, domyślnie: 1)
Odpowiedź z powodzeniem
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Pobierz informacje o użytkowniku

GET /api.php?action=user

Zwraca informacje o koncie i saldzie bieżącego użytkownika. Użyj tego, aby sprawdzić status uwierzytelnienia i dostępne środki.

Uwierzytelniono
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
Niezalogowano
{ "logged_in": false }

Pełny przykład przepływu pracy

Oto pełny przykład w Pythonie, który uwierzytelnia, wyszukuje usługę, kupuje numer i odpytuje o kod SMS:

Python
import requests, time BASE = "https://smsburner.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

Najczęściej zadawane pytania

Co mogę zrobić za pomocą API weryfikacji SMS SMSBurner?

API SMSBurner daje deweloperom programowy dostęp do wirtualnych numerów telefonu w ponad 190 krajach do jednorazowej weryfikacji SMS (kody OTP) i długoterminowego wynajmu numerów (7, 14, 30 lub 90 dni). Możesz wyświetlać listę usług, sprawdzać ceny na żywo, przydzielać numery, pobierać przychodzące kody SMS i zwracać środki za nieudane aktywacje — wszystko przez interfejs JSON REST, bez KYC i z rozliczeniem wyłącznie w kryptowalutach.

Czy potrzebuję klucza API lub tokena OAuth, aby korzystać z API?

Nie. API SMSBurner korzysta z uwierzytelniania sesyjnego opartego na plikach cookie: wyślij pojedyncze żądanie POST na /auth-api.php ze swoim 16-znakowym ziarnem dostępu, a następnie używaj zwróconego pliku cookie sesji przy każdym kolejnym wywołaniu. Nie ma klucza API do udostępniania, rotacji ani unieważniania — uwierzytelniasz się raz na sesję i pozostajesz uwierzytelniony przez cały czas życia pliku cookie.

Ile kosztuje korzystanie z API SMSBurner?

Samo API jest darmowe — nie ma opłaty miesięcznej, subskrypcji ani minimalnej liczby żądań. Płacisz tylko za numer: jednorazowe aktywacje SMS zaczynają się od $0.05, a dedykowane wynajmy długoterminowe od $4.79 za 7 dni. Każda operacja jest rozliczana z Twojego przedpłaconego salda, a każda aktywacja, która nie odbierze SMS-a, jest zwracana automatycznie.

Jakie języki programowania i frameworki są obsługiwane?

API może wywołać dowolny język lub platforma zdolna wysyłać żądania HTTPS — Python (requests, httpx), Node.js (fetch, axios), Go, PHP, Ruby, Java, C#, Bash z cURL i inne. Dokumentacja zawiera gotowe do uruchomienia przykłady w cURL, Python i JavaScript, a kompletna specyfikacja OpenAPI 3.0 jest opublikowana pod adresem /openapi.json, dzięki czemu możesz automatycznie wygenerować typowanego klienta w wybranym języku.

Co się stanie, jeśli kod weryfikacyjny SMS nigdy nie dotrze?

Każda aktywacja ma 20-minutowe okno dostawy. Jeśli w tym czasie nie dotrze żaden SMS, zamówienie jest automatycznie anulowane, a pełna cena wraca na saldo Twojego konta — bez zgłoszenia do pomocy technicznej, bez ręcznego ponawiania. Zwrócone środki możesz natychmiast wykorzystać do przydzielenia kolejnego numeru, opcjonalnie na innym poziomie operatora (wirtualnym, fizycznym lub premium), aby zwiększyć skuteczność dostawy.

Czy istnieją limity zapytań (rate limit) dla API SMSBurner?

Uwierzytelnianie jest ograniczone do 5 prób na 15 minut na adres IP, co chroni przed atakami siłowymi na wyliczanie ziarna. Wszystkie pozostałe punkty końcowe — katalog, zakup, zamówienia, wynajmy — nie mają obecnie sztywnego limitu żądań, prosimy jednak o zachowanie rozsądnych odstępów: odpytywanie /api.php?action=orders co 3–5 sekund w zupełności wystarcza do odbioru SMS, a długotrwałe serie powyżej ~10 żądań/s mogą być ograniczane na poziomie WAF.