Проверить стоимость сообщений перед отправкой

Последнее изменение: 21.04.2026

Если у вас есть необходимость проверить стоимость сообщения перед его отправкой из вашей программы, то вы можете отправить следующие запросы на наш сервер.

Примеры запросов

Один текст на несколько номеров:

https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1

Разный текст на разные номера:

https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to[79255070602]=hello+world&to[74993221627]=hello+world&json=1

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

При включенном параметре json=1:

{
    "status": "OK", // Запрос выполнен успешно (нет ошибок в авторизации, проблем с отправителем, итд...)
    "status_code": 100, // Успешный код выполнения
    "sms": {
        "79255070602": {
            "status": "OK", // Возможные варианты: OK или ERROR.
            "status_code": 100, // Успешный код выполнения, по сообщению возвращена стоимость
            "cost": 0.00, // Стоимость сообщения
            "sms": 1 // Количество СМС
        },
        "74993221627": {
            "status": "ERROR",
            "status_code": 207, // Код ошибки
            "status_text": "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей" // Описание ошибки
        }
    },
    "total_cost": 0.00, // Общая стоимость всех сообщений
    "total_sms": 1 // Общее количество СМС
}

Без json:

100 // запрос выполнен успешно
0.00 // общая стоимость
1 // Общее количество СМС

Параметры

Параметр Обязательный Описание
to да Номер телефона получателя (либо несколько номеров, через запятую — до 100 штук за один запрос). Номер телефона получателя (либо несколько номеров, через запятую — до 100 штук за один запрос). Вы также можете указать номера в виде массива to[номер получателя]=текст&to[номер получателя]=текст.
msg да Текст сообщения в кодировке UTF-8
multi да Если вы хотите в одном запросе отправить разные сообщения на несколько номеров, то воспользуйтесь этим параметром (до 100 сообщений за 1 запрос). В этом случае, параметры to и msg использовать не нужно: каждое сообщение передается в виде multi[номер получателя]=текст&multi[номер получателя]=текст Если вы указываете несколько номеров и один из них указан неверно, то вместо идентификатора сообщения в выдаче вы получите трехзначный код ошибки.
json=1 рекомендуется Данный параметр вызывает ответ сервера в формате JSON, в котором предоставлено больше данных об отправленных сообщениях
from Имя отправителя (должно быть согласовано с администрацией). Если не заполнено, в качестве отправителя будет указан ваш отправитель по умолчанию.
translit=1 Переводит все русские символы в латинские.

Авторизация осуществляется при помощи:

Параметр Обязательный Описание
api_id да Авторизацию по вашему уникальному ключу (api_id). Этот способ авторизации - самый удобный и приведен в примере выше. Ваш api_id вы можете найти на главной странице личного кабинета: [зарегистрируйтесь, чтобы получить api_id]

Пример на PHP (со включенным модулем curl)

Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.

$ch = curl_init("https://sms.ru/sms/cost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    "api_id" => "[зарегистрируйтесь, чтобы получить api_id]",
    "to" => "79255070602,74993221627",
    "msg" => iconv("windows-1251", "utf-8", "Привет!"), // Если приходят крякозябры, то уберите iconv и оставьте только "Привет!",
    "json" => 1 // Для получения более развернутого ответа от сервера
));
$body = curl_exec($ch);
curl_close($ch);

$json = json_decode($body);
if ($json) { // Получен ответ от сервера
    print_r($json); // Для дебага
    if ($json->status == "OK") { // Запрос выполнился
        foreach ($json->sms as $phone => $data) { // Перебираем массив СМС сообщений
            if ($data->status == "OK") { // Сообщение обработано
                // Номер: $phone
                // Стоимость: $data->cost
                // Длина в СМС: $data->sms
            } else { // Ошибка в отправке
                // Номер: $phone
                // Код ошибки: $data->status_code
                // Текст ошибки: $data->status_text 
            }
        }
        // Общая стоимость: $json->total_cost
        // Общая длина СМС: $json->total_sms
    } else { // Запрос не выполнился (возможно ошибка авторизации, параметрах, итд...)
        // Код ошибки: $json->status_code
        // Текст ошибки: $json->status_text
    }
} else { // Запрос не выполнился Не удалось установить связь с сервером

}

Пример на PHP без curl

Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.

$body = file_get_contents("https://sms.ru/sms/cost?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602&msg=".urlencode(iconv("windows-1251","utf-8","Привет!"))."&json=1");

$json = json_decode($body);
print_r($json); // Для дебага
// Для разбора $json можно использовать кусок кода из предыдущего примера.

Пример на Perl

#!/usr/bin/perl
use LWP::Simple;
use HTTP::Request::Common qw(POST);

$ua = LWP::UserAgent->new;
my $req = POST 'https://sms.ru/sms/cost',
[
api_id => '[зарегистрируйтесь, чтобы получить api_id]',
to => '79255070602',
msg => 'hello world'
];
print $ua->request($req)->as_string;

Пример на curl

Если вы используете curl под Windows. То знак \ перед знаками ? и & необходимо убрать.

curl -d "msg=hello world привет мир" https://sms.ru/sms/cost\?api_id=[зарегистрируйтесь, чтобы получить api_id]\&to=79255070602