SecureSMS API

Buy virtual numbers, receive SMS codes and manage activations programmatically. Plain HTTP — every request is a single GET with your key. Responses are text or JSON.

Base URLhttps://api.securesms.io/stubs/handler_api.php

Authentication

Every request takes your private api_key as a query parameter. Keep it server-side — anyone with this key can spend your balance.

••••••••••••••••••••••••
Created Status Active Rate limit 100 / min

Regenerating immediately invalidates the old key. Never expose it in frontend code.

cURL
curl "https://api.securesms.io/stubs/handler_api.php?api_key=YOUR_API_KEY&action=getBalance"

Get balance GET

Returns your account balance in USD.

Request
curl "…/handler_api.php?api_key=YOUR_API_KEY&action=getBalance"
Response
ACCESS_BALANCE:2.356

Buy a number GET

Reserves a number for a service in a country. getNumberV2 returns JSON with full activation info.

ParamDescription
api_keyrequiredYour API key
servicerequiredService code, e.g. tg (see Services)
countryrequiredCountry id, e.g. 22 (see Countries)
maxPriceoptionalMax price you'll pay
providerIdsoptionalComma-separated provider ids to buy from
Request
curl "…?api_key=YOUR_API_KEY&action=getNumberV2&service=tg&country=22&maxPrice=0.5"
Response · 200
{
  "activationId": "123456",
  "phoneNumber": "919876543210",
  "activationCost": 0.28,
  "countryCode": "22",
  "canGetAnotherSms": true,
  "activationTime": "2026-06-12 21:14:05",
  "activationOperator": "any"
}

Get SMS code GET

Poll the activation until the code arrives. Or set a webhook to receive it instantly.

Request
curl "…?api_key=YOUR_API_KEY&action=getStatus&id=123456"
Possible responses
STATUS_WAIT_CODE            # waiting for SMS
STATUS_WAIT_RETRY:12345     # waiting for the next SMS
STATUS_OK:482910           # code received
STATUS_CANCEL               # activation canceled

Set status GET

Drive the activation lifecycle.

statusMeaning
1SMS sent — number is ready
3Request another code (free)
6Confirm code & complete activation
8Cancel activation & refund
Cancel
curl "…?api_key=YOUR_API_KEY&action=setStatus&status=8&id=123456"
# → ACCESS_CANCEL  (only after 2 min from purchase)

Prices GET

getPrices gives cost + count. getPricesV3 breaks it down by provider.

getPricesV3
curl "…?api_key=YOUR_API_KEY&action=getPricesV3&service=tg&country=22"

{
  "22": { "tg": {
    "2266": { "price": 0.28, "count": 1, "provider_id": 2266 },
    "2260": { "price": 1.51, "count": 168, "provider_id": 2260 }
  } }
}

Services GET

Full list of services and their codes (1,024+).

getServicesList
curl "…?api_key=YOUR_API_KEY&action=getServicesList"

{ "status": "success", "services": [
  { "code": "tg", "name": "Telegram" },
  { "code": "wa", "name": "WhatsApp" },
  { "code": "go", "name": "Google, Gmail, Youtube" }
] }

Countries GET

Country ids with localized names.

getCountries
curl "…?api_key=YOUR_API_KEY&action=getCountries"

{ "22": { "id": 22, "eng": "India", "rus": "Индия", "chn": "印度" } }

Top countries GET

Top-10 countries for a service with the best Gold partners — sorted by sales.

getTopCountriesByService
curl "…?api_key=YOUR_API_KEY&action=getTopCountriesByService&service=tg"

{ "colombia": {
    "3243": { "price": 0.106, "count": 1206 },
    "3406": { "price": 2.211, "count": 21670 }
} }

Deposit wallet GET

Static crypto address for top-ups (USDT/TRX on Tron).

getActualWalletAddress
curl "…/api/payment/getActualWalletAddress?api_key=YOUR_API_KEY&coin=usdt&network=tron"

{ "wallet_address": "TWXE3jHmPvHYVXUbEyn5aaaAcvp9g4X3ys" }

Webhook POST

Set a webhook URL in your profile and we'll POST each incoming SMS — no polling. Whitelist our IP 167.235.198.205 and always return HTTP 200.

POST your endpoint
{
  "activationId": 123456,
  "service": "tg",
  "text": "Your code is 482910",
  "code": "482910",
  "country": 22,
  "receivedAt": "2026-06-12 21:14:08"
}

Errors

CodeMeaning
BAD_KEYInvalid API key
BAD_ACTIONUnknown action
WRONG_SERVICEUnknown service code
NO_NUMBERSNo numbers available for that service/country
NO_BALANCETop up your balance
NO_ACTIVATIONUnknown activation id
EARLY_CANCEL_DENIEDCancel is allowed only 2 minutes after purchase