Москва - Московская область
Поддержка
Маркетолог

Как настроить интеграцию по REST API

АPI МТС Маркетолога позволяет:

  • отправлять SMS
  • запрашивать статусы SMS
  • получать коллбэки по статусу отправленных SMS
  • получать входящие SMS

Ниже отвечаем на часто задаваемые вопросы и рассказываем, как настроить интеграцию двумя способами — по логину и паролю или по токену.

Часто задаваемые вопросы

Почему SMS не отправляются

  • Не куплен тариф. Если у вас тестовый пакет SMS, его нужно подключать каждый день. Посмотреть тариф можно в личном кабинете, в разделе Тарифы
  • Не подключено имя отправителя. Проверить статус имени можно в личном кабинете, в разделе Имена отправителя
  • Имя отправителя подключено не на всех операторов — SMS отправляются только на подключённых операторов
  • Из личного кабинета удалили пользователя, который создавал подключение. Если удалить пользователя, все созданные подключения удалятся вместе с ним — рассылка через них невозможна

Куда можно обратиться за помощью по интеграции

Если возникнут проблемы с интеграцией, напишите на supmarketolog@mts.ru. Чтобы мы могли помочь быстрее, добавьте в письмо подробности:

  • название компании
  • логин подключения
  • описание проблемы
  • пример сообщения: дата, время, system_id, имя отправителя, номер получателя, message_id, коды ошибок
  • tcpdump, логи с ошибкой, статистика по ошибке 

Какие есть технические ограничения

  • До 5 тысяч запросов в минуту в совокупности — на отправку SMS и получение статусов 
  • До 10 тысяч сообщений в одном запросе 
  • Пропускная способность подключения — 10 SMS в секунду. Если отправляете больше 10 SMS в секунду, используйте запрос на отправку в буфер, чтобы сообщения попадали в очередь
https://omnichannel.mts.ru/http-api/v1/b/messages/
  • Максимальные размеры сообщений для каналов: 10 сегментов — 670 символов на кириллице и 1530 на латинице. Кодировка текста сообщения — UTF-8. Можно отправить и больше сегментов, но чем больше сегментов — тем выше вероятность некорректной доставки

Что нужно, чтобы подключить интеграцию

  1. Получите данные для авторизации: Личный кабинет МТС Маркетолога > Рассылки по своей базе PRO > Интеграции > API > Создать подключение
  2. Подключите имя отправителя
  3. Подключите тариф 

Чтобы бесплатно протестировать отправки, можно использовать тестовое имя и пакет SMS 

Способ 1. Авторизация по логину и паролю

Ниже описаны методы, которые можно использовать, если авторизуетесь по логину и паролю:

Метод URL Что делает
POSThttps://omnichannel.mts.ru/http-api/v1/messagesОтправка сообщений 
POSThttps://omnichannel.mts.ru/http-api/v1/b/messages/Отправка сообщений в буфер. Используйте этот URL, если отправляете более 10 SMS в одном запросе
POST https://omnichannel.mts.ru/http-api/v1/messages/info Запрос статусов сообщений
GEThttps://api-adapter.marketolog.mts.ru/get/send-smsОтправка сообщения
GEThttps://api-adapter.marketolog.mts.ru/get/sms-infoЗапрос статуса сообщения

Параметры аутентификации 

Чтобы пройти аутентификацию, при каждом запросе передавайте логин и пароль по схеме Basic Authentication. Логин и пароль можно получить в Личном кабинете МТС Маркетолога: Рассылки по своей базе PRO > Интеграции > API > создать подключение.

Параметр Тип данныхОписание 
Login string Логин
Password string Пароль

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

https://omnichannel.mts.ru/http-api/v1/messages

Описание объектов запроса

Запрос состоит из двух объектов

Параметр Тип данныхОписание 
messages array of objects Массив сообщений с детализацией. Описание структуры сообщения представлено ниже.
options object 

Включает в себя параметры, которые также могут присутствовать в каждом отдельном сообщении: "class" и объект "from". 

Если в объекте messages все сообщения относятся к одному имени отправителя, рекомендуем передавать вышеуказанные параметры один раз в общем для всех сообщений объекте "options". В этом случае для каждого сообщения в массиве messages эти параметры можно не передавать. Ниже есть примеры запросов для обоих случаев.

Структура сообщения: элемент массива messages

 Параметр Тип данных Описание Обязательность поля
1class integer Пользовательский класс сообщения. Используется опционально для управления маршрутизацией сообщений. Связь между параметром class и маршрутом настраивают администраторы по запросу клиента. Пример: class: 1 — отправить в канал SMSНет
2from object Объект с именем отправителя, чата или приложенияДа, если данные не указаны в "options"
2.1from => sms_addressstring Имя отправителя SMS, которое видит получательДа, если данные не указаны в "options"
3toobject Массив объектов с информацией о получателеДа 
3.1to => message_idstring Идентификатор сообщения клиентаНет 
3.2to => msisdnstring Номер телефона адресата. Формат: 79161234567 Да 
4contentobject Объект с информацией о сообщенииДа 
4.1content => short_text string string Текст сообщения. Рекомендуем отправлять до 8 сегментов в одном SMS: 536 символов на кириллице и 1224 на латинице. Кодировка — UTF-8Да 
5ttl_secinteger Время жизни SMS в секундах, возможные значения: от 0 до 259200. Можно передавать как для каждого сообщения в массиве messages, так и общее для всех сообщений — в массиве options Нет 

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

