Главная › SMS API
API для разработчиков

API для приёма SMS на виртуальные номера

С помощью API для приёма SMS от Turonay ваше приложение, бот или панель смогут получать виртуальный номер и читать пришедший SMS-код. API работает по протоколу handler_api: если у вас уже есть интеграция под этот протокол, чаще всего достаточно сменить базовый адрес и API-ключ. Платить нужно не за выдачу номера, а за полученный код.

195сервисов сейчас в каталоге
209стран сейчас в каталоге
GET · POSTметоды запроса
HMAC-SHA256подписанные вебхуки

Страницы API

Быстрый старт за 3 шага

Сначала зарегистрируйтесь бесплатно, пополните баланс и получите API-ключ в разделе API своего профиля. В примерах вместо YOUR_KEY подставьте свой ключ. Запросы могут быть GET или POST: при POST все параметры, включая api_key, можно передавать полями формы (application/x-www-form-urlencoded) в теле запроса, чтобы ключ не попадал в URL и журналы сервера. Два базовых адреса равнозначны: https://turonay.com/stubs/handler_api.php и https://turonay.com/api/.

1. Проверьте баланс

getBalance возвращает баланс в виде ACCESS_BALANCE:сумма; так же быстро проверяется, что ключ работает. Сумма указана в TRY и показывает доступный остаток за вычетом средств, зарезервированных под открытые активации.

bash
curl "https://turonay.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getBalance"
ACCESS_BALANCE:125.4000

2. Получите номер

service — код сервиса (wa для WhatsApp), country — идентификатор страны. Успешный запрос вернёт ACCESS_NUMBER:id_активации:телефон. Цена в этот момент резервируется на балансе, но ещё не списывается. Если передать в maxPrice максимальную приемлемую цену, то при её превышении номер не выдаётся, а в ответе приходит WRONG_MAX_PRICE:цена.

bash
curl "https://turonay.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getNumber&service=wa&country=62&maxPrice=20"
ACCESS_NUMBER:184213:905301234567

3. Получите код

Пока кода нет, getStatus возвращает STATUS_WAIT_CODE; когда код придёт — STATUS_OK:код. Именно в этот момент оплата становится окончательной. Вместо опроса можно использовать подписанные вебхуки.

bash
curl "https://turonay.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getStatus&id=184213"
STATUS_WAIT_CODE

curl "https://turonay.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getStatus&id=184213"
STATUS_OK:123456

Нужен JSON? getNumberV2

getNumberV2 принимает те же параметры, что и getNumber, и при успехе возвращает JSON: id активации, номер телефона, цену, валюту (949 = TRY), страну, время окончания и оператора. Поля activationTime и activationEndTime заданы по времени сервера (Europe/Istanbul, UTC+3) в формате Y-m-d H:i:s без указания часового пояса. При ошибке приходят классические текстовые коды (NO_NUMBERS, NO_BALANCE, WRONG_MAX_PRICE:цена).

json
{
  "activationId": "184213",
  "phoneNumber": "905301234567",
  "activationCost": "12.50",
  "currency": 949,
  "countryCode": "62",
  "canGetAnotherSms": true,
  "activationTime": "2026-10-10 12:00:00",
  "activationEndTime": "2026-10-10 12:20:00",
  "activationOperator": "any"
}

Почему API виртуальных номеров Turonay

Цель — короткая интеграция и предсказуемые расходы.

Совместимый протокол

Распространённый формат handler_api: те же названия action, те же текстовые ответы и дополнительно JSON-методы. Готовые клиенты и боты обычно заработают после смены базового адреса; коды сервисов и идентификаторы стран сверьте через getPrices.

Оплата за полученный код

При выдаче номера сумма только резервируется. Если код не пришёл, провайдер отменил активацию или время истекло, зарезервированная сумма возвращается на баланс.

Подписанные вебхуки

Когда приходит код или активация отменяется, на ваш сервер отправляется HTTPS POST с подписью HMAC-SHA256. Неудачные доставки повторяются с нарастающими паузами.

Актуальные цены и остатки

getPrices отдаёт текущую цену и количество номеров по каждой паре «сервис — страна». Не нужно гадать: получаете список, видите цену и только потом покупаете.

Несколько валют

Цены в API указаны в TRY (код валюты 949 в getNumberV2). На сайте баланс и цены можно смотреть в TRY, USD или RUB.

