Отрасль: Связь и уведомления. Актуально на 2026-10-24.
HTTP API сервиса SMS-рассылок SMS.RU: отправка SMS, проверка статуса и стоимости, баланс и дневной лимит, список одобренных отправителей, стоп-лист, авторизация пользователя по звонку и вебхуки со статусами сообщений. Запросы — GET или POST с параметрами; с json=1 ответ приходит в JSON.
Коды подтверждения, статусы заказов, напоминания — одно сообщение или рассылка до 100 номеров за запрос.
curl -X POST https://sms.ru/sms/send \
-d api_id=<api_id> \
-d to=79991234567 \
--data-urlencode 'msg=Код подтверждения: 4821' \
-d from=<имя отправителя> \
-d json=1
Проверить, дошло ли SMS, — опросом или вебхуком.
# Статус двух сообщений
curl -G https://sms.ru/sms/status \
-d api_id=<api_id> \
-d sms_id=000000-10000000,000000-10000001 \
-d json=1
# Обработчик статусов
curl -G https://sms.ru/callback/add \
-d api_id=<api_id> \
--data-urlencode 'url=https://example.ru/smsru/callback' \
-d json=1
Бесплатная для пользователя альтернатива SMS-коду: он звонит на выданный номер, звонок сбрасывается, номер подтверждён.
curl -G https://sms.ru/callcheck/add -d api_id=<api_id> -d phone=79991234567 -d ip=203.0.113.7 -d json=1
# в ответе: check_id и call_phone_pretty — номер, на который пользователь должен позвонить
curl -G https://sms.ru/callcheck/status -d api_id=<api_id> -d check_id=<check_id> -d json=1
# → check_status: 401 — номер подтверждён
Не упереться в нулевой баланс или дневной лимит посреди рассылки.
curl -G https://sms.ru/my/balance -d api_id=<api_id> -d json=1
curl -G https://sms.ru/my/limit -d api_id=<api_id> -d json=1
curl -G https://sms.ru/my/senders -d api_id=<api_id> -d json=1
https://sms.ruТип: API-ключ
Рекомендуемый способ — параметр api_id (выдаётся на главной странице личного кабинета). Альтернатива — login (номер телефона) и password; в этом случае обязательно HTTPS.
Можно и GET; при отправке более чем на 10 номеров используйте POST.
В JSON-ответе: status, status_code, sms (объект по номерам: status, status_code, sms_id или status_text), balance.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API (или login + password) |
to |
query | string | да | Номера через запятую, до 100 за запрос; или форма to[номер]=текст |
msg |
query | string | да | Текст в UTF-8 |
json |
query | integer | нет | 1 — ответ в JSON (рекомендуется) |
from |
query | string | нет | Одобренное имя отправителя; по умолчанию — отправитель по умолчанию |
ip |
query | string | нет | IP конечного пользователя (для защиты от злоупотреблений) |
time |
query | integer | нет | Время отправки UNIX timestamp, до 2 месяцев вперёд |
ttl |
query | integer | нет | Время жизни сообщения в минутах, 1–1440 |
daytime |
query | integer | нет | 1 — учитывать часовой пояс получателя, ночью отложить до 10:00 (time игнорируется) |
translit |
query | integer | нет | 1 — перевести кириллицу в латиницу |
test |
query | integer | нет | 1 — имитация отправки без доставки и списания |
partner_id |
query | string | нет | Идентификатор партнёрской программы |
Пример запроса:
https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1
Пример ответа:
https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to[79255070602]=hello+world&to[74993221627]=hello+world&json=1
В JSON-ответе для каждого sms_id: status, status_code, cost, status_text.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
sms_id |
query | string | да | ID сообщений через запятую, до 100 |
json |
query | integer | нет | 1 — ответ в JSON |
В JSON-ответе: sms по номерам (cost, sms — число частей), total_cost, total_sms.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
to |
query | string | да | Номера через запятую, до 100; или to[номер]=текст |
msg |
query | string | да | Текст в UTF-8 |
multi |
query | string | нет | Разные тексты на разные номера (до 100), вместо to и msg |
json |
query | integer | нет | 1 — ответ в JSON |
from |
query | string | нет | Имя отправителя |
translit |
query | integer | нет | 1 — транслитерация |
Пример запроса:
https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
json |
query | integer | нет | 1 — ответ в JSON |
Пример запроса:
https://sms.ru/my/balance?api_id=[зарегистрируйтесь, чтобы получить api_id]&json=1
В JSON-ответе: total_limit (дневной лимит), used_today (номеров, на которые уже отправлено сегодня).
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
json |
query | integer | нет | 1 — ответ в JSON |
Пример запроса:
https://sms.ru/my/limit?api_id=[зарегистрируйтесь, чтобы получить api_id]&json=1
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
json |
query | integer | нет | 1 — ответ в JSON |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
stoplist_phone |
query | string | да | Номер телефона |
stoplist_text |
query | string | да | Причина добавления |
json |
query | integer | нет | 1 — ответ в JSON |
Пример запроса:
https://sms.ru/stoplist/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&stoplist_phone=[номер телефона]&stoplist_text=[причина]&json=1
Пользователь должен позвонить на выданный номер в течение 5 минут; звонок бесплатный, система его сбрасывает. В JSON-ответе: check_id, call_phone, call_phone_pretty, call_phone_html.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
phone |
query | string | да | Номер пользователя, с которого ожидается звонок |
ip |
query | string | нет | IP пользователя (из-за границы выдаётся обычный номер вместо 8-800) |
json |
query | integer | нет | 1 — ответ в JSON |
Пример запроса:
https://sms.ru/callcheck/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&phone=79255070602&json=1
В JSON-ответе: check_status (400 — не подтверждён, 401 — подтверждён), check_status_text.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
check_id |
query | string | да | ID из callcheck/add |
json |
query | integer | нет | 1 — ответ в JSON |
Пример запроса:
https://sms.ru/callcheck/status?api_id=[зарегистрируйтесь, чтобы получить api_id]&check_id=[идентификатор авторизации]&json=1
Обработчик получает статусы отправленных сообщений.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
api_id |
query | string | да | Ключ API |
url |
query | string | да | Адрес обработчика (URL-кодированный при GET) |
json |
query | integer | нет | 1 — ответ в JSON |
Пример запроса:
https://sms.ru/callback/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&url=https%3A%2F%2Fyoursite.ru%2Fcallback.php&json=1
json=1 ответ — текстовые строки (код запроса, затем данные построчно).sms/status и callcheck/status документация рекомендует вебхуки.callback/del, callback/get, stoplist/del, stoplist/get, auth/check, отправка через email/SMTP; PHP-библиотека — https://sms.ru/php.| Код | Описание |
|---|---|
100 |
Запрос выполнен или сообщение в очереди |
103 |
Сообщение доставлено |
104 |
Не доставлено: истекло время жизни |
200 |
Неправильный api_id |
201 |
Недостаточно средств |
202 |
Неправильный номер получателя или нет маршрута |
203 |
Нет текста сообщения |
205 |
Сообщение слишком длинное (больше 8 SMS) |
206 |
Достигнут дневной лимит |
207 |
Нет маршрута доставки на этот номер |
208 |
Неправильный параметр time |
209 |
Номер в вашем стоп-листе |
210 |
Используется GET там, где нужен POST |
212 |
Текст не в UTF-8 |
220 |
Сервис временно недоступен |
230 |
Превышен дневной лимит сообщений на номер |
301 |
Неправильный api_id или логин/пароль |
402 |
Время проверки истекло или неверный check_id |
500 |
Ошибка сервера, повторите запрос |
901 |
Неправильный URL обработчика |
902 |
Обработчик не найден |
time — до 2 месяцев вперёд, ttl — 1–1440 минут.sms_id в запросе статуса.Если этого недостаточно — официальная документация: https://sms.ru/api JSON: https://mcp-everything.ru/api/integrations/sms-ru. MCP: https://mcp-everything.ru/mcp