POST /messages 
Content-type: application/json 
Пример с использованием одного имени отправителя: два сообщения отправляются от имени SMS Naming. В этом случае объект "from" и, при необходимости, поле "class", прописываются один раз в объекте "options":
{
 "messages": [
{
"ttl_sec":5,
"content": {
"short_text": "sms text #1"
},
"to": [
{
"msisdn": "79836362346",
"message_id": "10345678-f123-4694-91d7-233df79f65445"
}
]
},
{
"content": {
"short_text": "sms text #2"
},
"to": [
{
"msisdn": "79836362347",
"message_id": "10345678-f123-4694-91d7-233df79f65446"
}
]
}
 ],
 "options": {
"class": 22,
"from": {
"sms_address": "SMS Naming"
}
 }
}
Пример с использованием разных имён отправителя. В этом случае объект from и, при необходимости, поле class, присутствуют в каждом элементе массива messages: 
{
 "messages": [
{
"content": {
"short_text": "sms text #1"
},
"from": {
"sms_address": "SMS Naming #1"
},
"to": [
{
"msisdn": "79836362346",
"message_id": "10345678-f123-4694-91d7-233df79f65445"
}
]
},
{
"content": {
"short_text": "sms text #2"
},
"from": {
"sms_address": "SMS Naming #2"
},
"to": [
{
"msisdn": "79836362347",
"message_id": "10345678-f123-4694-91d7-233df79f65446"
}
]
}
 ]
}

Пример запроса из 1С

 Текст = СтрЗаменить(ТекстСообщения, Символы.ПС, " ");
          	
           	СтруктураОтправки = Новый Структура;
          	
           	МассивСообщений = Новый Массив;
          	
           	Для каждого Адресат Из Адресаты Цикл
          	
                          	ОчередноеСообщение = Новый Структура;
                         	
                          	ОчередноеСообщение.Вставить("content", Новый Структура("short_text", Текст));
                          	Если НЕ ИспользоватьПользовательскийКласс Тогда
                                        	ОчередноеСообщение.Вставить("from",Новый Структура("sms_address", Отправитель));
                          	КонецЕсли;
                         	
                          	МассивАдресата = Новый Массив;
                          	Идентификатор1С = Строка(Новый УникальныйИдентификатор);
                          	МассивАдресата.Добавить(Новый Структура("msisdn, message_id", Адресат.Значение, Идентификатор1С));
                         	
                          	ОчередноеСообщение.Вставить("to", МассивАдресата);
                         	
                          	МассивСообщений.Добавить(ОчередноеСообщение); 
                         	
                          	СохранитьСообщениеВОтправленных(Новый Структура("Адресат, ТекстСообщения, Идентификатор1С", Адресат.Значение, Текст, Идентификатор1С));
                         	
           	КонецЦикла;
          	
           	СтруктураОтправки.Вставить("messages", МассивСообщений);
          	
           	Если ИспользоватьПользовательскийКласс Тогда
                          	СтруктураОтправки.Вставить("options", Новый Структура("class, from", Класс, Новый Структура("sms_address", Отправитель)));
           	КонецЕсли;
           	Запись = Новый ЗаписьJSON;
           	Запись.УстановитьСтроку();
           	ЗаписатьJSON(Запись, Данные);
           	СтрокаJSON = Запись.Закрыть();
           	Соединение = Новый HTTPСоединение(Сервер, 443, Логин, Пароль,,, Новый ЗащищенноеСоединениеOpenSSL());
           	ЗапросHTTP = Новый HTTPЗапрос;

           	ЗапросHTTP.Заголовки.Вставить("Content-type", "application/json");
           	ЗапросHTTP.УстановитьТелоИзСтроки(СтрокаJSON);
           	ЗапросHTTP.АдресРесурса = АдресЗапроса;
          	
           	Ответ = Соединение.ВызватьHTTPМетод("POST",ЗапросHTTP); 

Текст полученного JSON-файла

{
"messages": [
{
"content": {
"short_text": "SMS text"
}
,
"from": {
"sms_address": "SMS Naming"
}
,
"to": [
{
"msisdn": "msisdn here",
"message_id": "UUID here"
}
]
}
]
}

Если в ответ на SMS приходит:

{"code":400,"message":"parsing body body from \"\" failed, because invalid character 'ï' looking for beginning of value"}

измените кодировку — в 1С вместо «UTF-8» установите «CESU-8». Это исправление нужно внести в строчке «ЗапросHTTP.УстановитьТелоИзСтроки (Строка JSON)». Также вы можете интегрироваться с 1С с помощью специального расширения или обработки 

Пример запроса на Python

Файлы для загрузки

Запрос на Python (zip, 1016 Б)

import requests
from requests.auth import HTTPBasicAuth
def sent_message(login, password, naming, to, text_message):
   url = 'https://omnichannel.mts.ru/http-api/v1/messages'
   body = {
   "messages": [
   {
   "content": {
   "short_text": text_message
   },
   "from": {
   "sms_address": naming
   },
   "to": [
   {
   "msisdn": to
   }
   ]
   }]
   }
   resp = requests.post(url , json=body, auth = HTTPBasicAuth(login, password)) 
   return resp
     
def check_message(login, password, message_id):
   url = 'https://omnichannel.mts.ru/http-api/v1/messages/info'
   body = {"int_ids": [message_id]}
   resp_info = requests.post(url , json=body, auth = HTTPBasicAuth(login, password))      
   return resp_info  
   
