SMS.RU API: Отправить SMS с кодом или уведомлением

Сценарий из mcp-everything. Актуально на 2026-10-24.

Коды подтверждения, статусы заказов, напоминания — одно сообщение или рассылка до 100 номеров за запрос.

  1. Возьми api_id на главной странице личного кабинета SMS.RU. Добавляй json=1 ко всем запросам — иначе ответ придёт текстовыми строками.
  2. Если нужно знать цену заранее, проверь стоимость: GET /sms/cost с to и msg — в ответе total_cost и число частей SMS.
  3. Отправь: POST /sms/send с to (номера через запятую, до 100), msg в UTF-8 и from — одобренным именем отправителя. Для проверки интеграции без списания денег добавь test=1.
  4. В ответе для каждого номера — status_code и sms_id. 100 — сообщение принято; 201 — не хватает денег, 202 и 207 — неверный номер или нет маршрута, 209 — номер в стоп-листе. Сохрани sms_id, чтобы потом узнать статус доставки.
  5. Пользователь просит больше не писать — добавь номер в стоп-лист: GET /stoplist/add с stoplist_phone и stoplist_text.
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

Базовые URL

Авторизация

Тип: API-ключ

Рекомендуемый способ — параметр api_id (выдаётся на главной странице личного кабинета). Альтернатива — login (номер телефона) и password; в этом случае обязательно HTTPS.

Методы сценария

POST /sms/send — Отправка SMS

Можно и 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

GET /sms/cost — Стоимость сообщений

В 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

GET /stoplist/add — Добавление номера в стоп-лист

Параметр Где Тип Обяз. Описание
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

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://sms.ru/api Вся интеграция одним документом: https://mcp-everything.ru/integrations/sms-ru.md