# SMS.RU API: Следить за балансом и лимитами

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

Не упереться в нулевой баланс или дневной лимит посреди рассылки.

1. Проверь баланс: GET /my/balance. Если он меньше суммы предстоящей рассылки (её считает /sms/cost), пополни заранее.
2. Проверь дневной лимит: GET /my/limit — total_limit и used_today (на сколько номеров уже отправлено сегодня). При превышении отправка вернёт 206.
3. Узнай одобренные имена отправителей: GET /my/senders. Только их можно передавать в параметре from.
4. Запускай проверку по расписанию и присылай себе предупреждение, когда баланс или запас лимита подходят к концу.

```bash
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
```

## Базовые URL

- Боевой: `https://sms.ru`

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

Тип: API-ключ

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

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

### 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 /my/balance — Баланс

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `api_id` | query | string | да | Ключ API |
| `json` | query | integer | нет | 1 — ответ в JSON |

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

```
https://sms.ru/my/balance?api_id=[зарегистрируйтесь, чтобы получить api_id]&json=1
```

### GET /my/limit — Дневной лимит

В 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
```

### GET /my/senders — Одобренные отправители

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `api_id` | query | string | да | Ключ API |
| `json` | query | integer | нет | 1 — ответ в JSON |

## Нюансы

- Без `json=1` ответ — текстовые строки (код запроса, затем данные построчно).
- Вместо опроса `sms/status` и `callcheck/status` документация рекомендует вебхуки.
- Есть также `callback/del`, `callback/get`, `stoplist/del`, `stoplist/get`, `auth/check`, отправка через email/SMTP; PHP-библиотека — `https://sms.ru/php`.

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

- [Отправить SMS с кодом или уведомлением](https://mcp-everything.ru/integrations/sms-ru/scenarios/otpravit-sms-s-kodom-ili-uvedomleniem.md)
- [Узнать, доставлено ли сообщение](https://mcp-everything.ru/integrations/sms-ru/scenarios/uznat-dostavleno-li-soobschenie.md)
- [Подтвердить номер телефона звонком](https://mcp-everything.ru/integrations/sms-ru/scenarios/podtverdit-nomer-telefona-zvonkom.md)

---

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