Отправить СМС сообщение HTTP запросом
Последнее изменение: 21.04.2026
Если у вас есть необходимость в отправке СМС сообщения из вашей программы, то вы можете отправить следующие запросы на наш сервер.
Примеры запросов
Отправить один текст на один или несколько номеров, указанных через запятую:
https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602,74993221627&msg=hello+world&json=1
Отправить разный текст на разные номера:
https://sms.ru/sms/send?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, // Успешный код выполнения, сообщение принято на отправку
"sms_id": "000000-10000000" // ID сообщения
},
"74993221627": {
"status": "ERROR",
"status_code": 207, // Код ошибки
"status_text": "На этот номер (или один из номеров) нельзя отправлять сообщения, либо указано более 100 номеров в списке получателей" // Описание ошибки
}
} ,
"balance": 4122.56 // Ваш баланс после отправки
}
Без json:
100 // запрос выполнен успешно
000000-10000000 // id первого сообщения
207 // код ошибки второго сообщения
balance=4122.56 // ваш баланс после отправки
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
| to | да | Номер телефона получателя (либо несколько номеров, через запятую — до 100 штук за один запрос). Вы также можете указать номера в виде массива to[номер получателя]=текст&to[номер получателя]=текст. Если вы указываете несколько номеров и один из них указан неверно, то вместо идентификатора сообщения в выдаче вы получите трехзначный код ошибки. Если вы отправляете более, чем на 10 номеров за раз, то рекомендуем параметр to передавать в теле запроса методом POST, а не в адресной строке. |
| msg | да | Текст сообщения в кодировке UTF-8 |
| json=1 | рекомендуется | Данный параметр вызывает ответ сервера в формате JSON, в котором предоставлено больше данных об отправленных сообщениях |
| from | Имя отправителя (должно быть согласовано с администрацией). Если не заполнено, в качестве отправителя будет указан ваш отправитель по умолчанию. | |
| ip | Если СМС сообщение отправляется в ответ на действия пользователя (например сообщение содержит код авторизации), то мы можем защитить вас на случай от действий злоумышленников, которые вынуждают вас отправлять много сообщений на один или разные номера (к примеру, регистрируясь много раз подряд на вашем сайте с одного IP адреса). В этом параметре вы можете передать нам IP адрес вашего пользователя (не сервера!), и, если мы заметим, что с этим IP связано большое количество сообщений, то мы их начнем блокировать (ограничение настраивается в разделе "Настройки"). | |
| time | Если вам нужна отложенная отправка, то укажите время отправки. Указывается в формате UNIX TIME (пример: 1280307978). Должно быть не больше 2 месяцев с момента подачи запроса. Если время меньше текущего времени, сообщение отправляется моментально. | |
| ttl | Срок жизни сообщения в минутах (от 1 до 1440). Если сообщение не доставится за этот период (к примеру, телефон абонента не в сети), то оно будет уничтожено оператором. Если используется этот параметр, то стоимость недоставленного сообщения не компенсируется. | |
| daytime=1 | Учитывает часовой пояс получателя. Если у получателя сейчас ночь (уже наступило время 20:00), то откладывает отправку до 10 часов утра. Если указан этот параметр, то параметр time игнорируется. | |
| translit=1 | Переводит все русские символы в латинские. | |
| test=1 | Имитирует отправку сообщения для тестирования ваших программ на правильность обработки ответов сервера. При этом само сообщение не отправляется и баланс не расходуется. | |
| partner_id= | Если вы участвуете в партнерской программе, укажите этот параметр в запросе и получайте проценты от стоимости отправленных сообщений. Ваш уникальный идентификатор - - уже указан в параметре. |
Авторизация осуществляется при помощи:
| Параметр | Обязательный | Описание |
|---|---|---|
| api_id | да | Авторизацию по вашему уникальному ключу (api_id). Этот способ авторизации - самый удобный и приведен в примере выше. Ваш api_id вы можете найти на главной странице личного кабинета: [зарегистрируйтесь, чтобы получить api_id] |
Отправка СМС из PHP (со включенным модулем curl)
Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.
$ch = curl_init("https://sms.ru/sms/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
"api_id" => "[зарегистрируйтесь, чтобы получить api_id]",
"to" => "79255070602,74993221627", // До 100 штук до раз
"msg" => iconv("windows-1251", "utf-8", "Привет!"), // Если приходят крякозябры, то уберите iconv и оставьте только "Привет!",
/*
// Если вы хотите отправлять разные тексты на разные номера, воспользуйтесь этим кодом. В этом случае to и msg нужно убрать.
"multi" => array( // до 100 штук за раз
"79255070602"=> iconv("windows-1251", "utf-8", "Привет 1"), // Если приходят крякозябры, то уберите iconv и оставьте только "Привет!",
"74993221627"=> iconv("windows-1251", "utf-8", "Привет 2")
),
*/
"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") { // Сообщение отправлено
echo "Сообщение на номер $phone успешно отправлено. ";
echo "ID сообщения: $data->sms_id. ";
echo "";
} else { // Ошибка в отправке
echo "Сообщение на номер $phone не отправлено. ";
echo "Код ошибки: $data->status_code. ";
echo "Текст ошибки: $data->status_text. ";
echo "";
}
}
echo "Баланс после отправки: $json->balance руб.";
echo "";
} else { // Запрос не выполнился (возможно ошибка авторизации, параметрах, итд...)
echo "Запрос не выполнился. ";
echo "Код ошибки: $json->status_code. ";
echo "Текст ошибки: $json->status_text. ";
}
} else {
echo "Запрос не выполнился. Не удалось установить связь с сервером. ";
}
Отправка СМС из PHP без curl
Мы настоятельно рекомендуем использовать нашу библиотеку под PHP. Данный код указан только в качестве простого примера.
$body = file_get_contents("https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602&msg=".urlencode(iconv("windows-1251","utf-8","Привет!"))."&json=1"); # Если приходят крякозябры, то уберите iconv и оставьте только urlencode("Привет!")
$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/send',
[
api_id => '[зарегистрируйтесь, чтобы получить api_id]',
to => '79255070602',
msg => 'hello world'
];
print $ua->request($req)->as_string;
Отправка СМС из командной строки bash
curl --data-urlencode msg="hello world привет мир" "https://sms.ru/sms/send?api_id=[зарегистрируйтесь, чтобы получить api_id]&to=79255070602"