SMS Panel SMS Panel
Currency PKR (Rs)
Toggle Theme

Log in Get Started
RESTful Developer API v1.0

Developer API Documentation

Programmatically procure numbers, retrieve real-time SMS OTP codes, check live balances, query server rates, and automate activation flows at scale.

Quickstart & Base Endpoint

v1.0 REST

All requests to the SMS Panel REST API are transmitted over HTTPS. Responses are uniformly formatted in JSON with industry-standard HTTP response status codes.

Base API Endpoint
https://fastsmsotp.shop/api/v1

Both /api/v1/... and direct /api/... routes are fully supported across all endpoints.

Authentication

Authenticate your requests using your secret API Key. You can generate and view your API key in your API Credentials page. We support three convenient authentication formats:

Recommended
Bearer Token Header

Authorization: Bearer YOUR_API_KEY

Custom Header
X-API-KEY Header

X-API-KEY: YOUR_API_KEY

Query String
URL Parameter

?api_key=YOUR_API_KEY

Standard HTTP Headers
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
GET

/balance

Retrieve your account real-time balance, currency, and user identity.

bash / curl
curl -s -X GET "https://fastsmsotp.shop/api/v1/balance" \
  -H "Authorization: Bearer YOUR_API_KEY"
PHP
<?php
$ch = curl_init("https://fastsmsotp.shop/api/v1/balance");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = json_decode(curl_exec($ch), true);
echo "Balance: $" . $res['data']['balance'];
curl_close($ch);
Python 3
import requests

headers = {"Authorization": "Bearer YOUR_API_KEY"}
res = requests.get("https://fastsmsotp.shop/api/v1/balance", headers=headers).json()
print("Balance:", res['data']['balance'])
Node.js (fetch)
const res = await fetch("https://fastsmsotp.shop/api/v1/balance", {
  headers: { "Authorization": "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log("Balance:", data.data.balance);
Sample 200 OK Response:
application/json
{
  "status": "1",
  "success": true,
  "msg": "Balance retrieved",
  "balance": 24.50,
  "currency": "USD",
  "formatted_balance": "$24.50",
  "data": {
    "balance": 24.50,
    "currency": "USD",
    "user_id": 1420,
    "formatted_balance": "$24.50"
  }
}
GET

/services/list

Retrieve all supported virtual number verification services along with their unique service slugs.

cURL Request
curl -s -X GET "https://fastsmsotp.shop/api/v1/services/list"
Sample 200 OK Response:
application/json
{
  "status": "1",
  "msg": "Services retrieved",
  "data": [
    { "id": 1, "name": "WhatsApp", "slug": "whatsapp", "icon": "fa-brands fa-whatsapp", "sort_order": 1 },
    { "id": 2, "name": "Telegram", "slug": "telegram", "icon": "fa-brands fa-telegram", "sort_order": 2 },
    { "id": 3, "name": "Google / Gmail", "slug": "google-gmail-youtube", "icon": "fa-brands fa-google", "sort_order": 3 },
    { "id": 4, "name": "Instagram", "slug": "instagram-threads", "icon": "fa-brands fa-instagram", "sort_order": 4 },
    { "id": 5, "name": "Facebook", "slug": "facebook", "icon": "fa-brands fa-facebook", "sort_order": 5 }
  ]
}
GET

/countries/list

Retrieve all supported countries with their numeric country IDs and ISO country codes.

cURL Request
curl -s -X GET "https://fastsmsotp.shop/api/v1/countries/list"
Sample 200 OK Response:
application/json
{
  "status": "1",
  "msg": "Countries retrieved",
  "data": [
    { "id": 187, "name": "United States", "code": "us", "flag_code": "us" },
    { "id": 4,   "name": "India", "code": "in", "flag_code": "in" },
    { "id": 12,  "name": "Indonesia", "code": "id", "flag_code": "id" },
    { "id": 16,  "name": "United Kingdom", "code": "gb", "flag_code": "gb" },
    { "id": 22,  "name": "Russia", "code": "ru", "flag_code": "ru" }
  ]
}
GET

/prices/list

Query real-time prices and available live number stock by service and country.

Query Parameters:
Parameter Type Required Description
service string Optional Service slug (e.g., whatsapp, telegram, wa).
country integer / string Optional Numeric country ID or code (e.g., 187, 12, 4).
server string Optional SMS Server slug (e.g., server-1 or server-2).
cURL Request
curl -s -X GET "https://fastsmsotp.shop/api/v1/prices/list?service=whatsapp&country=187"
Sample 200 OK Response:
application/json
{
  "status": "1",
  "success": true,
  "msg": "Prices retrieved successfully",
  "count": 1,
  "data": [
    {
      "service": "whatsapp",
      "service_name": "Whatsapp",
      "country_id": 187,
      "country_name": "United States",
      "price": 0.45,
      "cost": 0.35,
      "stock": 4200,
      "server": "server-1"
    }
  ]
}
GET

/servers

Retrieve all active SMS Server routes, delivery health, and latency telemetry.

cURL Request
curl -s -X GET "https://fastsmsotp.shop/api/v1/servers"
Sample 200 OK Response:
application/json
{
  "status": "1",
  "data": [
    {
      "id": 1,
      "name": "Server 1",
      "slug": "server-1",
      "status": "active",
      "health": {
        "ping_ms": 115,
        "otp_success": "98.9%",
        "avg_delivery": "22s",
        "uptime": "99.9%"
      }
    },
    {
      "id": 2,
      "name": "Server 2",
      "slug": "server-2",
      "status": "active",
      "health": {
        "ping_ms": 142,
        "otp_success": "98.2%",
        "avg_delivery": "25s",
        "uptime": "99.8%"
      }
    }
  ]
}
POST

/orders/create

Allocate and procure a fresh virtual number for an incoming OTP verification code.

Request Parameters (JSON Body or POST):
Field Type Required Description
service_id string / int Required Service code or slug (e.g., wa or whatsapp, tg or telegram).
country_id integer / string Required Numeric country ID (e.g., 187 for USA, 4 for India, 12 for Indonesia).
server string Optional SMS Server route (e.g., server-1, server-2, server-4). If omitted, optimal server with automatic failover is auto-selected.
cURL Request
curl -s -X POST "https://fastsmsotp.shop/api/v1/orders/create" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "wa",
    "country_id": 187
  }'
Sample 200 OK Response:
application/json
{
  "status": "1",
  "msg": "Number retrieved successfully",
  "data": {
    "order_id": 98142,
    "order_code": "ORD-98142",
    "phone_number": "+12024561111",
    "country_code": "187",
    "service": "wa",
    "cost": 0.45,
    "status": "pending",
    "expires_at": "2026-10-17 14:15:00",
    "created_at": "2026-10-17 13:55:00",
    "cancel_delay_minutes": 2,
    "expiry_minutes": 20
  },
  "order_id": 98142,
  "phone_number": "+12024561111",
  "cost": 0.45
}
GET

/orders/status

Poll for the incoming SMS verification code and message text associated with an active order ID.

cURL Request
curl -s -X GET "https://fastsmsotp.shop/api/v1/orders/status?order_id=98142" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample Response: Code Received (status: "received")
application/json
{
  "status": "1",
  "msg": "Order completed",
  "data": {
    "order_id": 98142,
    "order_code": "ORD-98142",
    "status": "received",
    "sms_code": "489201",
    "full_sms": "Your WhatsApp verification code is 489-201. Do not share this code.",
    "phone_number": "+12024561111",
    "received_at": "2026-10-17 14:02:15"
  },
  "order_id": 98142,
  "sms_code": "489201",
  "status_text": "received"
}
Sample Response: Still Waiting (status: "waiting")
application/json
{
  "status": "1",
  "msg": "Status checked",
  "data": {
    "order_id": 98142,
    "order_code": "ORD-98142",
    "status": "waiting",
    "sms_code": null,
    "full_sms": null,
    "phone_number": "+12024561111"
  },
  "order_id": 98142,
  "sms_code": null,
  "status_text": "waiting"
}
POST

/orders/resend

Request a secondary or subsequent verification code within the active number activation window.

cURL Request
curl -s -X POST "https://fastsmsotp.shop/api/v1/orders/resend" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": 98142
  }'
Sample 200 OK Response:
application/json
{
  "status": "1",
  "msg": "Secondary SMS requested! Waiting for the new code to arrive...",
  "data": {
    "order_id": 98142,
    "status": "pending"
  }
}
POST

/orders/cancel

Cancel a pending order and release the number. Eligible orders are immediately refunded to your account balance.

Request Parameters:
Field Type Required Description
order_id integer / string Required Numeric ID or string Order ID (e.g., 98142 or ORD-98142).
cURL Request
curl -s -X POST "https://fastsmsotp.shop/api/v1/orders/cancel" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": 98142
  }'