# Параметры отправки
login = 'ЛОГИН_из_личного_кабинета_раздел_интеграции'
password = 'ПАРОЛЬ_из_личного_кабинета_раздел_интеграции'
naming = 'НЕЙМИНГ_согласованное_имя_отправителя_из_ЛК_Маркетолога'
text_message = 'Текст сообщения'
to = '79001111111'
# Отправка сообщения
sent_message(login, password, naming, to, text_message)
# Проверка статуса
if resp.status_code == 200:
   message_id = resp.json()['messages'][0]["internal_id"]
   print("Запрос отработал успешно message_id = " + message_id)
   resp_info = check_message(login, password, message_id)
   if resp_info.status_code == 200:
       event_code = resp_info.json()["events_info"][0]["events_info"][0]["status"]
       if event_code == 200:
           print("SMS отправлено получателю " + to + ". message_id = " + message_id)
       elif event_code == 201:
           print("SMS НЕ отправлено message_id = " + message_id + " Детали см по кодам ошибок в документации " + str(resp_info.content))
else:
   print("Запрос не отработал. Детали: " + str(resp.content))

Пример запроса на PHP

Файлы для загрузки 

Запрос на PHP (zip, 1.3 Кб)

<?php

class Client
{
    /**
     * @var string
     */
    var $host;
    /**
     * @var string
     */
    var $auth;

    var $timeout;

    /**
     * @param $host string
     * @param $login string
     * @param $password string
     */
    function __construct($host, $login, $password, $timeout = 60)
    {
        $this->host = $host;
        $this->auth = "Basic " . base64_encode($login . ":" . $password);

        $this->timeout = $timeout;
    }

    /**
     * @param $naming string
     * @param $text string
     * @param $phone string
     * @return $id string
     */
    function sendSms($naming, $text, $phone)
    {
        $req = [
            "messages" => [
                [
                    "content" => [
                        "short_text" => $text
                    ],
                    "to" => [
                        [
                            "msisdn" => $phone
                        ]
                    ],
                ]
            ],
            "options" => [
                "class" => 1,
                "from" => [
                    "sms_address" => $naming,
                ],
            ]
        ];
        $respStr = $this->curlRequest("messages", json_encode($req), [], "POST");

        $resp = json_decode($respStr, true);

        if (isset($resp["code"])) {
            var_dump($respStr);
            return "0";
        }


        if (!isset($resp["messages"][0]["internal_id"])) {
            var_dump($respStr);
            return "0";
        }

        var_dump("successes response:", $respStr);

        return $resp["messages"][0]["internal_id"];
    }

    /**
     * @param $ids []string
     * @return array []
     */
    function getSmsInfo($ids)
    {

        $respStr = $this->curlRequest("messages/info", json_encode(["int_ids" => $ids]), [], "POST");

        $resp = json_decode($respStr, true);

        if (isset($resp["code"])) {
            var_dump($respStr);
            return [];
        }

        var_dump("successes response:", $respStr);

        return $resp;
    }

    /**
     * @param $url
     * @param $data
     * @param $headers
     * @return bool|string
     */
    function curlRequest($url, $data = NULL, $headers = NULL, $method = "GET")
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $this->host . $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);

        if (!empty($data)) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }

        $headers = array_merge($headers, ["Authorization: " . $this->auth, "Content-Type: application/json; charset=utf-8"]);

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);

        $response = curl_exec($ch);

        if (curl_error($ch)) {
            trigger_error('Curl Error:' . curl_error($ch));
        }


        curl_close($ch);
        return $response;
    }
}


$client = new Client("https://omnichannel.mts.ru/http-api/v1/", "ЛОГИН", "ПАРОЛЬ");

// отправка сообщения
$id = $client->sendSms("НЕЙМИНГ", "ТЕКСТ СООБЩЕНИЯ", "79999999999"); // отправка смс
// если $id == 0, то была ошибка запроса

if ($id != "0") {
    // получение статуса по id сообщения
    $status = $client->getSmsInfo([$id]);
    var_dump($status);
}

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

https://api-adapter.marketolog.mts.ru/get/send-sms

Чтобы использовать GET-запросы, напишите нам supmarketolog@mts.ru. Мы откроем сетевые доступы до вашего IP-адреса. Темой письма укажите «Доступ для GET-запроса [ИНН организации]». В тексте письма напишите название организации, ИНН, логин от подключения и IP-адрес, до которого нужно открыть доступ. Логин от подключения указан в личном кабинете: Рассылки по своей базе PRO > Интеграции > API

Параметры запроса

Query ParametrsТип данныхКомментарий
loginstringЛогин
passwordstringПароль
msisdnstringНомер телефона адресата. Формат: 79161234567 
fromstringИмя отправителя, которое видит получатель
messagestringТекст сообщения. Рекомендуем отправлять до 8 сегментов в одном SMS: 536 символов на кириллице и 1224 на латинице. Кодировка — UTF-8

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

GET /get/send-sms 

https://api-adapter.marketolog.mts.ru/get/send-sms?login=g_tRW134CVLgdPe4&password=ERGfdg4WK&msisdn=79161234567&from=test_naming&message=test

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

  • Успешный ответ 

Код https-ответа — 200. Успешный ответ означает, что сообщение принято платформой для обработки. HTTPS-код ответа 200 не связан со статусом сообщения 200 и не означает, что сообщение отправлено.

ПараметрТип данныхОписание 
msisdn string Номер телефона адресата 
email string Email адресата — для сообщений на email
message_idstringИдентификатор сообщения клиента   
internal_idstring Внутренний идентификатор сообщения
{
 "messages": [
 {
"msisdn": "79117903795",
"email": "example@mail.ru",
"message_id": "uuid",
"internal_id": "uuid2"
 }
 ]
}
  • Ответ c ошибкой
Параметр Тип данныхОписание
code integer Код ошибки — перечислили их ниже
message stringОписание ошибки — перечислили их ниже

