API documentation
Buy SMS activations from your own software. Two formats are available: a simple JSON REST API and an API compatible with SMS-Activate — programs that support SMS-Activate work after you replace the URL and the key.
The API key is created in your profile — available after your first top-up. Prices and the balance are in rubles. Rate limit: 20 requests per second per key.
Price and country selection
- Each country has several price levels: as a rule, the more expensive, the more reliable.
- Without
max_price(maxPrice) — the cheapest level is bought. With it — the most expensive (most reliable) level not above it. - Without a country — Auto mode: the most reliable activation in the price range across all countries.
- If no SMS arrives, the money returns to the balance automatically (on expiry, cancel or replacement).
REST API
Base URL: https://shifrsms.store/api/v1. Key: Authorization: Bearer <key>
(or the X-API-Key header, or ?api_key=).
curl -X POST https://shifrsms.store/api/v1/orders \
-H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
-d '{"service": "tg", "max_price": 40}'
{"ok": true, "order": {"id": 1842, "status": "waiting", "phone": "6281244170935", "price": "35.00",
"currency": "RUB", "service": {"code": "tg", "name": "Telegram"},
"country": {"code": "6", "name": "Indonesia", "iso": "ID"}, "sms": [],
"expires_at": "2026-10-20T12:20:00Z", "cancel_available_at": "2026-10-20T12:02:00Z"}}
Order statuses: waiting, received, completed, cancelled, replaced, expired.
Errors: {"ok": false, "error": "NO_BALANCE", "message": "..."} — BAD_KEY, BAD_SERVICE, BAD_COUNTRY, NO_NUMBERS, NO_BALANCE, WRONG_MAX_PRICE, TOO_MANY_ACTIVE, RATE_LIMIT.
SMS-Activate compatible API
URL: https://shifrsms.store/stubs/handler_api.php?api_key=KEY&action=...
— in your program, replace the SMS-Activate URL with ours and enter our key. Service and country codes are the same as SMS-Activate’s (where a service or country has no such code, ours is used: s123, c45 — see getServicesList and getCountries).
| action | Parameters | Response |
|---|---|---|
| getBalance | — | ACCESS_BALANCE:123.45 |
| getNumber | service, country*, maxPrice* | ACCESS_NUMBER:ID:PHONE, NO_NUMBERS, NO_BALANCE, BAD_SERVICE, WRONG_MAX_PRICE:min |
| getNumberV2 | service, country*, maxPrice* | JSON: activationId, phoneNumber, activationCost… |
| getStatus | id | STATUS_WAIT_CODE, STATUS_OK:CODE, STATUS_CANCEL |
| setStatus | id, status | 8 — cancel (ACCESS_CANCEL / EARLY_CANCEL_DENIED), 6 — finish (ACCESS_ACTIVATION), 3 — another SMS (ACCESS_RETRY_GET), 1 — ACCESS_READY |
| getActiveActivations | — | JSON |
| getPrices | service*, country* | JSON {country: {service: {cost, count}}} |
| getCountries | — | JSON |
| getServicesList | — | JSON |
* — optional. Without a country — Auto mode.
GET https://shifrsms.store/stubs/handler_api.php?api_key=KEY&action=getNumber&service=tg&country=6 ACCESS_NUMBER:1842:6281244170935 GET https://shifrsms.store/stubs/handler_api.php?api_key=KEY&action=getStatus&id=1842 STATUS_OK:51824