# SMSC.ru HTTP API: Подтвердить номер через Mobile ID

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

Подтверждение номера телефона кодом от сервиса Mobile ID.

1. Отправь запрос подтверждения: GET /sys/send.php с phones = номер пользователя и mes = __auth__.
2. Пользователь получит код. Попроси его ввести код на сайте.
3. Проверь код: GET /sys/mob_id.php с phone и code. Если код верный, номер подтверждён.

```bash
curl -G https://smsc.ru/sys/send.php -d login=<логин> -d psw=<пароль> -d phones=79991234567 -d mes=__auth__ -d fmt=3
curl -G https://smsc.ru/sys/mob_id.php -d login=<логин> -d psw=<пароль> -d phone=79991234567 -d code=<код>
```

## Базовые URL

- Боевой: `https://smsc.ru`
- Резервный: `https://www2.smsc.ru`

## Авторизация

Тип: API-ключ

Параметры `login` и `psw` (пароль создаётся или меняется на странице паролей в кабинете) либо `apikey` вместо пары логин/пароль. Если в кабинете задан список разрешённых IP, запросы с других адресов отклоняются с ошибкой 2.

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

### GET /sys/send.php — Отправка сообщений

Можно и POST. Обязательны `login`, `psw` и `phones` + `mes` (или `list`).

Расчёт стоимости без отправки — тот же запрос с `cost=1`.

Ответ при `fmt=3`: `cost=0` — `id`, `cnt`; `cost=1` — `cost`, `cnt`; `cost=2` — `id`, `cnt`, `cost`; `cost=3` — плюс `balance`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | query | string | да | Логин (или apikey) |
| `psw` | query | string | да | Пароль |
| `phones` | query | string | да | Номера в международном формате через запятую или точку с запятой; также коды групп G<номер>, email, ник Telegram |
| `mes` | query | string | да | Текст, до 1000 символов |
| `id` | query | string | нет | ID сообщения клиента: число 1–2147483647 или строка до 40 символов |
| `sender` | query | string | нет | Зарегистрированное имя отправителя, до 11 символов или 15 цифр |
| `fmt` | query | integer | нет | Формат ответа: 0 строка, 1 числа, 2 XML, 3 JSON |
| `cost` | query | integer | нет | 0 отправить, 1 только стоимость, 2 отправить и вернуть стоимость, 3 + баланс |
| `charset` | query | string | нет | utf-8 или koi8-r (по умолчанию windows-1251) |
| `translit` | query | integer | нет | 0 нет, 1 translit, 2 mpaHc/Ium |
| `tinyurl` | query | integer | нет | 1 — сокращать ссылки |
| `time` | query | string | нет | Время отправки: DDMMYYhhmm, DD.MM.YY hh:mm, h1-h2, 0ts, +m |
| `tz` | query | string | нет | Часовой пояс относительно Москвы |
| `period` | query | number | нет | Растянуть рассылку на 0.1–720 часов (с freq) |
| `freq` | query | integer | нет | Интервал между частями рассылки, 1–1440 минут |
| `valid` | query | string | нет | Срок жизни: 1–24 часа или чч:мм |
| `maxsms` | query | integer | нет | Максимум частей в сообщении |
| `list` | query | string | нет | Пакет номер:сообщение, по одному в строке (%0A) |
| `flash` | query | integer | нет | 1 — Flash SMS |
| `hlr` | query | integer | нет | 1 — HLR-запрос без отправки SMS |
| `ping` | query | integer | нет | 1 — ping-SMS (невидимое) |
| `call` | query | integer | нет | 1 — голосовое сообщение |
| `voice` | query | string | нет | Голос: m, m2, m3, m4, w, w2, w3, w4 |
| `mail` | query | integer | нет | 1 — email (нужны subj и sender) |
| `subj` | query | string | нет | Тема MMS или email |
| `viber` | query | integer | нет | 1 — Viber |
| `tg` | query | integer | нет | 1 — код подтверждения в Telegram (4–8 цифр в mes) |
| `bot` | query | string | нет | Бот: Telegram @botname_bot, WhatsApp wa:номер |
| `fileurl` | query | string | нет | URL прикрепляемого файла |
| `err` | query | integer | нет | 1 — вернуть номера с ошибками |
| `op` | query | integer | нет | 1 — вернуть по номерам mccmnc, стоимость, статус, ошибку |
| `userip` | query | string | нет | IP пользователя для лимита сообщений на IP |

Пример запроса:

```
https://smsc.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello!
```

Пример ответа:

```json
https://smsc.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&mes=<message>&cost=1
```

### GET /sys/mob_id.php — Подтверждение кода Mobile ID

Запрос Mobile ID отправляется через `send.php` с `mes=__auth__`; код подтверждается этим скриптом.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | query | string | да | Логин |
| `psw` | query | string | да | Пароль |
| `phone` | query | string | да | Номер |
| `code` | query | string | да | Код |

Пример запроса:

```
https://smsc.ru/sys/mob_id.php?login=<login>&psw=<password>&phone=<phone>&code=<code>
```

## Нюансы

- Одно SMS — 160 латинских или 70 кириллических символов; в составных — 153 и 67.
- Ошибка при `fmt=0` — `ERROR = N (описание)`, при `fmt=1` — `0,-N`, при `fmt=3` — `{"error": "...", "error_code": N}`; для ошибок 3, 6, 7, 8 дополнительно возвращается `id`.
- Префиксы в тексте: `__PING__`, `__CALL__`, `__HLR__`, `__auth__`.
- Другие скрипты: `/sys/templates.php` (шаблоны), `/sys/op_templates.php` (шаблоны операторов), `/sys/jobs.php` (рассылки), `/sys/ping.php` (уведомления).

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

- [Отправить SMS и узнать стоимость](https://mcp-everything.ru/integrations/smsc/scenarios/otpravit-sms-i-uznat-stoimost.md)
- [Проверить статус доставки](https://mcp-everything.ru/integrations/smsc/scenarios/proverit-status-dostavki.md)
- [Следить за балансом](https://mcp-everything.ru/integrations/smsc/scenarios/sledit-za-balansom.md)

---

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