Integrate SMS-COOL directly into your own software using our REST API.
Sign in to see your personal API key and get live examples with it pre-filled.
Sign InTypical flow
1. List servers → 2. List countries for a server → 3. List services for that country → 4. Rent a number using their IDs → 5. Poll for the SMS code → 6. Cancel if you didn't get an OTP in time.
Available servers
Call GET /servers for the live, up-to-date list — server numbers and availability can change. Every server is a general multi-service source (any supported app/service, any of its countries).
{
"status": "success",
"balance": 15.5
}
{
"status": "success",
"servers": [
{ "server_number": 1, "name": "Server 1" },
{ "server_number": 2, "name": "Server 2" },
{ "server_number": 3, "name": "Server 3" },
{ "server_number": 4, "name": "Server 4" },
{ "server_number": 6, "name": "Server 6" }
]
}
{
"status": "success",
"countries": [
{ "id": 923, "name": "Pakistan" }
]
}
{
"status": "success",
"services": [
{ "id": 426, "name": "WhatsApp", "price": 0.24 }
]
}
{
"status": "success",
"order_id": 1042,
"phone": "923001234567",
"price": 0.24,
"expires_at": "2026-07-02T14:20:00+00:00"
}
{
"order_id": 1042,
"status": "completed",
"sms_code": "82914"
}
// status is one of: pending, completed, cancelled
{
"status": "success",
"order_id": 1042,
"message": "Order marked complete"
}
// Call this once you've received and used the code — releases the
// number on the provider's side. Safe to call even if already completed.
{
"status": "success",
"order_id": 1042,
"message": "Another SMS requested. Poll /check to see it arrive."
}
{
"status": "success",
"order_id": 1042,
"message": "Order cancelled and funds refunded"
}
{
"status": "200",
"server": 1,
"domain": "gmail.com",
"services": [
{ "id": "tg", "name": "Telegram", "price": 0.15, "count": 120 }
]
}
// Server 1 sells one email per SERVICE (id). Use the id as service_id when buying.
{
"status": "200",
"email_id": "abc123",
"email": "randomuser@gmail.com",
"price": 0.15,
"balance": 14.85
}
// service_id and domain are both required on Server 1.
{
"status": "200",
"server": 2,
"site": "telegram.com",
"domains": [
{ "domain": "outlook.com", "name": "outlook.com", "price": 0.06, "count": 340 },
{ "domain": "hotmail.com", "name": "hotmail.com", "price": 0.05, "count": 0 }
]
}
// Server 2 is priced per DOMAIN and the stock depends on the site you want
// the code from (site = the website that will send the email, e.g.
// telegram.com, facebook.com). count 0 = out of stock. site defaults to telegram.com.
{
"status": "200",
"email_id": "98765",
"email": "randomuser@outlook.com",
"price": 0.06,
"balance": 14.94
}
// Server 2: no service_id needed. Pass the domain from the list above and the
// SAME site you listed with (the price you were shown is the price charged).
// Errors: "No stock available", "Domain not available", "Insufficient balance".
{
"status": "200",
"email_id": "abc123",
"messages": [
{ "email": "randomuser@gmail.com", "code": "482910" }
]
}
// Poll every 3-5 seconds.
// status 200 = code received, 202 = still waiting (messages is empty),
// 300 = activation cancelled / expired and refunded, 404 = unknown email_id.
{
"status": "200",
"message": "Cancelled and refunded",
"refunded": 0.15,
"balance": 15.0
}
// Only an email that has not received its code can be cancelled for a refund.
{
"status": "200",
"total": 12,
"page": 1,
"per_page": 20,
"history": [
{
"email_id": "abc123",
"email_address": "randomuser@gmail.com",
"service_name": "Telegram",
"domain": "gmail.com",
"status": "received",
"code": "482910",
"price": 0.15,
"server": 1,
"created_at": "2026-01-01 12:00:00"
}
]
}
// status: active | received | cancelled
{
"status": "200",
"provider": "smsbus",
"countries": [
{ "country_code": "CA", "country_name": "Canada" }
]
}
{
"status": "200",
"pricing": [
{ "id": 7, "duration_hours": 720, "custom_price": 4.5 }
]
}
{
"status": "200",
"id": "55",
"phone_number": "15551234567",
"price_paid": 4.5,
"expiry_time": "2026-08-02 14:20:00",
"balance": 10.5
}
{
"status": "200",
"total": 2,
"rentals": [ { "id": "55", "phone_number": "...", "status": "active" } ]
}
{
"status": "200",
"messages": [ { "content": "Your code is 482910" } ]
}
{
"status": "200",
"message": "Number renewed successfully!",
"new_expiry": "2026-09-02T14:20:00+00:00",
"balance": 6.0
}
{
"status": "200",
"message": "Rental cancelled and refund applied!",
"refunded": 4.5,
"balance": 15.0
}
// Server 1 (SMS-Bus): must cancel within 20 minutes of purchase.
// Server 2 (Quackr): must cancel within 2 hours of purchase.
// Both providers: cancellation is blocked once an SMS has been received.
{
"status": "200",
"country_code": "US",
"services": [
{ "id": 3, "service_code": "wa", "service_name": "WhatsApp", "duration_preset": "oneMonth", "duration_hours": 720, "custom_price": 5.4 }
]
}
// Durations are always one of: oneWeek, oneMonth, sixMonths, twelveMonths
// — no shorter options exist for per-service rentals.
{
"status": "200",
"rental_id": 12,
"phone_number": "12025551234",
"service_name": "WhatsApp",
"price_paid": 5.4,
"expiry_time": "2026-08-05 20:00:00",
"balance": 9.6
}
{
"status": "200",
"total": 1,
"rentals": [ { "rental_id": 12, "phone_number": "...", "service_name": "WhatsApp", "status": "active" } ]
}
{
"status": "200",
"messages": [ { "sender": "WhatsApp", "content": "Your code is 123-456", "received_at": "2026-07-05 20:10:00" } ]
}
{
"status": "200",
"message": "Number renewed successfully!",
"new_expiry": "2026-09-05T20:00:00+00:00",
"balance": 4.2
}
// No cancel endpoint exists for per-service rentals — this product
// has no cancellation option, matching Quackr's own API.