Сайт и документация на трёх языках

Сайт и документация API доступны на турецком, английском и русском. Если возникнут вопросы при интеграции, напишите нам через систему обращений в поддержку.

Методы API

В каждом запросе передаются api_key и action. В таблице ниже собраны все action с типичными ответами; подробности — на странице «Справочник API».

ActionЧто делаетОтвет
getBalance Возвращает доступный баланс (зарезервированные суммы уже вычтены). ACCESS_BALANCE:125.4000
getPrices Возвращает в JSON текущую цену и количество номеров по сервисам и странам. Фильтр — service и country; цены учитывают скидку вашего уровня. {"62":{"wa":{"cost":12.50,"count":744716}}}
getCountries Список стран, в которых можно получить номер (id и название). {"62":{"id":62,"eng":"Turkey"}}
getNumbersStatus Остатки номеров по сервисам в выбранной стране. {"wa_0":"744716"}
getOperators Список доступных операторов; сейчас доступно только any. {"status":"success","countryOperators":{"62":["any"]}}
getNumber Выдаёт номер: service, country, необязательные operator и maxPrice. Цена резервируется. ACCESS_NUMBER:184213:905301234567
getNumberV2 JSON-вариант getNumber; дополнительно возвращает цену, валюту, время окончания и оператора. {"activationId":"184213","phoneNumber":"905301234567",…}
getStatus Проверяет, пришёл ли код. Оплата фиксируется в момент прихода кода. STATUS_WAIT_CODE
STATUS_OK:123456
STATUS_CANCEL
getStatusV2 JSON-вариант getStatus: после прихода кода — объект sms, до этого — текстовый статус. {"sms":{"code":"123456",…}}
getActiveActivations Открытые активации аккаунта: чтобы продолжить работу после перезапуска или построить собственную панель. {"status":"success","activeActivations":[…]}
setStatus 1 готов (списание не меняется), 3 запросить ещё одно SMS (бесплатно), 6 завершить (только после кода), 8 отменить (возврат, если кода не было; после кода — EARLY_CANCEL_DENIED). ACCESS_READY
ACCESS_RETRY_GET
ACCESS_ACTIVATION
ACCESS_CANCEL

Оплата: резерв, списание, возврат

В Turonay за виртуальный номер платят в момент получения кода, а не выдачи номера, поэтому деньги не теряются на недоставленных активациях. Схема состоит из четырёх состояний:

МоментЧто происходитВаш баланс
Номер выдан (getNumber / getNumberV2) Цена откладывается на балансе, поэтому getBalance показывает меньшую доступную сумму. Зарезервировано
Пришёл SMS-код Оплата фиксируется. Запрос дополнительного SMS на тот же номер (status=3) бесплатен. Списано
Отмена до прихода кода, отмена провайдером или истечение срока Зарезервированная сумма освобождается, ничего не списывается. Возвращено
Попытка отмены после прихода кода (status=8) Возвращается EARLY_CANCEL_DENIED; услуга уже оказана, поэтому возврата нет. Завершите активацию через status=6. Без изменений

Ограничение цены: maxPrice

Баланса должно хватать на цену номера, иначе вернётся NO_BALANCE. Чтобы защититься от неожиданного роста цены, передавайте maxPrice: если текущая цена выше, покупка не выполняется, а реальная цена приходит в ответе WRONG_MAX_PRICE:цена.

Вебхуки: уведомление о коде на ваш сервер

Вместо того чтобы каждую секунду вызывать getStatus, укажите HTTPS-адрес. Когда приходит код или активация отменяется, Turonay отправляет туда подписанный POST. Уведомление ставится в очередь, как только код записан, и обычно доставляется в течение 1–2 минут; опрос getStatus остаётся альтернативой и запасным вариантом. Адрес и секрет настраиваются в профиле, там же можно отправить тестовое событие.

  • Подпись: HMAC-SHA256 от строки timestamp.body в заголовке X-Turonay-Signature.
  • Заголовки: X-Turonay-Event, X-Turonay-Timestamp, X-Turonay-Signature, X-Turonay-Delivery.
  • Принимаются только адреса https.
  • Неудачная доставка повторяется до 8 раз с нарастающими паузами; одно и то же событие может прийти повторно, поэтому делайте обработчик идемпотентным.