Код http-ответа 200 возвращается, когда общая структура запроса и авторизация корректны. Если при обработке сообщения из списка возникла ошибка — она будет описана в полях code и message. 

Если получите код http-ответа, которого нет в списке — напишите нам supmarketolog@mts.ru 

Код http-ответаКод ошибкиНаименование ошибкиОписание 
200806 recipient is requiredНе указан получатель сообщения в соответствующем параметре msisdn/email, либо пустое поле "to"
200 807 msisdn validation failedВведен некорректный номер получателя. Например, начинается с символа "+"
400 802 bad credentialsНеверный логин или пароль. 
400 803 MessageLimit has been expiredПревышен лимит на отправку сообщений. Максимальная пропускная способность подключения — 10 SMS в секунду 
400 804 content is required Отсутствует текст сообщения в соответствующем параметре short_text / rich_text / email_template_id / vk_template_name / ok_template_name
400 805 Template info unavailableНедоступен сервис макетов
400 808 Template info not found Шаблон с указанным email_template_id не найден
401 401 unauthenticated for invalid credentialsЗаголовок авторизации отсутствует, либо нет токена/не валидный формат токена
422 602 {param_name} in body is requiredОтсутствует обязательный параметр {param_name}

Получение статусов сообщений методом POST

https://omnichannel.mts.ru/http-api/v1/messages/info

Параметры запроса

Параметр Тип ОписаниеОбязательность 
msg_ids array of strings

Внешний (клиентский) идентификатор сообщения. 

До 500 элементов в массиве

Должно присутствовать хотя бы одно из полей
int_ids array ofstrings 

Внутренний идентификатор сообщения платформы. Рекомендуется делать запросы по статусам сообщений с использованием данного поля. 

До 500 элементов в массиве

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

Ответ представляет из себя массив events_info, внутри которого будут объекты со списком событий по каждому сообщению: отправка, доставка и так далее. 

Структура элемента массива events_info

Параметр Тип Описание 
events_infoarray of objectsМассив объектов с информацией по каждому событию сообщения 
key string Внутренний идентификатор сообщения, такой же как в поле "internal_id" в объекте события
error bool Необязательное поле. Приходит значение true если во время обработки событий по сообщениям возникли ошибки 
error_description string Необязательное поле. Текстовое описание ошибки, возникшей во время обработки событий по сообщениям

Структура объекта события

Параметр Тип Описание 
message_idstring Идентификатор сообщения клиента 
namingstring Имя отправителя
destinationstring Номер отправителя
status uint32Код события. Смотрит список статусов
channel uint32Идентификатор исходящего канала. Cм. Справочник каналов 
total_partsuint32Количество сегментов сообщения
received_at stringДата и время, когда сообщение было принято http-шлюзом
event_at string Дата и время события: отправки, доставки и так далее
internal_errorsarray(dtype=uint32)  Массив внутренних кодов ошибок. Null, если ошибок нет
internal_id stringВнутренний идентификатор сообщения

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

{
 "msg_ids": [
 "string"
 ],
 "int_ids": [
 "string"
 ]
}

Пример запроса с идентификаторами

{
"int_ids": [
"88b1-4622-9308", "88b1-4646-9109"
]
}

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

{
 "events_info": [
{
"events_info": [
{
"channel": 4,
"destination": "79870061042",
"event_at": "2021-05-18T13:45:01.000+03:00",
"internal_errors": null,
"internal_id": "c128187b-145f-4b86-b47f-8e99cf513a59",
"message_id": "10345678-f123-4694-91d7-233df79f65445",
"naming": "MTS_A2P_PRO",
"received_at": "2021-05-18T13:45:00.000+03:00",
"status": 200,
"total_parts": 1
},
{
"channel": 4,
"destination": "79870061042",
"event_at": "2021-05-18T13:45:05.000+03:00",
"internal_errors": null,
"internal_id": "c128187b-145f-4b86-b47f-8e99cf513a59",
"message_id": "10345678-f123-4694-91d7-233df79f65445",
"naming": "MTS_A2P_PRO",
"received_at": "2021-05-18T13:45:00.000+03:00",
"status": 300,
"total_parts": 1
}
],
"key": "c128187b-145f-4b86-b47f-8e99cf513a59"
}
 ]
}

Получение статусов сообщений методом GET

https://api-adapter.marketolog.mts.ru/get/sms-info

Параметры запроса

Query ParametrsТип данныхКомментарий
loginstringЛогин
passwordstringПароль
msg_idsstringВнешний (клиентский) идентификатор сообщения
from stringИмя отправителя SMS, которое видит получатель

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

GET /get/sms-info Content-type: application/json

https://api-adapter.marketolog.mts.ru/get/sms-info?&login=g_tRWasertVLgdPe4&password=sd3RVaOyWK&msg_ids=6eca893e2f-19e2-4118-b706-7168e75cd57f&from=test_naming

Пример успешного ответа

{
    "events_info": [
        {
            "key": "b9b9d951-ccb4-4bc8-8aba-c50bfdada6be",
            "events_info": [
                {
                    "message_id": "b9b9d951-ccb4-4bc8-8aba-c50bfdada6be",
                    "naming": "mtscom_t",
                    "destination": "79870061042",
                    "status": 200,
                    "channel": 1,
                    "total_parts": 1,
                    "received_at": "2022-07-26T10:43:39+03:00",
                    "event_at": "2022-07-26T10:43:39+03:00",
                    "internal_errors": null,
                    "internal_id": "7bbbe11e-13f0-40cc-a166-7192bf2d7199"
                },
                {
                    "message_id": "b9b9d951-ccb4-4bc8-8aba-c50bfdada6be",
                    "naming": "mtscom_t",
                    "destination": "79870061042",
                    "status": 300,
                    "channel": 1,
                    "total_parts": 1,
                    "received_at": "2022-07-26T10:43:39+03:00",
                    "event_at": "2022-07-26T10:43:41+03:00",
                    "internal_errors": null,
                    "internal_id": "7bbbe11e-13f0-40cc-a166-7192bf2d7199"
                }
            ]
        }
    ]
}