Sample 200 OK Response:
application/json
{
  "status": "1",
  "msg": "Order cancelled and refunded successfully",
  "data": {
    "new_balance": 24.50,
    "refund_amount": 0.45
  }
}

Error Codes Reference

The API uses standard HTTP error codes to communicate error states clearly.

HTTP Status Error Code Description & Suggested Action
400 BAD_REQUEST Missing or malformed payload. Verify request JSON and headers.
401 UNAUTHORIZED Invalid or missing API key in Authorization header. Check your API credentials.
402 INSUFFICIENT_BALANCE Your account balance is too low for this transaction. Please add funds to your wallet.
404 NO_NUMBERS_AVAILABLE No temporary numbers are currently in stock for this service/country pair. Try another server or country.
404 ORDER_NOT_FOUND Specified order ID was not found or does not belong to your account.
422 VALIDATION_ERROR Required parameter is missing (e.g., service_id or country_id).
429 RATE_LIMIT_EXCEEDED Request rate exceeds limit (60 requests/minute). Slow down polling interval.
Contact Us
App
Install SMS Panel
Add to iPhone / iPad Home Screen
1
Tap the Share button in the bottom Safari toolbar.
2
Scroll down and tap Add to Home Screen.
3
Tap Add at top right to install the app on your home screen.
App
Install SMS Panel App
Android Chrome / Browser
1
Tap the Menu icon at the top-right corner of Chrome.
2
Tap Install app or Add to Home screen.
3
Confirm by clicking Install to add the APK to your phone launcher!