---
slug: "smsc"
name: "SMSC.ru HTTP API"
vendor: "SMSC.ru"
industry: "communications"
docsUrl: "https://smsc.ru/api/http/"
version: 2
updatedAt: "2026-10-24"
---

# SMSC.ru HTTP API

Отрасль: Связь и уведомления. Актуально на 2026-10-24.

HTTP/HTTPS API сервиса рассылок SMSC.ru. Через один скрипт отправки уходят SMS, MMS, бинарные и flash-сообщения, HLR- и ping-запросы, email, голосовые сообщения, Viber, Telegram и WhatsApp. Также есть проверка статуса, баланса и стоимости, шаблоны, рассылки (jobs) и подтверждение Mobile ID. Формат ответа задаётся параметром `fmt` (строка, числа, XML или JSON).

## Сценарии

### Отправить SMS и узнать стоимость

Коды подтверждения, уведомления о заказах и рассылки через SMSC.ru.

1. Возьми логин и пароль для API (страница паролей в кабинете) или apikey. Если в кабинете задан список разрешённых IP, запросы с других адресов вернут ошибку 2.
2. Чтобы узнать цену без отправки, сделай тот же запрос с cost = 1: GET /sys/send.php с phones и mes. Для отправки с возвратом стоимости и баланса — cost = 3.
3. Отправь: GET /sys/send.php (или POST) с login, psw, phones (через запятую, в международном формате), mes, sender (зарегистрированное имя), charset = utf-8 и fmt = 3 — ответ в JSON. Без charset текст считается в windows-1251.
4. В ответе id и cnt (число SMS). Сохрани id: по нему проверяется статус. Ошибка приходит как {"error": ..., "error_code": N}: 3 — нет денег, 6 — сообщение запрещено, 7 — неверный номер.
5. Если удобнее JSON в теле запроса, те же параметры принимает POST /rest/send/.

```bash
curl -G https://smsc.ru/sys/send.php \
  -d login=<логин> -d psw=<пароль> \
  -d phones=79991234567 \
  --data-urlencode 'mes=Код подтверждения: 4821' \
  -d sender=<имя отправителя> -d charset=utf-8 -d fmt=3 -d cost=3
```

### Проверить статус доставки

Узнать, доставлено ли сообщение, — для повторной отправки или отчёта.

1. Запроси статус: GET /sys/status.php с phone и id отправленного сообщения (несколько — через запятую в одинаковом порядке) и fmt = 3.
2. С all = 1 вернётся полная информация, с all = 2 — ещё страна, оператор и регион.
3. Статус доступен в течение суток после отправки, потом сообщения уходят в архив.
4. Не опрашивай чаще лимита: не больше 5 одинаковых запросов по одному сообщению в минуту.

```bash
curl -G https://smsc.ru/sys/status.php \
  -d login=<логин> -d psw=<пароль> \
  -d phone=79991234567 -d id=<id сообщения> -d fmt=3 -d all=1
```

### Следить за балансом

Не остаться без денег посреди рассылки.

1. Запроси баланс: GET /sys/balance.php с fmt = 3. С cur = 1 вернётся валюта счёта и кредит, если он есть.
2. Перед большой рассылкой посчитай её стоимость тем же запросом на отправку с cost = 1 и сравни с балансом.
3. Баланс можно запрашивать не чаще 10 раз в минуту — проверяй его по расписанию, а не перед каждым сообщением.

```bash
curl -G https://smsc.ru/sys/balance.php -d login=<логин> -d psw=<пароль> -d fmt=3
```

### Подтвердить номер через Mobile ID

Подтверждение номера телефона кодом от сервиса 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
```

### POST /rest/send/ — Отправка с параметрами в JSON

Те же параметры, что у `send.php`, передаются JSON-объектом в теле запроса.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | body | string | да | Логин (или apikey) |
| `psw` | body | string | да | Пароль |
| `phones` | body | string | да | Номера получателей |
| `mes` | body | string | да | Текст сообщения |

### GET /sys/status.php — Статус сообщения

Можно и POST. Статус запрашивается в течение суток после отправки, затем сообщения уходят в архив.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | query | string | да | Логин (или apikey) |
| `psw` | query | string | да | Пароль |
| `phone` | query | string | да | Номер или номера через запятую (в порядке id) |
| `id` | query | string | да | ID сообщения или список через запятую |
| `fmt` | query | integer | нет | 0 строка, 1 статус и время через запятую, 2 XML, 3 JSON |
| `all` | query | integer | нет | 1 — полная информация, 2 — плюс страна, оператор, регион |
| `bot` | query | integer | нет | 1 — статус сообщения в Telegram-бот |
| `del` | query | integer | нет | 1 — удалить отправленное сообщение |
| `charset` | query | string | нет | utf-8 или koi8-r |

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

```
https://smsc.ru/sys/status.php?login=<login>&psw=<password>&phone=<phone>&id=<sms_id>
```

### GET /sys/balance.php — Баланс

Ответ при `fmt=3`: `balance`; при `cur=1` и ненулевом кредите — `credit`, `currency`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | query | string | да | Логин (или apikey) |
| `psw` | query | string | да | Пароль |
| `cur` | query | integer | нет | Вернуть валюту счёта |
| `fmt` | query | integer | нет | 0/1 строка, 2 XML, 3 JSON |

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

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

### 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` (уведомления).

## Ошибки

| Код | Описание |
|---|---|
| `1` | Ошибка в параметрах |
| `2` | Неверный логин или пароль, либо IP не в списке разрешённых |
| `3` | Недостаточно средств |
| `4` | IP временно заблокирован из-за частых ошибок |
| `5` | Неверный формат даты |
| `6` | Сообщение запрещено (по тексту или имени отправителя) |
| `7` | Неверный формат номера |
| `8` | Сообщение не может быть доставлено на номер |
| `9` | Дубль запроса или 15 и более одновременных запросов |

## Ограничения

- Текст — до 1000 символов.
- Одинаковый запрос на отправку — не чаще раза в минуту; запросов стоимости — до 5 одинаковых в минуту.
- 15 и более одновременных запросов под одним логином — ошибка 9.
- Баланс — не больше 10 запросов в минуту.
- Статус — не больше 5 одинаковых запросов по сообщению и одного пакетного запроса в минуту.
- Больше 50 сообщений одному абоненту с интервалом меньше 60 секунд блокируются.

## Источники

- [SMSC.ru — HTTP API](https://smsc.ru/api/http/)
- [Отправка сообщений](https://smsc.ru/api/http/send/)
- [Проверка статуса](https://smsc.ru/api/http/status_messages/check_status/)
- [Коды статусов](https://smsc.ru/api/http/status_messages/statuses)
- [Баланс](https://smsc.ru/api/http/balance/)

---

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