http
POST /your-webhook HTTP/1.1
X-Turonay-Event: code_received
X-Turonay-Timestamp: 1791631200
X-Turonay-Signature: sha256=<hex>
X-Turonay-Delivery: dlv_<id>

signature = HMAC_SHA256(secret, timestamp + "." + body)

Примеры проверки подписи, схему данных и правила повторов смотрите в разделе «Вебхуки SMS API».

Примеры на вашем языке

Один и тот же сценарий (получить номер, дождаться кода, завершить) разобран на готовых примерах для трёх языков.

Переходите с другого API SMS-активаций?

Turonay совместим с распространённым протоколом handler_api. Если вы переходите от другого провайдера, использующего его, и ваш бот, панель или скрипт написаны под этот протокол, переход обычно сводится к трём изменениям: базовый адрес, API-ключ и сверка кодов сервисов и идентификаторов стран. Перед запуском в работу обязательно проверьте весь сценарий.

Turonay — самостоятельный сервис. Он не связан с другими провайдерами и не заявляет, что заменяет их. Перенос баланса невозможен: счёт в Turonay пополняется отдельно.

Цены и оплата

Цены зависят от сервиса и страны и постоянно обновляются, поэтому вместо фиксированного списка актуальное значение читается через getPrices. Свежие примеры и расчёт стоимости — на странице «Цены SMS API». Все суммы в API указаны в TRY; на сайте можно смотреть TRY, USD или RUB.

Баланс пополняется на странице «Оплата» банковской картой (Shopier, Stripe), криптовалютой (Cryptomus, Heleket) или банковским переводом; доступные способы зависят от валюты и региона. Отдельной платы за доступ к API нет.

Перепродавайте со своей наценкой

Если вы продаёте SMS-активации клиентам через Telegram-бота, панель или сайт, на странице «Реселлерам SMS» разобраны скидки по уровням и расчёт наценки.

Ресурсы для разработчиков

Готовые файлы, которые ускорят интеграцию:

Полный справочник методов и кодов ошибок: «Справочник API».

Частые вопросы

API для приёма SMS платный?

Отдельной подписки или платы за доступ к API нет. Вы платите только за доставленные коды: при выдаче номера сумма резервируется на балансе, а при получении кода списывается.

Нужно ли платить, если код не пришёл?

Нет. Если вы отменили активацию до прихода кода, провайдер отменил её или срок номера истёк, зарезервированная сумма возвращается на баланс.

Заработает ли моя интеграция, рассчитанная на handler_api?

Turonay работает по протоколу handler_api; в большинстве интеграций достаточно сменить базовый адрес (https://turonay.com/stubs/handler_api.php) и API-ключ. Коды сервисов, идентификаторы стран и цены сверьте через getPrices. Turonay — независимый сервис, не связанный с другими провайдерами.

Можно ли отменить активацию после прихода кода?

Нет. После прихода кода setStatus 8 возвращает EARLY_CANCEL_DENIED, а оплата не возвращается, так как услуга оказана. Завершите активацию через setStatus 6.

Опрашивать код или использовать вебхуки?

Оба способа хорошо дополняют друг друга. Вебхук-уведомление ставится в очередь, как только код записан, и обычно доставляется в течение 1–2 минут; getStatus и getActiveActivations — альтернативный путь и страховка от пропущенных событий и перезапусков. Тело вебхука подписано HMAC-SHA256, обязательно проверяйте подпись.

В какой валюте цены и как оплатить?

Цены в API указаны в TRY; на сайте их можно смотреть в TRY, USD или RUB. Баланс пополняется картой (Shopier, Stripe), криптовалютой (Cryptomus, Heleket) или банковским переводом; доступные способы зависят от валюты и региона.

Что будет, если цена внезапно вырастет?

Передавайте максимальную приемлемую цену в maxPrice. Если текущая цена выше, покупка не выполняется, а реальная цена приходит в ответе WRONG_MAX_PRICE:цена.

Для каких задач предназначен API?

Он создан для разработчиков, автоматизации тестирования, QA-команд и реселлеров. Использование должно соответствовать правилам соответствующих платформ и условиям использования Turonay.

Начните интеграцию

Зарегистрируйтесь бесплатно, пополните баланс и получите первый номер за несколько минут.