{"name":"SMS.RU API","vendor":"SMS.RU","industry":"communications","summary":"HTTP API сервиса SMS-рассылок SMS.RU: отправка SMS, проверка статуса и стоимости, баланс и дневной лимит, список одобренных отправителей, стоп-лист, авторизация пользователя по звонку и вебхуки со статусами сообщений. Запросы — GET или POST с параметрами; с `json=1` ответ приходит в JSON.","docsUrl":"https://sms.ru/api","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"otpravit-sms-s-kodom-ili-uvedomleniem","title":"Отправить SMS с кодом или уведомлением","summary":"Коды подтверждения, статусы заказов, напоминания — одно сообщение или рассылка до 100 номеров за запрос.","steps":["Возьми api_id на главной странице личного кабинета SMS.RU. Добавляй json=1 ко всем запросам — иначе ответ придёт текстовыми строками.","Если нужно знать цену заранее, проверь стоимость: GET /sms/cost с to и msg — в ответе total_cost и число частей SMS.","Отправь: POST /sms/send с to (номера через запятую, до 100), msg в UTF-8 и from — одобренным именем отправителя. Для проверки интеграции без списания денег добавь test=1.","В ответе для каждого номера — status_code и sms_id. 100 — сообщение принято; 201 — не хватает денег, 202 и 207 — неверный номер или нет маршрута, 209 — номер в стоп-листе. Сохрани sms_id, чтобы потом узнать статус доставки.","Пользователь просит больше не писать — добавь номер в стоп-лист: GET /stoplist/add с stoplist_phone и stoplist_text."],"code":"curl -X POST https://sms.ru/sms/send \\\n  -d api_id=<api_id> \\\n  -d to=79991234567 \\\n  --data-urlencode 'msg=Код подтверждения: 4821' \\\n  -d from=<имя отправителя> \\\n  -d json=1","language":"bash","methods":["POST /sms/send","GET /sms/cost","GET /stoplist/add"]},{"id":"uznat-dostavleno-li-soobschenie","title":"Узнать, доставлено ли сообщение","summary":"Проверить, дошло ли SMS, — опросом или вебхуком.","steps":["Разово: GET /sms/status с sms_id (до 100 через запятую). В ответе для каждого — status_code, status_text и cost. 103 — доставлено, 104 — не доставлено, истекло время жизни.","Постоянно: зарегистрируй обработчик статусов — GET /callback/add с url твоего скрипта (URL-кодированным). Так документация рекомендует вместо опроса.","SMS.RU будет присылать POST-запросы со статусами всех отправленных сообщений. Обработчик должен ответить строкой 100, иначе запрос будет повторяться.","Если ответ 901 — неверный URL обработчика."],"code":"# Статус двух сообщений\ncurl -G https://sms.ru/sms/status \\\n  -d api_id=<api_id> \\\n  -d sms_id=000000-10000000,000000-10000001 \\\n  -d json=1\n\n# Обработчик статусов\ncurl -G https://sms.ru/callback/add \\\n  -d api_id=<api_id> \\\n  --data-urlencode 'url=https://example.ru/smsru/callback' \\\n  -d json=1","language":"bash","methods":["GET /sms/status","GET /callback/add"]},{"id":"podtverdit-nomer-telefona-zvonkom","title":"Подтвердить номер телефона звонком","summary":"Бесплатная для пользователя альтернатива SMS-коду: он звонит на выданный номер, звонок сбрасывается, номер подтверждён.","steps":["Запусти проверку: GET /callcheck/add с phone — номером пользователя — и ip пользователя. В ответе check_id и call_phone_pretty — номер, на который нужно позвонить.","Покажи пользователю номер и попроси позвонить в течение 5 минут. Звонок бесплатный, система сама его сбросит.","Проверяй результат: GET /callcheck/status с check_id раз в несколько секунд или получай статус вебхуком. check_status = 401 — номер подтверждён, 400 — ещё нет.","Ошибка 402 значит, что время проверки истекло или check_id неверный — запусти проверку заново."],"code":"curl -G https://sms.ru/callcheck/add -d api_id=<api_id> -d phone=79991234567 -d ip=203.0.113.7 -d json=1\n# в ответе: check_id и call_phone_pretty — номер, на который пользователь должен позвонить\n\ncurl -G https://sms.ru/callcheck/status -d api_id=<api_id> -d check_id=<check_id> -d json=1\n# → check_status: 401 — номер подтверждён","language":"bash","methods":["GET /callcheck/add","GET /callcheck/status"]},{"id":"sledit-za-balansom-i-limitami","title":"Следить за балансом и лимитами","summary":"Не упереться в нулевой баланс или дневной лимит посреди рассылки.","steps":["Проверь баланс: GET /my/balance. Если он меньше суммы предстоящей рассылки (её считает /sms/cost), пополни заранее.","Проверь дневной лимит: GET /my/limit — total_limit и used_today (на сколько номеров уже отправлено сегодня). При превышении отправка вернёт 206.","Узнай одобренные имена отправителей: GET /my/senders. Только их можно передавать в параметре from.","Запускай проверку по расписанию и присылай себе предупреждение, когда баланс или запас лимита подходят к концу."],"code":"curl -G https://sms.ru/my/balance -d api_id=<api_id> -d json=1\ncurl -G https://sms.ru/my/limit -d api_id=<api_id> -d json=1\ncurl -G https://sms.ru/my/senders -d api_id=<api_id> -d json=1","language":"bash","methods":["GET /sms/cost","GET /my/balance","GET /my/limit","GET /my/senders"]}],"baseUrls":[{"label":"Боевой","url":"https://sms.ru"}],"auth":{"type":"api_key","description":"Рекомендуемый способ — параметр `api_id` (выдаётся на главной странице личного кабинета). Альтернатива — `login` (номер телефона) и `password`; в этом случае обязательно HTTPS.","example":""},"methods":[{"id":"POST /sms/send","title":"Отправка SMS","httpMethod":"POST","path":"/sms/send","description":"Можно и GET; при отправке более чем на 10 номеров используйте POST.\n\nВ JSON-ответе: `status`, `status_code`, `sms` (объект по номерам: `status`, `status_code`, `sms_id` или `status_text`), `balance`.","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API (или login + password)"},{"name":"to","in":"query","type":"string","required":true,"description":"Номера через запятую, до 100 за запрос; или форма to[номер]=текст"},{"name":"msg","in":"query","type":"string","required":true,"description":"Текст в UTF-8"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON (рекомендуется)"},{"name":"from","in":"query","type":"string","required":false,"description":"Одобренное имя отправителя; по умолчанию — отправитель по умолчанию"},{"name":"ip","in":"query","type":"string","required":false,"description":"IP конечного пользователя (для защиты от злоупотреблений)"},{"name":"time","in":"query","type":"integer","required":false,"description":"Время отправки UNIX timestamp, до 2 месяцев вперёд"},{"name":"ttl","in":"query","type":"integer","required":false,"description":"Время жизни сообщения в минутах, 1–1440"},{"name":"daytime","in":"query","type":"integer","required":false,"description":"1 — учитывать часовой пояс получателя, ночью отложить до 10:00 (time игнорируется)"},{"name":"translit","in":"query","type":"integer","required":false,"description":"1 — перевести кириллицу в латиницу"},{"name":"test","in":"query","type":"integer","required":false,"description":"1 — имитация отправки без доставки и списания"},{"name":"partner_id","in":"query","type":"string","required":false,"description":"Идентификатор партнёрской программы"}],"requestExample":"https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1","responseExample":"https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to[79255070602]=hello+world&to[74993221627]=hello+world&json=1","docsUrl":""},{"id":"GET /sms/status","title":"Статус сообщений","httpMethod":"GET","path":"/sms/status","description":"В JSON-ответе для каждого `sms_id`: `status`, `status_code`, `cost`, `status_text`.","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"sms_id","in":"query","type":"string","required":true,"description":"ID сообщений через запятую, до 100"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /sms/cost","title":"Стоимость сообщений","httpMethod":"GET","path":"/sms/cost","description":"В JSON-ответе: `sms` по номерам (`cost`, `sms` — число частей), `total_cost`, `total_sms`.","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"to","in":"query","type":"string","required":true,"description":"Номера через запятую, до 100; или to[номер]=текст"},{"name":"msg","in":"query","type":"string","required":true,"description":"Текст в UTF-8"},{"name":"multi","in":"query","type":"string","required":false,"description":"Разные тексты на разные номера (до 100), вместо to и msg"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"},{"name":"from","in":"query","type":"string","required":false,"description":"Имя отправителя"},{"name":"translit","in":"query","type":"integer","required":false,"description":"1 — транслитерация"}],"requestExample":"https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1","responseExample":"","docsUrl":""},{"id":"GET /my/balance","title":"Баланс","httpMethod":"GET","path":"/my/balance","description":"","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"https://sms.ru/my/balance?api_id=[зарегистрируйтесь, чтобы получить api_id]&json=1","responseExample":"","docsUrl":""},{"id":"GET /my/limit","title":"Дневной лимит","httpMethod":"GET","path":"/my/limit","description":"В JSON-ответе: `total_limit` (дневной лимит), `used_today` (номеров, на которые уже отправлено сегодня).","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"https://sms.ru/my/limit?api_id=[зарегистрируйтесь, чтобы получить api_id]&json=1","responseExample":"","docsUrl":""},{"id":"GET /my/senders","title":"Одобренные отправители","httpMethod":"GET","path":"/my/senders","description":"","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"GET /stoplist/add","title":"Добавление номера в стоп-лист","httpMethod":"GET","path":"/stoplist/add","description":"","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"stoplist_phone","in":"query","type":"string","required":true,"description":"Номер телефона"},{"name":"stoplist_text","in":"query","type":"string","required":true,"description":"Причина добавления"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"https://sms.ru/stoplist/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&stoplist_phone=[номер телефона]&stoplist_text=[причина]&json=1","responseExample":"","docsUrl":""},{"id":"GET /callcheck/add","title":"Авторизация по звонку: запуск","httpMethod":"GET","path":"/callcheck/add","description":"Пользователь должен позвонить на выданный номер в течение 5 минут; звонок бесплатный, система его сбрасывает. В JSON-ответе: `check_id`, `call_phone`, `call_phone_pretty`, `call_phone_html`.","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"phone","in":"query","type":"string","required":true,"description":"Номер пользователя, с которого ожидается звонок"},{"name":"ip","in":"query","type":"string","required":false,"description":"IP пользователя (из-за границы выдаётся обычный номер вместо 8-800)"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"https://sms.ru/callcheck/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&phone=79255070602&json=1","responseExample":"","docsUrl":""},{"id":"GET /callcheck/status","title":"Авторизация по звонку: статус","httpMethod":"GET","path":"/callcheck/status","description":"В JSON-ответе: `check_status` (`400` — не подтверждён, `401` — подтверждён), `check_status_text`.","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"check_id","in":"query","type":"string","required":true,"description":"ID из callcheck/add"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"https://sms.ru/callcheck/status?api_id=[зарегистрируйтесь, чтобы получить api_id]&check_id=[идентификатор авторизации]&json=1","responseExample":"","docsUrl":""},{"id":"GET /callback/add","title":"Добавление обработчика вебхуков","httpMethod":"GET","path":"/callback/add","description":"Обработчик получает статусы отправленных сообщений.","params":[{"name":"api_id","in":"query","type":"string","required":true,"description":"Ключ API"},{"name":"url","in":"query","type":"string","required":true,"description":"Адрес обработчика (URL-кодированный при GET)"},{"name":"json","in":"query","type":"integer","required":false,"description":"1 — ответ в JSON"}],"requestExample":"https://sms.ru/callback/add?api_id=[зарегистрируйтесь, чтобы получить api_id]&url=https%3A%2F%2Fyoursite.ru%2Fcallback.php&json=1","responseExample":"","docsUrl":""}],"codeExamples":[],"errors":[{"code":"100","description":"Запрос выполнен или сообщение в очереди"},{"code":"103","description":"Сообщение доставлено"},{"code":"104","description":"Не доставлено: истекло время жизни"},{"code":"200","description":"Неправильный api_id"},{"code":"201","description":"Недостаточно средств"},{"code":"202","description":"Неправильный номер получателя или нет маршрута"},{"code":"203","description":"Нет текста сообщения"},{"code":"205","description":"Сообщение слишком длинное (больше 8 SMS)"},{"code":"206","description":"Достигнут дневной лимит"},{"code":"207","description":"Нет маршрута доставки на этот номер"},{"code":"208","description":"Неправильный параметр time"},{"code":"209","description":"Номер в вашем стоп-листе"},{"code":"210","description":"Используется GET там, где нужен POST"},{"code":"212","description":"Текст не в UTF-8"},{"code":"220","description":"Сервис временно недоступен"},{"code":"230","description":"Превышен дневной лимит сообщений на номер"},{"code":"301","description":"Неправильный api_id или логин/пароль"},{"code":"402","description":"Время проверки истекло или неверный check_id"},{"code":"500","description":"Ошибка сервера, повторите запрос"},{"code":"901","description":"Неправильный URL обработчика"},{"code":"902","description":"Обработчик не найден"}],"limits":"- До 100 номеров в запросе отправки; при более чем 10 номерах — POST.\n- До 8 SMS-частей на сообщение.\n- `time` — до 2 месяцев вперёд, `ttl` — 1–1440 минут.\n- До 100 `sms_id` в запросе статуса.\n- Дневные лимиты на аккаунт и на номер (коды 206, 230–232).","gotchas":["Без `json=1` ответ — текстовые строки (код запроса, затем данные построчно).","Вместо опроса `sms/status` и `callcheck/status` документация рекомендует вебхуки.","Есть также `callback/del`, `callback/get`, `stoplist/del`, `stoplist/get`, `auth/check`, отправка через email/SMTP; PHP-библиотека — `https://sms.ru/php`."],"slug":"sms-ru","version":2,"updatedAt":"2026-10-24T17:05:36.895Z","sources":[{"title":"SMS.RU — API","url":"https://sms.ru/api","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Отправка SMS","url":"https://sms.ru/api/send","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Статус сообщений","url":"https://sms.ru/api/status","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Стоимость","url":"https://sms.ru/api/cost","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Баланс","url":"https://sms.ru/api/balance","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Лимит","url":"https://sms.ru/api/limit","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Отправители","url":"https://sms.ru/api/senders","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Стоп-лист","url":"https://sms.ru/api/stoplist_add","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Авторизация по звонку","url":"https://sms.ru/api/call","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Вебхуки","url":"https://sms.ru/api/callback_add","kind":"research","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-19T13:41:25.195Z"},{"title":"scenarios-sms-ru.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:27.121Z"}],"logoUrl":null}