Reseller API
Buy temporary numbers and read verification codes programmatically. A small, predictable REST API — authenticate with a header, get JSON back. Create a key in your API keys page.
Returns your current wallet balance, funds held by open orders, and spendable balance.
{
"balance": 42.50,
"held": 3.00,
"available": 39.50,
"currency": "USD"
}
Every service you can buy a number for, with the cheapest starting price and how many countries offer it.
{
"services": [
{ "slug": "telegram", "name": "Telegram", "from_price": 0.20, "countries": 174 }
]
}
Per-country price and live stock for one service, cheapest first.
- service (path) — Service slug, e.g. telegram
{
"service": "telegram",
"currency": "USD",
"countries": [
{ "country": "gb", "name": "United Kingdom", "price": 0.30, "stock": 812 }
]
}
Reserves a number for a service+country. Funds are held until a code arrives (captured) or the order expires (released).
- service (body) — Service slug, e.g. telegram
- country (body) — ISO-2 country code, e.g. gb
{
"id": "a1b2c3d4-…",
"service": "telegram",
"country": "gb",
"phone_number": "+447700900123",
"status": "pending",
"price": 0.30,
"currency": "USD",
"expires_at": "2026-07-25T10:20:00+00:00",
"sms": null
}
Poll this until status is “received”. When the code arrives, the sms object is populated.
- id (path) — Order id returned by “Buy a number”
{
"id": "a1b2c3d4-…",
"status": "received",
"phone_number": "+447700900123",
"sms": {
"code": "12345",
"text": "Your code is 12345",
"sender": "Telegram",
"received_at": "2026-07-25T10:12:00+00:00"
}
}
Cancels an order that has not received a code (after the minimum wait) and releases the held funds.
- id (path) — Order id to cancel
{
"id": "a1b2c3d4-…",
"status": "cancelled",
"sms": null
}
Try it live
Run a real GET request with your own API key. Your key stays in your browser and is sent straight to the API.
Typical flow
- 1. POST /orders with a service and country to reserve a number.
- 2. Show the returned phone_number to your user and poll GET /orders/{id}.
- 3. When status becomes received, read the code from the sms object.
- 4. If no code arrives, POST /orders/{id}/cancel (after the minimum wait) or let it expire — either way the hold is released.