Приём входящих SMS

Платформа может принимать входящие SMS и отправлять их в вашу систему. Чтобы получать входящие, отправьте запрос на templates@mts.ru 

Структура входящего сообщения 

№Параметр                   Тип данныхОписание
1fromobjectОбъект, который содержит имя отправителя
2from.received_atdatetimeВремя, когда пришло сообщение от пользователя в платформу
3from.user_contactstringНомер телефона отправителя 
4from.namingstringНомер для входящих SMS — ваше имя отправителя
5contentobjectОбъект, который содержит контент
6content.content_typestringТип контента
7content.textstringТекст сообщения
8file_urlstringURL картинки или файла. Не используется в SMS
9file_namestringНаименование файла. Не используется в SMS
10channel_idintКанал, из которого пришло сообщение. Для SMS = 1
11internal_idstringid сообщения 

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

{
  "messages": [
    {
      "content": {
        "text": "some message"
      },
      "from": {
        "naming": "4444",
        "user_contact": "79117903795",
        "received_at": "2022-02-04T00:00:00Z"
      },
      "channel_id": 1,
      "internal_id": "10345678-f123-4694-91d7-233df79f65445"
    }
  ]
}

Ответы клиентской системы на входящие сообщения

Код HTTP-ответа может быть: 

  • 200 — OK
  • 400 — ошибки обработки параметров 
  • 500 — недоступность сервисов

Способ 2. Авторизация по токену

Ниже описаны методы, которые можно использовать, если авторизуетесь по токену.

Параметры аутентификации

Получите токен в личном кабинете МТС Маркетолога: Рассылки по своей базе PRO > Интеграции > API > Создать подключение > Создать токен. 

Чтобы авторизоваться, передавайте токен в заголовках запроса (Authorization: Bearer token). Полученный токен действует год, после этого автоматически обновляется.

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

https://api.mts.ru/client-omni-adapter_production/1.0.2/mcom/messageManagement/messages

Запрос состоит из массива сообщений submits и обязательного параметра naming.

ПараметрТип данныхОбязательностьОписание
submitsarrayДа

Данные для отправки сообщений. Максимальное количество

элементов — 1 000

namingstringДаИмя отправителя

Структура сообщения: элемент массива submits.

ПараметрТип данныхОбязательностьОписание
msidstringДаНомер получателя
messagestringДа

Текст сообщения.

Максимальная поддерживаемая длина — 2 000 символов

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

{
	"submits": [
	  {
		"msid": "79042807645",
		"message": "Текст сообщения"
	  }
	],
	"naming": "Taxi"
}

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

{
  "code": 2147483647,
  "description": "string",
  "data": {
    "submitResults": [
      {
        "msid": "string",
        "messageID": 99999999999,
        "code": "OK"
      }
    ]
  }
}

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Получение конкретного сообщения методом GET

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

https://api.mts.ru/client-omni-adapter_production/1.0.2/mcom/messageManagement/messages/13

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

{
  "code": 2147483647,
  "description": "string",
  "data": [
    {
      "messageID": 99999999999,
      "creationDate": "string",
      "Type": "MO",
      "text": "string",
      "senderMsid": "string",
      "senderName": "string",
      "targetMsid": "string",
      "targetName": "string"
    }
  ]
}

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Получение статусов сообщений методом GET

GET/mcom/messageManagement/messages/status

Параметры запроса

Query ParametrsТип данныхОбязательностьОписание
messageIDsstringДа

Идентификаторы сообщений. Максимальное количество записей — 1 000. 

Передаём через запятую: 1,2,3

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

https://api.mts.ru/client-omni-adapter_production/1.0.2/mcom/messageManagement/messages/status?messageIDs=1

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

{
  "code": 2147483647,
  "description": "string",
  "data": [
    {
      "messageID": 999999999999999,
      "statuses": [
        {
          "msid": "string",
          "status": "Pending",
          "date": "2025-03-15T14:30:22Z",
          "userDeliveryDate": "2025-03-15T14:30:25Z",
          "partCount": 2147483647
        }
      ]
    }
  ]
}

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Получение статуса сообщения методом GET

GET/mcom/messageManagement/messages/{messageID}/status

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

https://api.mts.ru/client-omni-adapter_production/1.0.2/mcom/messageManagement/messages/13/status

Входные параметры

Query ParametrsТип данныхОбязательностьОписание
messageID integerДаИдентификатор сообщения

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

{
  "code": 2147483647,
  "description": "string",
  "data": [
    {
      "messageID": 999999999999999,
      "statuses": [
        {
          "msid": "string",
          "status": "Pending",
          "date": "6679-27-05T20:27:60K96",
          "userDeliveryDate": "0648-01-13T55:38:73",
          "partCount": 2147483647
        }
      ]
    }
  ]
}

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Получение баланса и кредитного лимита методом GET

GET balanceManagement/balance/full

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

https://api.mts.ru/client-omni-adapter_production/1.0.2/balanceManagement/balance/full

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

{
  "balance": 4972.85,
  "creditLimit": 100.85
}

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Получение стоимости SMS методом POST

POST /mcom/messageManagement/info

Параметры запроса

