Первый запрос
Проверьте, что ключ работает и привязан к пользователю. Это лучший старт до покупки номера.
curl -X GET "https://api.hush-sms.com/v1/me" \ -H "Authorization: Bearer <api_key>"
Hush SMS · API
REST API для каталога, покупки виртуальных номеров, проверки статуса и безопасной работы через идемпотентные запросы.
Проверьте, что ключ работает и привязан к пользователю. Это лучший старт до покупки номера.
curl -X GET "https://api.hush-sms.com/v1/me" \ -H "Authorization: Bearer <api_key>"
Для создания заказа обязателен Idempotency-Key. Повтор с тем же ключом защищает от двойной покупки.
curl -X POST "https://api.hush-sms.com/v1/numbers" \
-H "Authorization: Bearer <api_key>" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{"service":"tg","country":0}'
order_id.Такой порядок запросов покрывает основной поток интеграции: от выбора сервиса до статуса и отмены.
Сначала запросите GET /v1/me, чтобы убедиться, что ключ активен, а баланс и профиль читаются корректно.
Получите сервисы через GET /v1/services, затем страны и цены через GET /v1/services/{code}/countries.
Вызовите POST /v1/numbers с Idempotency-Key. Это защищает от повторной покупки при ретраях.
Используйте GET /v1/numbers/{order_id} и GET /v1/numbers для получения активных заказов и SMS-кодов.
Событие отправляется при получении входящей SMS на номер, связанный с активной активацией. Настройка выполняется в Telegram-боте: Информация → API → Webhooks.
Обязательноapplication/json
JSON с данными о полученной SMS.
2xx как подтверждение успешной обработки.| Поле | Тип | Описание |
|---|---|---|
activationId | string | ID активации. Обязательное поле. |
country | integer | ID страны. Обязательное поле. |
receivedAt | string · date-time | Время получения SMS. Обязательное поле. |
service | string | Код сервиса. Обязательное поле. |
text | string | null | Текст SMS. Обязательное поле. |
code | string | null | Код из SMS. |
| Статус | Описание |
|---|---|
200 | Webhook успешно принят. Рекомендуемый ответ. |
default | Webhook не принят, доставка может быть повторена. |
{
"activationId": "123456",
"service": "tg",
"text": "Your code is 12345",
"code": "12345",
"country": 2,
"receivedAt": "2025-12-16T10:30:00.000000Z"
}
Webhook успешно принят.
Без тела ответа.
Эти коды встречаются чаще всего и на них обычно нужно опираться в клиентской логике.
| Код | Когда возникает |
|---|---|
missing_token | Не передан API-ключ в заголовке Authorization. |
forbidden | Ключ невалиден, неактивен или не привязан к пользователю. |
not_available | Для выбранного сервиса и страны сейчас нет доступных номеров. |
missing_idempotency_key | При покупке номера не передан Idempotency-Key. |
too_early | Отмена запрошена раньше допустимого времени после создания заказа. |
upstream_timeout | Превышено время ожидания ответа. |
| Статус | Значение |
|---|---|
pending | Заказ создан, номер выдан, SMS ещё не получена. |
sms_received | Хотя бы одна SMS уже доступна в заказе. |
finished | Работа с заказом завершена. |
canceled | Заказ отменён, номер освобождён. |
refunded | Средства были возвращены пользователю. |
Ниже находится полный интерактивный reference по всем endpoint’ам, параметрам, схемам и примерам ответов.
Первый столбец — код для параметра service в запросах, второй — отображаемое имя. Нужен для POST /v1/numbers и GET /v1/services/{code}/countries.
Числовой ID страны (country) для покупки номера. Название на английском — название на русском.