Совместимость со старым API
Если вы уже используете sms-activate.org или похожий сервис, перейдите на SMSBulk, изменив только базовый URL. Все эндпоинты, имена действий и форматы ответов остаются идентичными.
Переключение в одну строку
Существующие скрипты, бот-библиотеки и интеграции работают без изменений кода. ID стран соответствуют каноническому маппингу (TR=187, US=12, RU=0, и т.д.).
Авторизация
Как в SMS-Activate: передавайте API-ключ как query string параметр.
# Query string (sms-activate convention)
curl "https://smsbulk.net/stubs/handler_api.php?api_key=YOUR_KEY&action=getBalance"
# Response (plain text)
ACCESS_BALANCE:42.50Справочник действий
Все 7 действий поддерживаются. Имена, параметры и форматы ответов идентичны SMS-Activate.
getBalance
Возвращает текущий баланс вашего кошелька в USD.
GET /stubs/handler_api.php?api_key=KEY&action=getBalanceACCESS_BALANCE:42.50getNumber
Резервирует виртуальный номер. Обязательно: код сервиса (wa/tg/ig/и т.д.) и страна (целочисленный ID, ISO или slug).
GET /stubs/handler_api.php?api_key=KEY&action=getNumber&service=wa&country=187ACCESS_NUMBER:12345678:79991234567getStatus
Опрашивает статус активации. Возвращает STATUS_WAIT_CODE, STATUS_OK:<code> или STATUS_CANCEL.
GET /stubs/handler_api.php?api_key=KEY&action=getStatus&id=12345678STATUS_OK:123456setStatus
Обновляет состояние активации. status=1 (SMS отправлено), 3 (запросить ещё), 6 (завершить), 8 (отменить).
GET /stubs/handler_api.php?api_key=KEY&action=setStatus&id=12345678&status=6ACCESS_ACTIVATIONgetNumbersStatus
Возвращает количество в наличии по комбинации сервис-страна. JSON dict с ключами вида 'wa_187'.
GET /stubs/handler_api.php?api_key=KEY&action=getNumbersStatus&country=187{"wa_187":1234,"tg_187":567}getPrices
Возвращает цены и наличие для service+country комбинаций. Вложенный JSON по ID страны.
GET /stubs/handler_api.php?api_key=KEY&action=getPrices&service=wa&country=187{"187":{"wa":{"cost":0.5,"count":1234}}}getCountries
Возвращает канонический список поддерживаемых стран с ID SMS-Activate и кодами ISO.
GET /stubs/handler_api.php?api_key=KEY&action=getCountries[{"id":187,"iso":"TR"},...]Значения setStatus
Что делает каждый код статуса и какой ответ вы получите.
| Значение | Действие | Ответ |
|---|---|---|
| 1 | Сообщить об отправке SMS (no-op) | ACCESS_READY |
| 3 | Запросить ещё SMS | ACCESS_RETRY_GET |
| 6 | Отметить активацию завершённой | ACCESS_ACTIVATION |
| 8 | Отменить активацию | ACCESS_CANCEL |
ID стран
Канонические ID SMS-Activate сохранены. Топ страны:
Тройная поддержка форматов: Параметр country принимает целочисленный ID (187), ISO-код (TR) или slug (turkey).
Коды ошибок
Все ошибки возвращают plain text коды (text/plain). Никогда не переводятся — совместимость с бот-библиотеками.
| Код | Значение |
|---|---|
| BAD_KEY | Неверный или отсутствующий API-ключ |
| BAD_ACTION | Параметр action отсутствует или некорректен |
| BAD_SERVICE | Код сервиса не распознан |
| BAD_COUNTRY | Параметр country не распознан |
| BAD_STATUS | Неверное значение status для setStatus |
| WRONG_ACTION | Имя действия не поддерживается |
| NO_BALANCE | Недостаточный баланс кошелька |
| NO_NUMBERS | Нет доступных номеров для этой service+country |
| NO_ACTIVATION | ID активации не найден или не ваш |
| RATE_LIMITED | Превышена дневная квота API — см. заголовок Retry-After |
| ERROR_SQL | Внутренняя ошибка сервера |
Готовы к миграции?
Получите API-ключ и начните с одной curl-команды. Без SDK, без изменений кода.