ПараметрТип данныхОбязательностьОписание
messageIdsarrayДаМассив идентификаторов отправленных сообщений

Ограничение: не более 1 000 параметров.

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

{
 "messageIds": [
   "171e0ccf-afa3-4a8c-bf2d-474ae3b5133c",
   "671e0fcf-aca3-3a8c-ba3d-474ae3b5267d"
 ]
}

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

ПараметрТип данныхОбязательностьОписание
messageIdstringДаИдентификатор отправленного сообщения
trafficPatternTypestringДа

Тип сообщения: 

  • A — авторизационное
  • T — шаблонированное
  • R — рекламное
coststringДаСтоимость

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

[
  {
    "messageId": "171e0ccf-afa3-4a8c-bf2d-474ae3b5133c",
    "cost": "1.75",
    "trafficPatternType": "A"
  }
]

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Получение статистики по пакетам за текущий месяц методом GET

GET mcom/messageManagement/statistics 

Параметры запроса

Query ParametrsТип данныхОбязательностьОписание
yearintegerНетГод
monthmonthНетМесяц

Если query params не переданы, метод вернёт статистику за текущий период.

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

https://api.mts.ru/client-omni-adapter_production/1.0.2/mcom/messageManagement/statistics?year=2023&month=06

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

ПараметрТип данныхОбязательностьОписание
yearintegerДаГод 
monthintegerДаМесяц
packetSizeNonTemplateMtsintegerНетРазмер пакета обычных SMS МТС
packetSizeNonTemplateAllintegerНетРазмер пакета обычных SMS на операторов РФ
packetSizeAllNonTemplateNoBeelineNoMegafonintegerНетРазмер пакета обычных SMS на операторов РФ, кроме билайна и МегаФона
packetSizeTemplateMtsintegerНетРазмер пакета шаблонированных SMS на МТС
packetSizeNonTemplateAllintegerНетРазмер пакета шаблонированных SMS на всех операторов РФ
packetSizeAuthMtsintegerНетРазмер авторизационного пакета SMS на МТС
packetNonTemplateMtsRemainderintegerНетОстаток пакета обычных SMS МТС
packetNonTemplateAllRemainderintegerНетОстаток пакета обычных SMS на операторов РФ
packetSizeAllNonTemplateNoBeelineNoMegafonRemainderintegerНетОстаток пакета обычных SMS на операторов РФ, кроме билайна и МегаФона
packetTemplateMtsRemainderintegerНетОстаток пакета шаблонированных SMS на МТС
packetTemplateAllRemainderintegerНетОстаток пакета шаблонированных SMS на всех операторов РФ
packetAuthMtsRemainderintegerНетОстаток авторизационного пакета на МТС
quantityNonTemplateSmsOverPacketMtsintegerНетКоличество SMS сверх обычного пакета на МТС
quantityNonTemplateSmsOverPacketAllintegerНетКоличество SMS сверх обычного пакета на операторов РФ
quantityAllNonTemplateNoBeelineNoMegafonintegerНетКоличество SMS сверх обычного пакета на операторов РФ, кроме билайна и МегаФона
quantityNonTemplateMegafonintegerНетКоличество SMS сверх обычного пакета на МегаФон
quantityNonTemplateBeelineintegerНетКоличество SMS сверх обычного пакета на билайн
quantityServeceSmsOverPacketAllintegerНетКоличество сервисных SMS сверх пакета на МТС
quantityAuthSmsOverPacketAllintegerНетКоличество авторизационных SMS сверх пакета на МТС
quantityTemplateSmsOverPacketAllintegerНетКоличество SMS сверх шаблонированного пакета на операторов РФ
quantityIncomingintegerНетКоличество входящих SMS 
quantityInternationalintegerНетКоличество SMS на международных операторов
totallyQuantitySmsintegerНетСуммарное количество SMS в месяц

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

{
"year": 2023,
"month": 6,
"packetSizeNonTemplateMts": 4,
"packetSizeNonTemplateAll": 4,
"packetSizeTemplateMts": 2,
"packetSizeTemplateAll": 2,
"packetSizeAuthMts": 2,
"packetNonTemplateMtsRemainder": 2,
"packetNonTemplateAllRemainder": 2,
"packetTemplateMtsRemainder": 0,
"packetTemplateAllRemainder": 0,
"packetAuthMtsRemainder": 0,
"quantityNonTemplateSmsOverPacketMts": 2,
"quantityNonTemplateSmsOverPacketAll":2,
"quantityServiceSmsOverPacketAll": 3,
"quantityAuthSmsOverPacketAll": 3,
"quantityTemplateSmsOverPacketAll": 3,
"quantityIncoming": 3,
"quantityInternational": 5,
"totallyQuantitySms": 32
}

Пример ответа с ошибкой

{
  "status": 1000,
  "code": 2147483647,
  "description": "string",
  "validationErrors": [
    "string"
  ]
}

Коллбэки

Платформа может возвращать статусы отправленных сообщений в порты 80 и 443. Чтобы получать коллбэки, добавьте адрес в личном кабинете при создании API подключения

Параметры коллбэков

Название Тип Описание 
message_idstring Идентификатор сообщения клиента
destination string 

Номер отправителя. 

Если в клиентском URL используется протокол HTTPS (не HTTP), данное поле не передаётся

naming stringИмя отправителя, которое использовали в сообщении 
status uint32 Код события. Cмотрите Список статусов 
channel uint32Идентификатор исходящего канала. Всегда 1 — SMS
total_parts uint32Количество сегментов сообщения 
received_atstring Дата и время, когда сообщение было принято http-шлюзом 
event_atstring Дата и время последнего события
internal_errorsarray(dtype=uint32) Массив внутренних кодов ошибок. Null, если ошибок нет
internal_id string Внутренний идентификатор сообщения 

