Необходимо использовать captcha! Мы крайне рекомендуем установить reCaptcha, hCaptcha (или любое другое решение) на всех страницах, где используется данный метод в ответ на действия пользователя, чтобы исключить возможность флуда со стороны злоумышленников (и, как результат, обнуления вашего баланса).

Отправить СМС сообщение HTTP запросом

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

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

Отправить один текст на один или несколько номеров, указанных через запятую:

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]

или

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

Отправка СМС из 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"

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

Код Значение
-1 Сообщение не найдено
100 Запрос выполнен или сообщение находится в нашей очереди
101 Сообщение передается оператору
102 Сообщение отправлено (в пути)
103 Сообщение доставлено
104 Не может быть доставлено: время жизни истекло
105 Не может быть доставлено: удалено оператором
106 Не может быть доставлено: сбой в телефоне
107 Не может быть доставлено: неизвестная причина
108 Не может быть доставлено: отклонено
110 Сообщение прочитано (для Viber, временно не работает)
150 Не может быть доставлено: не найден маршрут на данный номер
200 Неправильный api_id
201 Не хватает средств на лицевом счету
202 Неправильно указан номер телефона получателя, либо на него нет маршрута
203 Нет текста сообщения
204 Вы не подключили данного оператора. Подайте заявку через раздел Отправители на сайте SMS.RU - https://sms.ru/?panel=senders
205 Сообщение слишком длинное (превышает 8 СМС)
206 Будет превышен или уже превышен дневной лимит на отправку сообщений
207 На этот номер нет маршрута для доставки сообщений
208 Параметр time указан неправильно
209 Вы добавили этот номер (или один из номеров) в стоп-лист
210 Используется GET, где необходимо использовать POST
211 Метод не найден
212 Текст сообщения необходимо передать в кодировке UTF-8 (вы передали в другой кодировке)
213 Указано более 5000 номеров в списке получателей
214 Номер находится зарубежом (включена настройка "Отправлять только на номера РФ")
215 Этот номер находится в стоп-листе SMS.RU (от получателя поступала жалоба на спам)
216 В тексте сообщения содержится запрещенное слово
220 Сервис временно недоступен, попробуйте чуть позже
230 Превышен общий лимит количества сообщений на этот номер в день
231 Превышен лимит одинаковых сообщений на этот номер в минуту
232 Превышен лимит одинаковых сообщений на этот номер в день
233 Превышен лимит отправки повторных сообщений с кодом на этот номер за короткий промежуток времени ("защита от мошенников", можно отключить в разделе "Настройки")
300 Неправильный token (возможно истек срок действия, либо ваш IP изменился)
301 Неправильный api_id, либо логин/пароль
302 Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)
303 Код подтверждения неверен
304 Отправлено слишком много кодов подтверждения. Пожалуйста, повторите запрос позднее
305 Слишком много неверных вводов кода, повторите попытку позднее
500 Ошибка на сервере. Повторите запрос.
501 Превышен лимит: IP пользователя из сети TOR, слишком много таких сообщений за короткий промежуток времени (можно настроить в ЛК).
502 Превышен лимит: IP пользователя не совпадает с его страной, слишком много таких сообщений за короткий промежуток времени (можно настроить в ЛК).
503 Превышен лимит: Слишком много сообщений в эту страну за короткий промежуток времени (можно настроить в ЛК).
504 Превышен лимит: Слишком много кодов авторизаций зарубеж за короткий промежуток времени (можно настроить в ЛК).
505 Превышен лимит: Слишком много сообщений на один IP адрес (можно настроить в ЛК).
506 Превышен лимит: Слишком много сообщений, где IP адрес конечного пользователя принадлежит хостинговой компании (%s за последние 10 минут). Обычно это указывает на то, что запросы идут от ботов, а не пользователей.
507 IP адрес пользователя указан неверно, либо идет из частной подсети (192.*, 10.*, итд). Вы можете добавить его (или подсеть) в исключения - https://sms.ru/?panel=settings&subpanel=send
508 Превышен лимит: Превышено количество допустимых звонков за 5 минут (принято запросов на звонки - %s, лимит - %s). Изменить настройку - https://sms.ru/?panel=settings&subpanel=send
901 Callback: URL неверный (не начинается на http://)
902 Callback: Обработчик не найден (возможно был удален ранее)

Последнее обновление: 05 Апреля 2024 в 18:07

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