Москва  +7 (495) 120-8115 (с 10 до 18)
Документация для программистов

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

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

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

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

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]

или

Параметр Обязательный Описание
login да Ваш номер телефона (логин): 79255070602
password да Пароль (безопасность гарантируется при использовании https)

Пример на 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

Значения кодов

Код Значение
-1 Сообщение не найдено
100 Запрос выполнен или сообщение находится в нашей очереди
101 Сообщение передается оператору
102 Сообщение отправлено (в пути)
103 Сообщение доставлено
104 Не может быть доставлено: время жизни истекло
105 Не может быть доставлено: удалено оператором
106 Не может быть доставлено: сбой в телефоне
107 Не может быть доставлено: неизвестная причина
108 Не может быть доставлено: отклонено
110 Сообщение прочитано
150 Не может быть доставлено: не найден маршрут на данный номер
200 Неправильный api_id
201 Не хватает средств на лицевом счету
202 Неправильно указан номер телефона получателя, либо на него нет маршрута
203 Нет текста сообщения
204 Имя отправителя не согласовано с администрацией
205 Сообщение слишком длинное (превышает 8 СМС)
206 Будет превышен или уже превышен дневной лимит на отправку сообщений
207 На этот номер нет маршрута для доставки сообщений
208 Параметр time указан неправильно
209 Вы добавили этот номер (или один из номеров) в стоп-лист
210 Используется GET, где необходимо использовать POST
211 Метод не найден
212 Текст сообщения необходимо передать в кодировке UTF-8 (вы передали в другой кодировке)
213 Указано более 100 номеров в списке получателей
220 Сервис временно недоступен, попробуйте чуть позже
230 Превышен общий лимит количества сообщений на этот номер в день
231 Превышен лимит одинаковых сообщений на этот номер в минуту
232 Превышен лимит одинаковых сообщений на этот номер в день
300 Неправильный token (возможно истек срок действия, либо ваш IP изменился)
301 Неправильный пароль, либо пользователь не найден
302 Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)
303 Код подтверждения неверен
304 Отправлено слишком много кодов подтверждения. Пожалуйста, повторите запрос позднее
305 Слишком много неверных вводов кода, повторите попытку позднее
500 Ошибка на сервере. Повторите запрос.
901 Callback: URL неверный (не начинается на http://)
902 Callback: Обработчик не найден (возможно был удален ранее)

Последнее обновление: 03 Октября 2017 в 19:05

Бесплатный номер по России  +7 (800) 222-60-95