Stable REST API for automating SMS number rentals. JSON in, JSON out. Same infrastructure the SMSVerifyo website uses, so latency, uptime and pricing match what you see in your dashboard.
Authorization: Bearer sk_live_…
Returns the current account balance in USD. Call before ordering to make sure you have funds.
Request
curl -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/balance
Response 200
{
"ok": true,
"balance_usd": 42.5000,
"currency": "USD",
"email": "you@example.com",
"username": "reseller1"
}Lists every enabled service (WhatsApp, Telegram, Google, etc.). Cache this — it changes rarely.
Request
curl -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/services
Response 200
{
"ok": true,
"services": [
{ "id": "d0…uuid", "code": "wa", "name": "WhatsApp" },
{ "id": "e1…uuid", "code": "tg", "name": "Telegram" }
]
}Lists countries available for a given service with live per-number pricing and availability.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service_id | uuid | yes | The service.id returned by /services. |
Request
curl -H "Authorization: Bearer $KEY" \ "https://smsverifyo.com/api/public/v1/countries?service_id=SERVICE_UUID"
Response 200
{
"ok": true,
"countries": [
{ "country_id": 0, "name": "Russia", "flag": "🇷🇺", "price_usd": 0.15, "available": 42 },
{ "country_id": 1, "name": "Ukraine", "flag": "🇺🇦", "price_usd": 0.22, "available": 8 }
]
}Rents a number. Atomically debits your balance and returns the phone number. Order starts in status waiting.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service_id | uuid | yes | Service to rent for. |
| country_id | int | yes | Country id from /countries. |
Request
curl -X POST -H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"service_id":"SERVICE_UUID","country_id":0}' \
https://smsverifyo.com/api/public/v1/orderResponse 200
{
"ok": true,
"order": {
"id": "b7…uuid",
"phone": "79001234567",
"status": "waiting",
"price_usd": 0.18,
"balance_usd": 42.32,
"expires_at": "2026-07-03T02:00:00Z"
}
}Polls an order. Poll every 3–5 seconds. When the SMS arrives, status becomes received and sms_code is returned.
Request
curl -H "Authorization: Bearer $KEY" https://smsverifyo.com/api/public/v1/order/ORDER_ID
Response 200
{
"ok": true,
"order": {
"id": "b7…uuid",
"phone": "79001234567",
"status": "received",
"sms_code": "123456",
"received_at": "2026-07-03T01:32:11Z"
}
}Cancels a waiting order after the cooldown window and refunds the balance. Not allowed once an SMS has arrived.
Request
curl -X POST -H "Authorization: Bearer $KEY" \ https://smsverifyo.com/api/public/v1/order/ORDER_ID/cancel
Response 200
{ "ok": true, "status": "cancelled", "balance_usd": 42.50 }Marks an order as finished once you're done with the code. Optional — orders auto-finalize after expiry.
Request
curl -X POST -H "Authorization: Bearer $KEY" \ https://smsverifyo.com/api/public/v1/order/ORDER_ID/finish
Response 200
{ "ok": true, "status": "finished" }| HTTP | error.code | When it happens |
|---|---|---|
| 401 | unauthorized | Missing / invalid / revoked API key. |
| 400 | invalid_request | Missing or malformed body parameters. |
| 402 | insufficient_funds | Balance is not enough to cover the order price. |
| 404 | not_found | Order id does not exist or belongs to another user. |
| 409 | invalid_state | Trying to cancel/finish an order in the wrong state. |
| 429 | rate_limited | Too many requests. Back off and retry. |
| 503 | no_numbers | Provider has no available numbers for this service/country. |