How to Use SmsBuyz API for SMS Verification — Developer Guide
Complete SMS verification API quickstart with curl and Python examples, endpoint overview, and error handling tips.
I got tired of clicking through the SmsBuyz dashboard for every verification. Fifty activations a day doesn't scale with a mouse. The API fixes that — buy, poll, finish. Three endpoints and you're automated.
Base URL: https://smsbuyz.com/v1. Auth via Bearer token from your profile settings. All endpoints return JSON. This is current as of June 2026.
The loop
Every verification follows the same cycle:
Buy — GET /v1/user/buy/activation/{country}/{operator}/{product}
Poll — GET /v1/user/check/{id} every 3–5 seconds
Close — GET /v1/user/finish/{id} on success, or /v1/user/cancel/{id} to bail and get refunded
Endpoint reference
| Endpoint | What it does |
|---|---|
| GET /v1/user/profile | Balance check before a buy batch |
| GET /v1/user/buy/activation/… | Purchase a number — returns id + phone |
| GET /v1/user/check/{id} | Poll for SMS — check the sms[] array |
| GET /v1/user/finish/{id} | Mark order done, release the number |
| GET /v1/user/cancel/{id} | Cancel pending order, refund balance |
| GET /v1/guest/prices | Price list — no auth needed |
Copy-paste examples
curl — buy a Telegram number:
curl "https://smsbuyz.com/v1/user/buy/activation/ru/any/telegram" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json"
Python — full flow (WhatsApp example):
import time, requests
BASE = "https://smsbuyz.com/v1"
HEADERS = {"Authorization": "Bearer YOUR_TOKEN", "Accept": "application/json"}
r = requests.get(f"{BASE}/user/buy/activation/us/any/whatsapp", headers=HEADERS)
order = r.json()
order_id, phone = order["id"], order["phone"]
for _ in range(60):
check = requests.get(f"{BASE}/user/check/{order_id}", headers=HEADERS).json()
if check.get("sms"):
code = check["sms"][0]["code"]
requests.get(f"{BASE}/user/finish/{order_id}", headers=HEADERS)
break
time.sleep(5)
Errors I've actually hit
401 — expired or wrong token. Regenerate in profile settings.
402 — insufficient balance. Top up, retry buy.
Polling too fast — stick to 3–5 second intervals. Hammering check every 500ms won't make SMS arrive faster; it might get you throttled.
20-minute timeout — if sms[] stays empty, cancel the order. Balance returns automatically. Don't leave zombie orders open.
Migrating from 5sim? Same pattern — see our 5sim comparison. Full spec at /docs/api.
Ready to get started?
Create your free account and get +20% bonus on your first deposit.