Пример коллбэка

{
 "items": [
 {
"message_id": "uuid",
"internal_id": "76305352-7994-4f2e-984a-95a39432d777",
"naming": "string",
"destination": "79117903795",
"status": 300,
"channel": 1,
"total_parts": 1,
"received_at": "2020-02-04T00:00:00Z",
"event_at": "2020-02-04T00:00:00Z",
"internal_errors": [
10100,
10801
]
 }
 ]
}

Ответ клиентской системы на коллбэк

Код HTTPS-ответа должен быть 204 (No Content)

Коды событий и ошибок

Коды событий Status

Код статуса для интеграции с basic authorizationНазвание статуса для интеграции с авторизацией по токенуОписаниеКонечный статус
—PendingСообщение ожидает отправкиНет
200Sending Сообщение успешно отправлено, но ещё не доставленоНет
201NotSent Сообщение не отправленоДа
202Sending В сообщении, которое состоит из нескольких сегментов, была успешно отправлена лишь их часть. Например, два из трёх сегментовНет
300 Delivered Сообщение было доставленоДа
301NotDeliveredСообщение не было доставленоДа
302Delivered Пользователь получил только часть сообщения. Например, два из трёх сегментовДа

В течение трёх дней после отправки SMS продолжаются попытки доставить его. После трёх дней статус сообщения будет окончательным.

Описание ошибок

Внешний кодВнутренний кодОписание
00Сигнальная сеть оператора не вернула расширенный статус
11Получатель был не в сети или в момент отправки SMS номер никому не принадлежал
22Получатель был не в сети всё время, пока мы пытались доставить SMS
33Абонент заблокирован, поставил блокировку на приём SMS, либо находится в роуминге и не может получить SMS
44Ошибка в процессе доставки, попробуйте ещё раз
55Неизвестный абонент, проверьте номер получателя 
66У получателя не подключена услуга приема SMS
77Коммутационное оборудование, на котором зарегистрирован абонент не отвечает
88

Номер указан некорректно либо телефон получателя выключен уже очень давно. 

Правильный формат для номеров РФ: 70000000000

99Запрещённый абонент
1010Имя отправителя не согласовано у оператора получателя
1111У получателя не подключен приём SMS
1212Ошибка на уровне мобильного устройства абонента
1313У получателя ограничены услуги связи
1414Указанное имя отправителя не согласовано или не подключено
1515CUG reject
2121Not Supported facility
2222Not Supported roaming
3131Busy subscriber
3232Busy subscriber over GPRS
3434Ошибка в SMS-центре
3535Data Missing
3636Unexpected Data Value
4040Скорее всего у получателя нет памяти в телефоне, чтобы принять сообщение
4141Ошибка в SMS-центре
4242Not Supported by equipment
4343Not Supported by equipment
4444Message Raplace Failure
4545Unspecific PID Error
4646Message Class Not Supported
4747DCS Error
4848TPDU Not Supported
4949SIM Full
5050No SMS Storage in SIM
5353Busy SIM Application Toolkit
5454Data Download Error
6060Absent subscriber
6161Absent subscriber Detached
6262

Оператор получателя не нашёл абонента в своей базе. Скорее всего получатель в процессе смены оператора. 

Отправьте SMS ещё раз

6363У получателя временно ограничен приём SMS. Попробуйте ещё раз
6464Absent subscriber Deregistered
6565Absent subscriber Purged
6666Absent subscriber over GPRS Page Fail
6767Absent subscriber over GPRS Detached
6868Absent subscriber over GPRS Deregistered
6969Absent subscriber over GPRS Purged
7070Absent subscriber unidentified over MSC
7171Absent subscriber unidentified over GPRS
128128Абонент не существует или у него не подключена функция приёма SMS
148148Получатель был недоступен
170170Внутренняя ошибка сервера. Обратитесь в службу поддержки
171171Запрещена отправка дубликатов. Не повторяйте отправку сообщений, на которые возвращается данная ошибка
172172Некорректная кодировка для многосоставного сообщения. Необходимо передавать все части многосоставного сообщения в едином data_coding
245245Время ожидания от SMS-центра оператора истекло
252252Запрещена отправка сообщений на данному абоненту
253253Текст сообщения содержит запрещённые слова
254254Запрещена отправка сообщений с данного имени отправителя
255255Внутренняя ошибка оператора получателя
601601Недопустимая длина сообщения
608608Системная ошибка в SMS-центре, отправьте SMS ещё раз
610610Имя отправителя не согласовано у этого оператора
611611Номер телефона указан некорректно. Правильный формат для номеров РФ: 70000000000
669669Получатель не подтвердил свой номер телефона у оператора
688688Троттлинг
698698Истёк период валидности сообщения
700700Код временной ошибки приложения ESME
701701Код ошибки постоянного приложения приемника ESME
857857ESME Запрещено использовать указанную операцию
950950Приостанавливается доставка SMS от банковских номеров на 24 часа
10581058Слишком длинное SMS
10781078На SMSC UMS Huawei ошибка означает, что не был найден маршрут для отправки SMS на указанный номер получателя, или формат номера «Б» неправильно задан
12791279Чтобы уточнить причину, напишите в техподдержку
12811281PDU запрещена по правилам роутинга (invalid sender). С этой ошибкой обратитесь в поддержку supmarketolog@mts.ru 
12831283Шаблон сообщения не соответствует согласованным
12841284В тексте сообщения найдены запрещённые слова или части слов
12991299Ошибка отправки многосоставного сообщения
13011301Оператор получателя определил SMS как спам
15371537Заданное имя отправителя у получателя находится в чёрных списках
1010100Указанное имя отправителя не согласовано или не подключено
1010110Имя отправителя содержит некорректные символы
1010111Нет данных в OmniMessage о client_connection_id
1010112Имя отправителя не согласовано у оператора получателя
1010113Неизвестный CallDirection
1010114Нет данных в OmniRoute о ChannelTypeId
-10301Не было соединения с SMS-центром. Техническая ошибка
90110600В подключении не указан маршрут, обратитесь в техподдержку
90110601Ошибка в настройке маршрута
90110602Не найдено подходящее правило в маршруте
90110603Имя отправителя не согласовано у оператора получателя
90110604Шаблон не согласован с оператором получателя
90110605Запрет отправки пользователем
90110606Превышен лимит ожидания от одного из сервисов платформы, попробуйте отправить SMS ещё раз
90110607gRPC запрос на отправку сообщения закрыт со стороны клиентского шлюза
90110608Превышен лимит сообщений в месяц, установленный в настройках подключения (month_message_limit)
90110609Не найдена резервная группа
90010700Превышен лимит ожидания от одного из сервисов платформы, отправьте SMS ещё раз
90010701Ошибка транслитерации
1110800Не указан номер телефона получателя
1110801Пустой параметр dst_naming в OmniRoute
1110802Номер телефона указан некорректно. Правильный формат для номеров РФ: 70000000000
1110803Не определился оператор и регион получателя. Проверьте номер — вероятно, он некорректный
1110900Блокировка по услуге Оптимизация трафика
1010901Блокировка по услуге Мониторинг клиента
1110902Блокировка по услуге Мониторинг абонента
1110903Блокировка по услуге Мониторинг всех абонентов
1110904Абонент в глобальном стоп-листе (BlockBlacklistGlobal)
1110905Получатель у вас в чёрном списке 
1110906Абонент не в белом списке (BlockWhitelistPersonal).
1110908Изменен владелец номера лицевого счёта
1110909Смена владельца номера
1110910Финансовая блокировка клиента
125125Номер получателя не существует
90411000Не удалось создать Firebase приложение на основе авторизационных данных
90411001Не удалось создать приложение для отправки сообщений через Firebase
90411002Возникли проблемы при установке прокси для Firebase
90411003Сообщение не отправлено получателю через Firebase
90411010Сертификат p12 для APNs не расшифрован
90411011Сертификат p8 для APNs не расшифрован
90411012Возникли проблемы с использованием прокси-сервера для APNs
90411013Сообщение не отправлено получателю
90411021Возникли ошибки при запросе к базе данных
90411022Возникли ошибки при запросе к базе данных
90411023Указан некорректный тип платформы клиента
90411024Сертификат не обработан или не сохранён
90411025Отсутствуют данные для типа платформы
90411040Неизвестный тип платформы (aPNS/Firebase/HMS)
90411050По указанному номеру телефона пользователя не найдены активные подписчики
90411051Возникли ошибки при запросе к базе данных
90411052Указан неверный тип платформы в базе данных
90411060Ошибка преобразования сообщения
90411061Отсутствуют данные о сообщении
90411062Не указан текст сообщения для отправки
91011100Не получено уведомление о доставке
91011110Ошибка преобразования proto сообщения
91011120Ошибка загрузки данных из базы данных при старте сервиса
91011121Ошибка загрузки данных в базе данных при остановке сервиса
91011130Неизвестный тип события
91011131Ошибка обработки Submit_ok
91011132Ошибка обработки Delivery_ok
90311200Причина неизвестна, истёк срок доставки SMS
90311201Сегмент не отправлен
90311203Один из сегментов SMS не отправлен — клиент получил неполное сообщение
90511300Не удалось отправить сообщение через sms-t
90511301Невалидный формат url для sms-t
90511302Невалидный формат url для proxy
90511303Невалидный ответ от sms-t
90511304Ошибки от сервиса sms-t
90511307Невалидный формат url для proxy
90511310Необработанная ошибка
90511311Не смогли преобразовать данные к типу AuthData
90511312Не найден билдер
90511313Не найден yaml-файл
90511314Не смогли распарсить yaml-файл
90511315В yaml-файле нет нужной информации
90511340Ошибка преобразования proto сообщения
90511341В сообщении отсутствует поле MessageParams
90511342В сообщении отсутствуют данные необходимые для сервиса
90511350Неизвестная ошибка при отправке
90511351Достигнут предел переповторов отправки
90511352Неподдерживаемая ChannelGroupID
90511380Неизвестная ошибка при коллбэке
90511381Клиент не подписан на канал
90511383Неверные настройки аккаунта
90511384Ошибочный формат сообщения
90511387Платёжные ошибки
90511389Ожидается ответ пользователя
90511390Не смогли определить нейминг для sms-t чата (МО трафик)
90611400Ошибка чтения сообщения из очереди обмена
90611401Ошибка преобразования внутреннего формата сообщения
90611410Ошибка парсинга URL прокси-сервера
90611411Ошибка аутентификации на стороне email-провайдера
90611412Ошибка отправки запроса в сторону email-провайдера
90611413Ошибки валидации сообщения
90611420Ответ от email-провайдера содержит ошибки
90611430Ошибка при записи события во внутреннюю очередь
90111700Дубликат сообщения — услуга дедубликации
90111900Не подключён тариф
90111901Пакет SMS закончился
90111902Пакет закончился. По всем сообщениям получено подтверждение корректной отправки
90111903Нет подходящего тарифа
Обновлено 21 апреля 2026 г.