API для отправки сообщений - API SMS, API Viber, API WhatsApp
  • RU
  • BY
  • KZ
  • UZ
9:00 - 20:00
8 (800) 100-02-58
SMS-рассылка

Рассылка СМС сообщений - эффективный способ маркетинговых коммуникаций с представителями ЦА посредством сотовой связи

Каскадная рассылка

Платформа для отправки сообщений в разные каналы, имеющие статус официальных (SMS, мессенджеры, соц. сети и PUSH), с возможностью составления маршрута очередности каналов (каскад).

Мобильная PUSH платформа

Рассылка PUSH уведомлений позволяет значительно сократить расходы на рассылку сервисных, транзакционных и рекламных сообщений по аудитории, установившей ваше мобильное приложение на платформах Apple или Android

Чат-платформа

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

CDP платформа

CXDP собирает и объединяет клиентские данные из различных источников, таких, как веб-сайты, мобильные приложения, CRM, программы лояльности и др.

SMS шлюз

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

SMS

Доставка без интернета. Прямые подключения к операторам, максимальная надёжность

App Push

Мгновенные уведомления в приложение с высоким CTR и аналитикой по каждой кампании

Уведомления на Android

Доставка SMS через интернет. Экономия до 50%, оплата за доставку.

T-Push

OTP-коды в приложение Т-Банка: доходимость 80%, дешевле SMS, каскад в SMS.

WhatsApp Business API

Диалог с клиентом в популярном мессенджере: шаблоны, медиафайлы, кнопки и боты

Viber Bots

Автоматизация поддержки и продаж внутри Viber. Бот работает за вас 24/7

Viber Business messages

Сообщения с картинками, кнопками и брендингом для широкой и вовлечённой аудитории

FlashCall

Верификация через входящий звонок: быстрее и дешевле, чем SMS с кодом

Email

Маркетинговые и транзакционные письма с гибкими шаблонами и детальной статистикой

Notify.Mail.ru

Официальные уведомления для аудитории ВКонтакте и Одноклассников

Telegram

Рассылки и боты для лояльной аудитории с высоким процентом прочтений

API SMS

Формат номера телефона

Номер телефона абонента всегда должен передаваться в международном формате в виде : код_страны код_оператора номер_телефона (без ведущего знака «+») .

Код страны Код оператора Номер телефона Страна, оператор
7 916 1112233 Россия, МТС
375 29 2134567 Беларусь, МТС
7 701 1234567 Казахстан, Кселл
380 67 1234567 Украина, Киевстар
34 6400 12345 Испания, Jazz Telecom
371 2231 1234 Латвия, Tele2

Если у абонента прямой городской номер (это касается только российских абонентов), у него должен быть также и второй номер в федеральном формате. В частности, московские абоненты Билайн имеют федеральный аналог своего номера с кодом 903, московские абоненты МТС — с кодом 985, московские абоненты МегаФон — с кодом 925. Прямые номера необходимо указывать с федеральным кодом, например, для абонентов московского МТС не 74951234567, а 79851234567. Если нет информации, какому оператору принадлежит прямой московский номер, можно указывать его с кодом 495. Нам известны большинство диапазонов прямых московских номеров и, как правило, мы можем сконвертировать номер в федеральный формат. В этом случае в журнале сообщений номер будет отображаться в федеральном формате. В отчёте о доставке, переданном через любой из предоставляемых нами протоколов, номер телефона так же будет в федеральном формате.

Адрес отправителя

При отправке СМС в качестве адреса отправителя можно подставить число или альфанумерическую (буквенно-цифровую) последовательность. При этом максимальная длина числового отправителя ограничена 15 цифрами, а альфанумерического - 11 символами. Это ограничение стандарта GSM. В сетях других стандартов могут быть другие ограничения. Например, в CDMA альфанумерические отправители недоступны.

Помимо базовых ограничений стандарта, операторы могут накладывать дополнительные ограничения на длину и содержание имени отправителя. Например: запрет буквенных имен, требование предварительной активации имени отправителя у оператора, запрет использования несуществующих номеров, запрет использования номеров из определённого диапазона и т.п.
На российские номера телефонов запрещена отправка сообщений с цифровым отправителем. Принимаются только альфанумерические.

Большинство операторов создают и используют чёрные списки имён отправителей. В них заносятся имена, замеченные в спам-рассылках, мошенничестве и иных нарушениях, предусмотренных законодательством страны. У SMS Traffic тоже есть подобный список. Как и чёрные списки операторов, наш список не публикуется и не предоставляется по запросу, так как является коммерческой тайной организации.

Если в сеть оператора поступает сообщение с именем, не подходящим под налагаемые ограничения, наиболее типичная реакция — отказ в передаче (хотя все зависит от конкретного оператора, а в некоторых случаях - даже от настроек каждого отдельного СМС-центра в пределах одного оператора). У зарубежных операторов встречается практика передачи ложно-положительных статусов доставки.

Формально, в адресе отправителя можно использовать любой символ из основной таблицы кодировки «default GSM alphabet» (см. GSM 03.38). При этом, если в тексте встречаются символы из расширенной таблицы, они будут заменены на нашей стороне на похожие по начертанию символы из основной таблицы.
Некоторые СМС-центры и мобильные телефоны поддерживают не весь диапазон символов GSM кодировки в имени отправителя. Поэтому мы рекомендуем пользоваться символами из набора: "A-Z", "a-z", "0-9", "-", "_", ".".

Надёжность и отказоустойчивость

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

Протокол Основной Дублирующий
HTTP API https://api.smstraffic.ru https://api2.smstraffic.ru
SMPP server1.smstraffic.ru:4442 server2.smstraffic.ru:4442
SMPP (TLS) server1.smstraffic.ru:4441 server2.smstraffic.ru:4441

Для SOAP протокола адрес дублирующего сервера прописан в WSDL.

Для SMTP протоколов все запасные сервера прописаны в MX записях соответствующих протоколам доменов. Согласно спецификации SMTP, распределение трафика между MX серверами происходит автоматически и, как правило, производить дополнительные настройки для обеспечения отказоустойчивости не нужно.

HTTP API v2 (JSON + API Key)

В версии HTTP API v2 используется современный формат обмена данными JSON и авторизация по ключу API Key, который передаётся в HTTP-заголовке Authorization: Bearer <API_KEY>. Тело запроса (при наличии) и ответы сервера передаются в формате JSON с кодировкой UTF-8. При отправке запросов методом POST обязательно указание заголовка Content-Type: application/json. Имена параметров в теле запроса чувствительны к регистру.

Токен состоит из двух частей, разделённых прямым слешем (символ «/»). Первая часть — несекретная, её можно сообщить службе технической поддержки в случае вопросов по работе протокола; вторая часть — секретная, её необходимо хранить в тайне. Пример токена — 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR. Несекретная часть — 1837, секретная — ptf…waR.

Каждый токен имеет ограниченную область действия. Если у токена отсутствует разрешение на выполнение действия, сервер вернёт ответ с HTTP-кодом 403. Также у токена есть ограничение по количеству запросов в единицу времени: при его превышении сервер возвращает HTTP-код 429, в ответе может присутствовать заголовок Retry-After с рекомендуемым временем для совершения повторного запроса.

В таблицах с описанием параметров обязательные параметры помечены символом *. Колонка «Тип» содержит тип данных: string — строка; string (RFC 3339) — строка в формате RFC 3339 (раздел 5.6), например 2025-01-01T23:59:59+03:00; number — число; boolean — логическое значение (true/false); object — вложенный JSON-объект; array[x] — массив элементов типа x; enum — перечисление разрешённых значений. Вложенность параметров может описываться через точечную нотацию: запись name.nested.subnested эквивалентна структуре { "name": { "nested": { "subnested": … } } }.

В настоящее время получить API Key и отредактировать список разрешений для конкретного ключа можно по запросу через техническую поддержку.

Отправка СМС сообщений

POST api.smstraffic.ru/v2/send

Описание параметров запроса

Поле Тип Описание
channels.sms object Настройка отправки по СМС каналу. См. таблицу параметров объекта SendRequest.Channels.Sms.
destinations * array[object] Список абонентов и их индивидуальные параметры. См. таблицу параметров объекта SendRequest.Destinations.
originator string Имя отправителя. Если не задано, берётся значение по умолчанию, установленное в личном кабинете.
trackingData string Глобальная пользовательская метка trackingData для всех сообщений без индивидуального параметра trackingData. Не более 40 символов.
scheduling object Планирование отправки сообщений. См. таблицу параметров объекта SendRequest.Scheduling.
batchName string Идентификатор рассылки.
restrictiveId string Уникальный идентификатор, предотвращающий повторную отправку в течение часа. Не более 36 символов.

Параметры объекта SendRequest.Channels.Sms

Поле Тип По умолчанию Описание
message string - Текст сообщения, общий для всех получателей, если у них не указан индивидуальный текст.
transliterate boolean false Транслитерировать текст сообщения.
maxParts number 255 Максимальное количество частей сообщения для абонента.

Параметры объекта SendRequest.Destinations

Поле Тип Описание
to number Номер телефона абонента.
params object Параметры подстановки в тексте сообщения.
trackingData string Пользовательская метка для отслеживания. Не более 40 символов.
content.sms.message string Индивидуальный текст СМС сообщения.

Параметры объекта SendRequest.Scheduling

Поле Тип По умолчанию Описание
startDateTime string (RFC 3339) - Дата-время отправки сообщений.
localtime boolean true Учитывать локальное время абонента.
Пример запроса
POST /v2/send HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR

{
  "channels": {
    "sms": {
      "message": "Hello, [[name]]!",
      "timeout": 86400,
      "transliterate": false,
      "maxParts": 255
    }
  },
  "destinations": [
    {
      "to": 78000000001,
      "params": { "name": "John" },
      "trackingData": "2de9efa4-3ee7-4691-bec0-81d93c5a54cf"
    },
    {
      "to": 78000000002,
      "content": {
        "sms": { "message": "Individual message for 78000000002" }
      }
    }
  ],
  "originator": "Originator",
  "trackingData": "common-tracking-0001",
  "scheduling": {
    "startDateTime": "2025-01-01T10:30:00+03:00",
    "localtime": false
  },
  "batchName": "Batch via API 0001",
  "restrictiveId": "ba52-5ad86d408887"
}

Описание параметров ответа

Поле Тип Описание
success * boolean Признак успешности всего запроса.
error object Ошибка, из-за которой весь запрос не был принят к обработке. Присутствует при success = false. См. таблицу параметров объекта Error.
destinations * array[object] Список абонентов и статусы отправки по каждому. См. таблицу параметров объекта SendResponse.Destinations.

Параметры объекта SendResponse.Destinations

Поле Тип Описание
phone * number Номер телефона абонента.
id * string Идентификатор отправленного сообщения.
trackingData string Пользовательская метка, переданная из запроса.
error object Ошибка, из-за которой сообщение конкретному абоненту не было принято к обработке или отправке. См. таблицу параметров объекта Error.

Параметры объекта Error

Поле Тип Описание
code * number Код ошибки. Возможные коды указаны в таблице «Коды ошибок API».
message * string Текстовое описание ошибки.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": true,
  "destinations": [
    {
      "phone": 78000000001,
      "id": "1046379029789147161",
      "trackingData": "2de9efa4-3ee7-4691-bec0-81d93c5a54cf"
    },
    {
      "phone": 78000000002,
      "id": "1046379029789147194",
      "trackingData": "common-tracking-0001",
      "error": {
        "code": 432,
        "message": "blocked phone: 78000000002. No messages has been sent"
      }
    }
  ]
}
Пример ответа (с ошибкой)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": false,
  "error": {
    "code": 105,
    "message": "Duplicated request"
  }
}
Запрос статусов отправленных сообщений

POST api.smstraffic.ru/v2/statuses/list

Описание параметров запроса

Поле Тип По умолчанию Описание
ids array[string] - Список идентификаторов СМС, полученных при отправке через /send.
trackingData array[string] - Список пользовательских trackingData, присвоенных сообщениям при отправке через /send.
extendedInfo boolean false Нужно ли возвращать дополнительное поле statusExtended с деталями ошибки от оператора.
Пример запроса
POST /v2/statuses/list HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR

{
  "ids": [ "1046379029789147161", "1046379029789147162" ],
  "trackingData": [
    "108c3492-98ef-44b4-ab17-ee20c864584a",
    "108c3492-98ef-44b4-ab17-ee20c864584b"
  ],
  "extendedInfo": false
}

Описание параметров ответа

Поле Тип Описание
success * boolean Признак успешности всего запроса.
error object Ошибка, из-за которой весь запрос не был принят к обработке. Присутствует при success = false. См. таблицу параметров объекта Error.
data * array[object] Список сообщений и их текущих статусов. См. таблицу StatusesListResponse.Data.

Параметры объекта StatusesListResponse.Data

Поле Тип Описание
smsId * string Идентификатор отправленного СМС сообщения.
trackingData string Пользовательская trackingData метка.
submissionDate * string (RFC 3339) Дата и время принятия сообщения платформой.
sendDate string (RFC 3339) Дата и время отправки сообщения оператору.
deliveryDate string (RFC 3339) Дата и время получения финального статуса.
status * string Текущий статус сообщения. Возможные значения см. в справке по статусам СМС сообщений.
statusExtended object Дополнительная информация об ошибке от оператора (возвращается при extendedInfo = true). См. таблицу StatusesListResponse.StatusExtended.
operatorId number Идентификатор оператора.
mcc number Mobile Country Code.
mnc number Mobile Network Code.

Параметры объекта StatusesListResponse.StatusExtended

Поле Тип Описание
code * number Код ошибки от оператора.
description * string Описание ошибки от оператора.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": true,
  "data": [
    {
      "smsId": "1046379029789147161",
      "trackingData": "108c3492-98ef-44b4-ab17-ee20c864584a",
      "submissionDate": "2025-11-27T13:56:41.562+03:00",
      "sendDate": "2025-11-27T13:56:41.593+03:00",
      "deliveryDate": "2025-11-27T13:56:42.341+03:00",
      "status": "Delivered",
      "operatorId": 1971,
      "mcc": 250,
      "mnc": 99
    },
    {
      "smsId": "1046379029789147162",
      "submissionDate": "2025-11-27T13:58:12.021+03:00",
      "sendDate": "2025-11-27T13:58:12.593+03:00",
      "deliveryDate": "2025-11-27T13:59:42.341+03:00",
      "status": "Non Delivered",
      "statusExtended": {
        "code": 3,
        "description": "Unknown subscriber"
      }
    }
  ]
}
Пример ответа (с ошибкой)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": false,
  "error": {
    "code": 105,
    "message": "Invalid request format"
  }
}
Автоматическое получение статусов в JSON

Можно автоматически получать от нас статусы сообщений после каждого изменения статуса (рекомендуется) в формате JSON. Вы будете получать JSON-запросы, в теле которых будет массив из объектов, в одном запросе по умолчанию не более 50 статусов (ограничение можно отрегулировать через обращение в техническую поддержку).

Вашему серверу необходимо отдавать в ответ на запросы HTTP статус-код 200 или 204 (заголовки и тело ответа не имеют значения), в противном случае наша система отправки статусов пометит ваш скрипт как «временно недоступный», и частота отправки статусов будет снижена до момента, пока скрипт снова не начнёт отдавать корректные HTTP статус-коды.

Для включения автоматического получения статусов в JSON формате необходимо обратиться в техническую поддержку.

Описание параметров объектов-элементов массива

Поле Тип Описание
login * string Логин учётной записи.
sms_id * string Идентификатор отправленного сообщения.
phone_number * string Номер телефона абонента.
status * string Текущий статус сообщения. Возможные значения см. в справке по статусам СМС сообщений.
delivery_date * string Дата получения текущего статуса в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС», часовой пояс UTC+3.
channel * string Канал сообщения, по которому пришёл статус. Всегда значение «sms».
parts_count number Количество частей сообщения. Возвращается только при отправке сообщений через /v2/send.
error_code * number Код ошибки. Если указан 0, то запрос был обработан без ошибок. Возможные коды указаны в таблице «Коды ошибок API».
tracking_data string Пользовательская метка для отслеживания, указанная при отправке через /v2/send.
operator_id number Идентификатор оператора.
mcc number Mobile Country Code.
mnc number Mobile Network Code.
Пример запроса (от SMS Traffic)
POST /status_callback_url HTTP/1.1
User-Agent: StatusSender/2.0 Java/21
Host: example.com
Content-type: application/json

[
  {
    "login": "login:subacc",
    "sms_id": "8049537157380826112",
    "phone_number": "78000000001",
    "status": "Delivered",
    "delivery_date": "2025-12-06 12:31:00",
    "channel": "sms",
    "parts_count": 2,
    "err_code": 0,
    "tracking_data": "2de9efa4-3ee7-4691-bec0-81d93c5a54cf",
    "operatorId": 1971,
    "mcc": 250,
    "mnc": 99
  }
]
Пример ответа
HTTP/1.1 200 OK
Content-Type: text/plain
Установка статуса «Проверено»

POST api.smstraffic.ru/v2/statuses/checked

Описание параметров запроса

Поле (body) Тип Описание
body array[string] Список идентификаторов сообщений, которым необходимо установить статус Checked.
Пример запроса
POST /v2/statuses/checked HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR

[ "1046379029789147161", "1046379029789147162" ]

Описание параметров ответа

Поле Тип Описание
success * boolean Признак успешности всего запроса.
error object Ошибка, из-за которой весь запрос не был принят к обработке. Присутствует при success = false. См. таблицу параметров объекта Error.
data * object Результат обработки запроса. См. таблицу параметров объекта StatusesCheckedResponse.Data.

Параметры объекта StatusesCheckedResponse.Data

Поле Тип Описание
updated * array[string] Список id сообщений, для которых статус Checked был успешно установлен.
failed * array[object] Список сообщений, для которых не удалось установить статус Checked. См. таблицу StatusesCheckedResponse.Data.Failed.

Параметры объекта StatusesCheckedResponse.Data.Failed

Поле Тип Описание
id * string Id сообщения, которому не был установлен статус.
error * string Текстовое описание причины ошибки.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": true,
  "data": {
    "updated": [ "1046379029789147161" ],
    "failed": [
      {
        "id": "1046379029789147162",
        "error": "no such message or this message does not belong to you 1046379029789147162"
      }
    ]
  }
}
Пример ответа (с ошибкой)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": false,
  "error": {
    "code": 403,
    "message": "Access denied"
  }
}
Проверка баланса

GET api.smstraffic.ru/v2/account

Без параметров.

Пример запроса
GET /v2/account HTTP/1.1
Host: api.smstraffic.ru
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR

Описание параметров ответа

Поле Тип Описание
success * boolean Признак успешности всего запроса.
data.account * string Текущий баланс. Может быть отрицательным числом.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json

{
  "success": true,
  "data": { "account": "12520.35" }
}
Запрос журнала событий

POST api.smstraffic.ru/v2/event-log

Описание параметров запроса

Поле Тип Описание
from * string (RFC 3339) Дата и время начала журнала событий.
to * string (RFC 3339) Дата и время окончания журнала событий.
department string Логин департамента, по которому отфильтровать журнал. Специальное значение «» (пустая строка) обозначает главную учётную запись. Если параметр не задан, выгружаются сообщения по главной учётке и всем департаментам. Если запрос совершается от имени департамента, параметр игнорируется и автоматически устанавливается в логин этого департамента.
Пример запроса
POST /v2/event-log HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR

{
  "from": "2025-01-01T00:00:00+03:00",
  "to": "2025-01-01T23:59:59+03:00",
  "department": "0"
}

Описание параметров ответа

Поле Тип Описание
count * number Количество событий.
events * array[object] Список событий. См. таблицу параметров объекта Events.

Параметры объекта Events

Поле Тип Описание
login * string Логин учётной записи.
event * string Текст события.
ip * string IP, с которого совершено событие.
event_date * string Дата и время события.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json

{
  "count": 1,
  "events": [
    {
      "login": "login",
      "event": "Created batch: 2025-01-01 17:03:45. Start date: 2025-01-01 17:03:45. Phones: 1",
      "ip": "127.0.0.1",
      "event_date": "2025-01-01T17:03:45+03:00"
    }
  ]
}
Пример ответа (с ошибкой)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "code": 105,
  "description": "Department 123 not found"
}
Выгрузка сообщений

Выгрузка списка сообщений осуществляется двумя отдельными вызовами REST API:
1. Создание задания на выгрузку отчёта.
2. Скачивание отчёта.

Создание задания на выгрузку отчёта и скачивание этого отчёта должны выполняться на одном и том же узле — оба запроса должны идти либо на api.smstraffic.ru, либо на api2.smstraffic.ru, поскольку сгенерированные отчёты не синхронизируются между узлами.

Создание задания на выгрузку отчёта

POST api.smstraffic.ru/v2/report

Поле Тип Описание
from string (RFC 3339) Дата и время начала отчёта. В отчёт попадут сообщения, отправленные с указанного времени (включительно).
to string (RFC 3339) Дата и время окончания отчёта. В отчёт попадут сообщения, отправленные до указанного времени (включительно).
originator string Имя отправителя. Будут выгружены сообщения с указанным именем отправителя (регистр учитывается).
subscriber string Получатель сообщения, в зависимости от канала: номер телефона в sms, viber, whatsapp, vk, ok и telegram, произвольный идентификатор в push.
type string (enum: mt, mo) Тип сообщения — mt (исходящее), mo (входящее). Если параметр не задан, выгружаются сообщения всех типов.
status string (enum: delivered, not_delivered, read) Статус доставки сообщений. delivered — сообщение в статусах «Delivered» или «Read»; not_delivered — любые статусы, кроме промежуточных, «Delivered» и «Read»; read — только в статусе «Read». Если не задан, выгружаются сообщения в любом статусе.
channels array[string] (enum: sms, push, viber, whatsapp, vk, ok, telegram) Список каналов отправки в формате JSON-массива. Если не задан, выгружаются сообщения по всем каналам.
department string Логин департамента, отправившего сообщение. Значение «» (пустая строка) — главная учётная запись. Если не задан, выгружаются сообщения по главной учётке и всем департаментам. При запросе от имени департамента параметр игнорируется.
fields array[string] (enum: id, subscriber, message, submission_date, send_date, delivery_date, read_date, channel, status, cost, originator, ip, error, parts, operator_name, country_name, batch_name, department_name) Список полей для выгрузки в формате JSON-массива. Поля идут в том порядке, в котором указаны в запросе. Значение по умолчанию — [id, subscriber, message, submission_date, send_date, delivery_date, status, originator]. Описание полей см. в таблице «Описание полей fields».
format string (enum: zip, csv, json) Формат выгрузки. Значение по умолчанию — json. JSON генерирует отчёт в форме JSON-объекта вида {"count":1,"messages":[["1","2"]]}, где count — общее количество отфильтрованных данных, messages — массив сообщений в виде массива полей, указанных в параметре fields. Формат zip — это csv, упакованный в zip-архив.
limit number Максимальное количество сообщений в ответе. Диапазон от 1 до 1000, по умолчанию — 50. Обычно используется совместно с offset для постраничной навигации. Применяется только при format=json.
offset number Номер сообщения, начиная с которого производится выгрузка. От 0 до 1000, по умолчанию — 0. Обычно используется совместно с limit. Применяется только при format=json.

Описание полей fields

Поле Описание
id Уникальный идентификатор сообщения на платформе SMS Traffic (строка, содержащая до 40 цифр).
subscriber Получатель сообщения, в зависимости от канала: номер телефона в sms, viber, whatsapp, vk и ok, произвольный идентификатор в push.
message Текст сообщения.
submission_date Дата и время поступления сообщения от клиента в формате RFC 3339.
send_date Дата и время отправки сообщения в канал в формате RFC 3339. Может быть пустым, если сообщение ещё не отправлялось в канал.
delivery_date Дата и время доставки или последнего изменения статуса в формате RFC 3339. Может быть пустым, если сообщение ещё не получило финальный статус.
read_date Дата и время прочтения сообщения получателем в формате RFC 3339. Может быть пустым, если сообщение ещё не прочитано или канал не поддерживает статус Read.
channel Канал отправки сообщения.
status Статус доставки.
originator Имя отправителя, с которым сообщение отправлялось в канал.
ip IP-адрес, с которого было отправлено сообщение.
error В случае недоставки здесь указан код причины недоставки.
parts Количество сегментов СМС. Заполняется только для сообщений из канала sms.
operator_name Имя оператора, за которым закреплён номер получателя. Заполняется для каналов, где получатель — номер телефона (sms, viber, whatsapp, vk, ok, push). Пример: «Мобильные ТелеСистемы», «Йота».
country_name Название страны, за которой закреплён номер получателя. Пример: Russian Federation, Kazakhstan.
batch_name Имя рассылки, в которой участвует данное сообщение.
department_name Имя департамента, отправившего сообщение, или пустая строка, если сообщение отправлено с основной учётной записи.
Пример запроса
POST /v2/report HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR

{
  "from": "2025-01-01T00:00:00+03:00",
  "to": "2025-01-01T23:59:59+03:00",
  "channels": [ "sms" ],
  "fields": [ "id", "submission_date", "message", "status" ]
}

Описание параметров ответа

Поле Тип Описание
code * number Числовой код ошибки при обработке запроса. Принимает значение 0 в случае успеха.
description * string Текстовая расшифровка кода ошибки. Если code = 0, в данном параметре будет пустая строка.
report_id * string Идентификатор отчёта. Данный параметр отсутствует, если code > 0.
Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json

{
  "code": 0,
  "description": "",
  "reportId": "16e15fec1d27803e18511793b5bf699e"
}

Скачивание отчёта

GET api.smstraffic.ru/v2/report/{report_id}

Вместо {report_id} необходимо подставить идентификатор отчёта, выданный на предыдущем этапе. Если отчёт уже готов, в ответе будет HTTP статус-код 200, а в теле ответа — содержимое самого отчёта.

Пример запроса
GET /v2/report/16e15fec1d27803e18511793b5bf699e HTTP/1.1
Host: api.smstraffic.ru
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
Пример ответа (отчёт в формате CSV)
HTTP/1.1 200 OK
Content-Disposition: attachment; filename="16e15fec1d27803e18511793b5bf699e.csv"
Accept-Ranges: bytes
Content-Type: text/csv
Content-Length: 53

12345;2021-01-01T00:00:00+03:00;hello world;Delivered
Пример ответа (отчёт в формате JSON)
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 78

{"count":1,"messages":[["12345","2021-01-01T00:00:00+03:00","hello world","Delivered"]]}

Архитектурно возможно появление в JSON-ответе новых свойств, поэтому при проектировании архитектуры HTTP-клиента необходимо учитывать эту возможность.

Если отчёт ещё не готов, запрос будет заблокирован до момента готовности отчёта (техника long polling). Максимальное время нахождения запроса в блокировке — 5 минут, по истечении которых сервер генерирует ответ с HTTP статус-кодом 204 (отчёт ещё не готов). В этом случае рекомендуется повторять запросы до получения 200, 404 или иного ответа, выдерживая интервал не менее 1 секунды. Готовые отчёты хранятся 7 дней, по истечении которых запрос на скачивание будет возвращать статус-код 404.

Пример ответа (отчёт ещё не готов)
HTTP/1.1 204 No Content
Пример ответа (отчёт более недоступен)
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 76

{"code":1, "description":"Report 16e15fec1d27803e18511793b5bf699e not found"}
HTTP API v1 (XML)

Отправка сообщений на телефон абонента осуществляется через вызов веб-скрипта api.smstraffic.ru/multi.php, которому передаются необходимые параметры методом GET или POST. При отсутствии связи или других проблемах на api.smstraffic.ru, можно использовать наш запасной сервер: api2.smstraffic.ru/multi.php. Обращения принимаются как по протоколу HTTP, так и по HTTPS (с использованием TLS-шифрования). Номера портов стандартные: HTTP — 80, HTTPS — 443.

HTTP-запросы должны соответствовать официальным спецификациям протокола HTTP (RFC 2616). Параметры должны быть корректно кодированы (RFC 2396, раздел 2.4). Поддерживается HTTP протокол версий 1.0 и 1.1. При работе по протоколу HTTP 1.1 ответ может передаваться в chunked transfer encoding. При отправке запросов методом POST обязательно указание заголовка «Content-Type: application/x-www-form-urlencoded».

Параметры для отправки СМС
Имя параметра Возможные значения Описание
login Текст Ваш логин в системе SMS Traffic. Параметр обязателен.
password Текст Пароль от вашего аккаунта. Параметр обязателен.
phones Список номеров через запятую Список телефонов в международном формате, разделённых запятыми (формат номера телефона описан в разделе «Формат номера телефона»). Можно ограничиться только одним номером. Этот параметр обязателен (кроме случаев с использованием параметра group).
message Текст длиной до 17085 (при rus=1 или 5) или 39015 (при rus=0) символов Текст сообщения, не более 160 символов латинскими буквами или 70 символов по-русски в кодировке Windows-1251. При превышении этих границ сообщение автоматически разделится на несколько частей, каждая из которых не превышает 153 символа в латинице и 67 символов по-русски. Максимальное количество частей регулируется параметром max_parts.
Параметр обязателен (кроме случаев с использованием параметра individual_messages).
rus 0 Сообщение передано в кодировке Windows-1251. Русские символы будут транслитерироваться в латиницу. Максимальное количество символов в одном СМС сообщении — 160 (153 для склеенного сообщения).
Значение по умолчанию — 0.
1 Сообщение передано в кодировке Windows-1251. Максимальное количество символов в одном СМС сообщении — 70 (67 для склеенного сообщения). Если сообщение состоит исключительно из латинских символов, максимальное количество символов не изменяется.
5 Сообщение передано в кодировке UTF-8. Максимальное количество символов в одном СМС-сообщении — 70 (67 для склеенного сообщения). Если сообщение состоит исключительно из латинских символов, максимальное количество символов не изменяется.
originator Альфанумерический (максимальная длина 11 символов) Параметр задаёт отправителя сообщения, как он будет выглядеть на телефоне получателя. Может состоять из латинских букв, цифр и знаков пунктуации. Русские буквы в отправителе принудительно транслитерируются в латинские. Так же допустимо использовать схожие с русскими по начертанию латинские буквы. На альфанумерического отправителя нельзя позвонить или отправить ответное сообщение. Примеры: «MyCompany», «787-35-95», «SMS.Traffic», «CMC.TPAFIK».
Только цифры (максимальная длина 15 цифр) Если указан цифровой отправитель, абонент может отправить ответное сообщение или перезвонить по указанному в отправителе номеру. Примеры: «74957873595», «88001000258», «3299».
flash 1 Сообщение отправляется как flash SMS. Flash SMS появляется сразу на экране телефона и не сохраняется в памяти телефона автоматически. Сообщения данного типа имеют максимальную длину: в латинице - 160 символов (rus=0), в кириллице — 70 символов (rus 1 или 5).
0 СМС отправляется как обычное сообщение. Значение по умолчанию — 0.
start_date Дата в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС» Дата и время отправки СМС. Поле можно оставить пустым, в таком случае сообщения уйдут немедленно. Время указывается в московском часовом поясе (MSK). Start_date может быть не более чем на 3 суток в будущем. Если start_date находится в будущем более чем на 5 минут, то применение параметра want_sms_ids невозможно. Пример: «2020-05-09 09:00:00».
max_parts Число от 1 до 255 Максимальное количество частей, на которые будет при необходимости разбит текст сообщения. Если текст сообщения не укладывается в одну часть, то длина одной части сообщения ограничивается 153 символами для латиницы и 67 для кириллицы. Если сообщение после разбивки превышает установленное значение max_parts, то отправлены будут первые max_parts частей, а остальные отброшены. По умолчанию установлено максимальное значение — 255.
group Текст Имя группы (списка для рассылок), определенное в личном кабинете клиента, на которую идет рассылка. Этот параметр заменяет параметр phones. Сообщение будет отправлено на все телефоны в группе.
timeout Положительное целое число С помощью этого параметра можно установить время жизни СМС. Сообщение перестанет автоматически доставляться через timeout секунд с момента получения сообщения платформой. Данный параметр поддерживается не всеми операторами. Минимально возможное значение так же зависит от оператора. Большинство операторов ограничивают минимальное значение 10 минутами. При указании меньшего значения, параметр может быть проигнорирован (сброшен до максимального значения), или же в ответ на запрос оператор может вернуть статус "отклонено". Со стороны нашего СМС-центра минимальное значение не ограничивается. Максимальное значение — 86400 (24 часа).
individual_messages 0 или 1 Если необходимо отправить индивидуальное сообщение каждому абоненту, можно либо несколько раз запрашивать скрипт, передавая в качестве параметра phones только один телефон, либо (что более предпочтительно) передать дополнительный параметр individual_messages=1, оставить поле message пустым, а в поле phones передать список телефонов и сообщений в формате:

телефон1 сообщение1
телефон2 сообщение2
телефон3 сообщение3

Телефон и сообщение разделяются одним пробелом, а пары телефон-сообщение разделяются знаком перевода строки (символ с ASCII-кодом 0xA или 0xD), при этом текст сообщения не может содержать символа перевода строки.
Значение по умолчанию — 0 .
delimiter Текст Этот параметр работает совместно с параметром individual_messages при необходимости передачи символа перевода строки внутри сообщения. Например, при указании delimiter=ABC параметр phones может принимать вид:

76161234567 текст сообщенияABC7903123456 текст
сообщения на
нескольких строках

В итоге каждый абонент получит предназначенное ему сообщение, даже если в нём есть перевод строки. При этом текст сообщения не должен содержать в себе ABC, иначе произойдёт некорректный разбор параметра. По умолчанию разделителем является символ переноса строки (ASCII-код 0xA или 0xD).
want_sms_ids 0 или 1 Если необходимо получить информацию об идентификаторах, присвоенных каждому сообщению (они понадобятся при проверке статуса доставки сообщения), нужно передать параметр want_sms_ids=1. Тогда ответный XML будет содержать информацию о каждом телефоне и идентификаторе, присвоенном соответствующему сообщению. Параметр want_sms_ids=1 нельзя использовать в отсроченной рассылке, то есть одновременно с параметром start_date. Этот параметр можно применять только при условии, что сообщение отправится не позднее 5 минут с момента поступления запроса. Идентификатор представлен целым беззнаковым числом размером 8 байт. Максимальное число сообщений в одном запросе с использованием данного параметра не должно превышать 6000.
Значение по умолчанию — 0.
with_push_id 0 или 1 Используется только совместно с параметрами want_sms_ids=1 и individual_messages=1. Параметр with_push_id необходим, когда требуется передать каждое сообщение со своим уникальным идентификатором и в ответ получить привязку переданных идентификаторов к выданным нашей системе идентификаторам. Типичный случай использования - передача длинных сообщений. В обычных условиях, при отправке длинного сообщения, оно разбивается на несколько частей и каждой части присваивается свой идентификатор. Чтобы связать несколько идентификаторов одного сообщения, используется with_push_id. При этом, в параметре phones перед каждым номером должен быть указан произвольный идентификатор (это может быть идентификатор сообщения в вашей базе), отделённый от номера двоеточием. Сам идентификатор не должен содержать двоеточия. Пример:

push_id1:телефон1 сообщение1 из двух частей
12345678:телефон2 сообщение2 из двух частей
one-more:телефон3 сообщение3 из двух частей

Значение по умолчанию — 0.
ignore_phone_format 0 или 1 Данный параметр используется при единовременной рассылке на несколько номеров телефонов. Если при отправке сообщения хотя бы один номер в запросе будет некорректен, то при ignore_phone_format=0, возвращается ошибка 418 и ни одно из сообщений не отправляется. Если же установить параметр ignore_phone_format=1, то проверка номеров отключается и все сообщения, независимо от корректности номеров, становятся в очередь на отправку и биллингуются соответственно вашему тарифу.
Значение по умолчанию — 0.
two_byte_concat 0 или 1 Параметр позволяет указать способ UDH-склейки. Если указано 1 — используется склейка с reference number размером 2 байта. В противном случае используется склейка с reference number размером 1 байт. 2-х байтовый reference number позволяет значительно снизить вероятность некорректной склейки сообщений в телефоне, однако уменьшает максимальный размер одной части на 1 символ. То есть, не более 152 символов латиницей и 66 символов - кириллицей.
Значение по умолчанию — 0.

Для SOAP протокола адрес дублирующего сервера прописан в WSDL.

Для SMTP протоколов все запасные сервера прописаны в MX записях соответствующих протоколам доменов. Согласно спецификации SMTP, распределение трафика между MX серверами происходит автоматически и, как правило, производить дополнительные настройки для обеспечения отказоустойчивости не нужно.

Примеры ответных сообщений

В качестве ответа скрипт отдает XML с результатом постановки сообщений в очередь. В примерах ниже по тексту, XML представлен в отформатированном виде, поэтому значение заголовка Content-Length может не совпадать с актуальной длиной отформатированного XML в примере. Так же, для удобочитаемости, параметры запроса могут разбиваться на несколько строк. На самом деле, при использовании протокола HTTP(S) всё тело запроса должно идти в одной строке.

Пример отправки одного сообщения:

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close

login=mylogin&password=mypassword&phones=78001234567&message=test+%F2%E5%F1%F2
                                    
Ответ
                                        HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<?xml version="1.0" ?>
<reply>
 <result>OK</result>
 <code>0</code>
 <description>queued 1 messages</description>
</reply>
                                    

В случае успеха:

поле result - содержит строку OK;
code = 0;
description - содержит число сообщений, успешно поставленных в очередь.

В случае возникновения ошибки:

result = ERROR;
code больше 0;
description - содержит описание ошибки (например, 'Authentication failed'). Все сообщения в description передаются на английском языке.

Ошибка 1000 означает временные проблемы на сервере. При ее получении можно попробовать повторить запрос через некоторое время или отправить запрос на дублирующий сервер. Остальные ошибки следует обрабатывать соответственно их описанию.

Пример ответа скрипта в случае ошибки:

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close

login=mylogin&password=mypassword&phones=78001234567&message=test+%F2%E5%F1%F2
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<?xml version="1.0" ?>
<reply>
 <result>ERRO</result>
 <code>401</code>
 <description>login param is missing</description>
</reply>
                                    

При передаче параметра want_sms_ids=1 в ответном XML появляется дополнительный элемент со списком идентификаторов. Идентификатор представлен целым беззнаковым числом размером 8 байт.

Пример:

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close

login=mylogin&password=mypassword&want_sms_ids=1&phones=
79051112233,79261112233&message=test+%F2%E5%F1%F2
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<?xml version="1.0" ?>
<reply>
 <result>OK</result>
 <code>0</code>
 <description>queued 2 messages</description>
 <message_infos>
 <message_info>
 <phone>79051112233</phone>
 <sms_id>1000472891</sms_id>
 </message_info>
 <message_info>
 <phone>79261112233</phone>
 <sms_id>1000472892</sms_id>
 </message_info>
 </message_infos>
</reply>
                                    

При передаче параметра with_push_id=1 в ответном XML появляются дополнительные данные:

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&want_sms_ids=1&with_push_id=1&individual_messages
=1& delimiter=ABC&phones=a:79051112233+<длинное сообщение>ABCb:79261112233+hello+test
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<reply>
 <result>OK</result>
 <code>0</code>
 <description>queued 3 messages</description>
 <message_infos>
  <message_info>
   <phone>79051112233</phone>
   <sms_id>8287366071</sms_id>
   <push_id>a</push_id>
  </message_info>
  <message_info>
   <phone>79051112233</phone>
   <sms_id>8287366073</sms_id>
   <push_id>a</push_id>
  </message_info>
  <message_info>
   <phone>79261112233</phone>
   <sms_id>8287366075</sms_id>
   <push_id>b</push_id>
  </message_info>
 </message_infos>
</reply>
                                    
Параметры для запроса статусов СМС

Для проверки статуса отправленного сообщения вызывается скрипт api.smstraffic.ru/multi.php с параметрами:

login - ваш логин;
password - ваш пароль;
operation = status;
sms_id - список идентификаторов, разделённых запятой.

В ответ сервер возвращает XML с результатом запроса, где:

submition_date - содержит дату приёма сообщения платформой SMS Traffic;
send_date - дата отправки сообщения оператору;
last_status_change_date - дата доставки или время последнего изменения статуса сообщения.

Мы работаем с операторами по протоколу SMPP, в котором используется время с точностью до минуты. Поэтому дата доставки всегда имеет нулевые секунды. Таким образом, если сообщение было отправлено, например, в 18:43:38, а в last_status_change_date указано время 18:43:00, это означает что сообщение было доставлено в 43 минуту 18 часа. В данном случае на секунды можно не обращать внимания.

Время доставки на российские номера телефонов передаётся в московском часовом поясе (MSK). Время доставки на номера других стран передаётся в локальном часовом поясе абонента. Из-за особенностей работы с иностранными операторами невозможно достоверно выяснить часовой пояс, в котором находится дата доставки, передаваемая в отчётах о доставке. Однако, мы делаем все возможное, чтобы передать отчет о доставке с корректной датой доставки.

Статусы хранятся в течение двух дней, после чего они перемещаются в архив. На попытки запроса статусов сообщений, отправленных более двух дней назад, будет возвращаться ошибка "No such message or this message does not belong to you".
Пример запроса статуса одного сообщения:

Пример запроса статуса одного сообщения:

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close

login=mylogin&password=mypassword&operation=status&sms_id=8287713301
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<reply>
 <submition_date>2020-05-09 14:11:39</submition_date>
 <send_date>2020-05-09 14:11:39</send_date>
 <last_status_change_date>2020-05-09 14:12:00</last_status_change_date>
 <status>Delivered</status>
 <error></error>
 <sms_id>8287713301</sms_id>
</reply>
                                    

Пример запроса нескольких идентификаторов:

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close

login=mylogin&password=mypassword&operation=
status&sms_id=8287713301,8287713303,82877133031
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<reply>
 <sms>
  <error></error>
  <submition_date>2020-05-09 14:11:39</submition_date>
  <send_date>2020-05-09 14:11:39</send_date>
  <last_status_change_date>2020-05-09 14:12:00</last_status_change_date>
  <sms_id>8287713301</sms_id>
  <status>Expired</status>
 </sms>
 <sms>
  <error></error>
  <submition_date>2020-05-09 14:11:39</submition_date>
  <send_date>2020-05-09 14:11:40</send_date>
  <last_status_change_date>2020-05-09 14:12:00</last_status_change_date>
  <sms_id>8287713303</sms_id>
  <status>Delivered</status>
 </sms>
 <sms>
  <error>
   no such message or this message does not belong to you
  </error>
  <sms_id>82877133031</sms_id>
 </sms>
</reply>
                                    
Автоматическое получение статусов

Можно автоматически получать от нас статусы сообщений после каждого изменения статуса (рекомендуется). Для этого вам нужно установить на своем веб-сервере скрипт, который должен принимать методом POST следующие параметры:

sms_id – идентификатор сообщения;
status – статус доставки (см. список ниже);
delivery_date – дата доставки или последнего изменения статуса;
error_code - код ошибки в случае, если СМС не доставлено (0, если СМС доставлено или же оператор не передал информацию о коде ошибки). Значения кодов ошибок описаны в разделе «Список кодов ошибок в поле err отчёта о доставке».

Идентификатор представлен целым беззнаковым числом размером 8 байт. Дата доставки или последнего изменения статуса указывается в московском часовом поясе, в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС». Передайте нам URL этого скрипта и мы настроим, чтобы он автоматически вызывался после каждого изменения статуса.

Запрос
POST /status_callback_url HTTP/1.1
Connection: Close
User-Agent: Java/1.7.0_17
Host: example.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-type: application/x-www-form-urlencoded
Content-Length: 69

sms_id=15166254108&status=Delivered&delivery_date=2020-05-09 17:04:00
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Sat, 09 May 2020 13:05:08 GMT
Content-Type: text/plain
Content-Length: 0
Connection: close
                                    
Проверка счёта

Для проверки баланса своего счета следует вызывать скрипт www.smstraffic.ru/multi.php с параметрами:

login - ваш логин
password - ваш пароль
operation = _account _

Запрос
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close

login=mylogin&password=mypassword&operation=account
                                    
Ответ
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130

<?xml version="1.0" ?>
<reply>
 <account>10025</account>
</reply>
                                    
Статусы СМС-сообщений

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

При запросе статуса через multi.php При ручном просмотре статистики на странице lk.smstraffic.ru/logs.php Тип
Нет статуса (пустая строка) Нет данных Промежуточный
Buffered SMSC Доставляется Промежуточный
Delivered Доставлено Окончательный
Non Delivered Не доставлено Окончательный
Rejected Отказ в передаче Окончательный
Expired Просрочено Окончательный
Deleted Удалено Окончательный
Unknown status Неизвестный статус Окончательный

Любое сообщение достигает окончательного статуса не позднее чем через сутки после отправки. Подробное описание статусов вы найдете на странице lk.smstraffic.ru/sms-statuses.php.

Коды ошибок, возвращаемых по протоколу HTTP(S)
Код Описание
401 Не указан логин
402 Не указан пароль
403 Не указаны номера телефонов
404 Несовместимые параметры запроса
405 Не указан текст сообщения
407 Не указан ни один телефон
408 Неподдерживаемый тип сообщения: "тип_сообщения"
409 Не указан udh
410 Нельзя использовать параметр max_parts: автоматическая разбивка бинарных сообщений не поддерживается.
411 Неверный логин или пароль
412 Неверный IP
413 Такой группы не существует: "имя_группы"
414 В группе нет ни одного телефона
415 Недостаточно средств
416 Неверный формат даты начала рассылки: "дата_старта_рассылки".
417 Дата начала рассылки "дата_старта_рассылки" находится в прошлом.
418 Идентификаторы не предоставляются для отложенных сообщений.
419 Вам не разрешено использовать данный маршрут.
420 Сообщение "текст_сообщения" слишком длинное.
421 Имя отправителя слишком длинное
422 Не указан телефон в строке "номер_строки": "строка".
423 Пустое сообщение для телефона "номер_телефона".
424 Сообщение "текст_сообщения" для телефона "номер_телефона" слишком длинное.
425 Номер телефона "номер_телефона" слишком короткий. Ни одно сообщение не было отправлено.
426 Номер телефона "номер_телефона" слишком длинный. Ни одно сообщение не было отправлено.
427 "номер_телефона": неверная длина номера телефона. Ни одно сообщение не было отправлено.
428 "номер_телефона": неверный формат номера телефона. Ни одно сообщение не было отправлено.
429 "номер_телефона": неподдерживаемый оператор. Ни одно сообщение не было отправлено.
430 "номер_телефона": неверный номер телефона. Ни одно сообщение не было отправлено.
431 Телефон "номер_телефона" не подписан на рассылку. Ни одно сообщение не было отправлено.
432 Заблокированный номер телефона: "номер_телефона". Ни одно сообщение не было отправлено.
433 Не указан параметр sms_id.
434 Такого сообщения нет или оно вам не принадлежит.
435 Невозможно отменить сообщение "sms_id".
436 Отправитель "отправитель" запрещен.
437 Сообщение превышает 160 символов после транслитерации "текст_сообщения".
438 В сообщении найден шаблон, но не задана ни одна группа.
439 Вы не можете отправлять SMS-сообщения через HTTP.
440 Параметр "phones" не задан или задан некорректно.
441 Неверный формат файла параметров.
442 Неверное число параметров.
501 Время окончания рассылки в прошлом.
502 Время начала рассылки больше времени окончания рассылки.
503 Время старта продолжения рассылки должно быть раньше времени приостановки рассылки.
504 Невозможно создание рассылки с отложенным более чем на 30 дней стартом.
1000 Временные проблемы на сервере.
Управление списками для рассылок

Чтобы управлять списками для рассылок необходимо запросить скрипт по адресу api.smstraffic.ru/list.php.

Имя параметра Возможные значения Описание
login Текст Ваш логин в системе SMS Traffic. Параметр обязателен.
password Текст Пароль от вашего аккаунта. Параметр обязателен.
operation status_all Возвращается информация обо всех списках в аккаунте. Считается значением по умолчанию при отсутствии в запросе параметра operation.
status Возвращается информация о конкретном списке.
add_member Добавление номеров телефонов в список для рассылки.
remove_member Удаление номеров телефонов из списка для рассылки.
member Список номеров через запятую В данном параметре указывается список номеров телефонов при совершении запросов с указанием operation=add_member или remove_member. Рекомендуется указывать не более 5000 номеров за один раз.
group_id Положительное целое число (4 байта) Уникальный идентификатор списка для рассылок. Используется при совершении манипуляций с ним. Узнать идентификатор списка можно запросом с operation=status_all.
Примеры

Получение всех списков для рассылки:

Запрос
POST /list.php HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: close

login=mylogin&password=mypassword
                                    
Ответ
HTTP/1.1 200 OK
Date: Sat, 09 May 2020 13:21:30 GMT
Server: Apache
Content-Length: 365
Connection: close
Content-Type: text/xml

<?xml version="1.0" ?>
<reply>
 <result>OK</result>
 <code>0</code>
 <description>total groups: 4</description>
 <groups>
  <group>
   <id>59353</id> (1)
   <name>hello world</name> (2)
   <created>2020-05-09 11:46:06</created> (3)
   <congratulate>0</congratulate> (4)
  </group>
  <group>
   <id>59355</id>
   <name>клиенты</name>
   <created>2020-05-09 11:48:15</created>
   <congratulate>0</congratulate>
  </group>
  <group>
   <id>59357</id>
   <name>test</name>
   <created>2020-05-09 11:48:49</created>
   <congratulate>0</congratulate>
  </group>
 </groups>
</reply>
                                    

Поля результата:

1 уникальный идентификатор списка для рассылки.
2 текстовое имя списка для рассылки. Отображается в личном кабинете.
3 дата и время создания списка. Указывается в часовом поясе Москвы.
4 статус поздравления c днём рождения.

Добавление номеров в список:

Запрос
POST /list.php HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: close

login=mylogin&password=mypassword&group_id=59353&
operation=add_member&member=79012223344,79082223344
                                    
Ответ
HTTP/1.1 200 OK
Date: Sat, 09 May 2020 13:21:30 GMT
Server: Apache
Content-Length: 365
Connection: close
Content-Type: text/xml

<?xml version="1.0" ?>
<reply>
 <result>OK</result>
 <code>0</code>
 <description>added or updated members: 2</description>
</reply>
                                    

Удаление номеров из списка:

Запрос
POST /list.php HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: close

login=mylogin&password=mypassword&group_id=59353&
operation=remove_member&member=79012223344,79082223344
                                    
Ответ
HTTP/1.1 200 OK
Date: Sat, 09 May 2020 13:21:30 GMT
Server: Apache
Content-Length: 365
Connection: close
Content-Type: text/xml

<?xml version="1.0" ?>
<reply>
 <result>OK</result>
 <code>0</code>
 <description>added or updated members: 2</description>
</reply>
                                    
SMPP протокол

тправку сообщений, получение информации о статусе доставки, а также получение входящих сообщений от абонентов можно осуществлять через SMPP (Short Message Peer to Peer) — стандартный протокол передачи коротких сообщений. Мы используем версию 3.4 протокола. Скачать спецификацию вы можете с нашего сайта.
На нашем СМС-центре можно ограничивать доступ к SMSC по IP-адресу. По умолчанию никакие ограничения по IP не накладываются. Если вы хотите установить ограничения, то необходимо написать соответствующее письмо в адрес технической поддержки, и мы пропишем ваши подключения только на указанных адресах. Помимо конкретных IP адресов мы можем прописать подсети классов A, B и C (/8, /16 и /24 по CIDR классификации).
Поддерживается любой вид соединения со следующим ограничением: на один наш хост+system_id не более одного receiver/transceiver. Если вам необходимо больше соединений и есть возможность увеличить количество receiver’ов, то рекомендуем создать дополнительные департаменты в рамках вашей основной учетной записи. При создании департамента вы автоматически получаете новый system_id.
Рекомендуемая интенсивность передачи — до 20 смс/сек. Для каждого клиента пропускная способность выставляется индивидуально, при превышении пропускной способности отправляется ошибка ESME_RTHROTTLED.
Enquire_links обязательны. Если клиент подключается к нам transmitter’ом, мы ожидаем от него enquire_links и, при их отсутствии в течение двух минут, связь считается нарушенной и принудительно рвется. Если клиент подключается к нам receiver’ом, мы отправляем ему enquire_links каждые 30 секунд и ожидаем от него enquire_link_resps. При их отсутствии в течение двух минут, связь считается нарушенной и принудительно рвется. При подключении transceiver’ом обмен enquire_links ведется с обеих сторон. Рекомендуемый интервал отправки enquire_links в нашу сторону — 30 секунд.
Особенностей PDU нет, они определяются протоколом. Не поддерживаются: query_sm, data_sm, submit_multi_sm, replace_sm, sar, tlv (для SUBMIT_SM).

Table 1. Параметры для подключения к нашему СМС-центру (BIND)

Параметр Описание
Хост server1.smstraffic.ru (основной сервер) или server2.smstraffic.ru (дублирующий сервер)
Порт 4442
system_id Логин и пароль для подключения выдаются вашим менеджером. Они совпадают с логином и паролем от личного кабинета.
password
interface_version 0x34
system_type Игнорируется нашим SMPP-сервером. Можно оставить пустым.
addr_ton Игнорируется нашим SMPP-сервером. Можно оставить пустым.
addr_npi Игнорируется нашим SMPP-сервером. Можно оставить пустым.
address_range Игнорируется нашим SMPP-сервером. Можно оставить пустым.

Table 2. Параметры при отправке сообщения (SUBMIT_SM)

Предпочтительно присоединяться к server1.smstraffic.ru, так как он является основным, а server2.smstraffic.ru — дублирующим.

Параметр Описание
source_addr_ton 1 для цифрового отправителя или 5 - для буквенного
source_addr_npi 1 для цифрового отправителя или 0 - для буквенного
source_addr Альфанумерический отправитель (длина до 11 символов) или цифровой (длина до 15 цифр). См. раздел «Адрес отправителя».
dest_addr_ton 1
dest_addr_npi 1
destination_addr Номер телефона в международном формате. См. раздел «Формат номера телефона».
esm_class Согласно спецификации SMPP
protocol_id Согласно спецификации SMPP
validity_period Согласно спецификации SMPP
registered_delivery Согласно спецификации SMPP
data_coding Согласно спецификации SMPP
sm_length Согласно спецификации SMPP
short_message Согласно спецификации SMPP
service_type Не поддерживается
priority_flag Не поддерживается
schedule_delivery_time Не поддерживается
replace_if_present_flag Не поддерживается
sm_default_msg_id Не поддерживается

Table 3. Формат поля short_message отчёта о доставке (DELIVER_SM)

Field Size (octets) Type
Id 10 C-Octet String (Decimal)
sub 3 C-Octet String Fixed Length (Decimal)
dlvrd 3 C-Octet String Fixed Length (Decimal)
submit date 10 C-Octet String Fixed Length (Decimal)
done date 10 C-Octet String Fixed Length (Decimal)
stat 7 C-Octet String Fixed Length
err var. max. 3 C-Octet String (Decimal)
text var. max. 65 C-Octet String (Decimal)

В отчёт о доставке добавляются два TLV:

message_state (0x0427) - в нем передаётся статус доставки сообщения;
receipted_message_id (0x001e) - указывается идентификатор сообщения, назначенный нашей платформой. Если отчёт о доставке негативный, добавляется TLV network_error_code (0x0423). Байт "Network Type" устанавливается в 0x08.

В разделе «Список кодов ошибок в поле err отчёта о доставке» вы найдете подробное описание возможных ошибок.

Кодировки

Default SMSC alphabet (data_coding=0) на наших серверах воспринимается как default GSM alphabet (GSM 03.38). При отправке сообщений в кодировке GSM 03.38 или latin1 (data_coding=0 или 3, соответственно) поддерживаются только следующие символы (hex коды символов указаны для кодировки GSM):

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0. @ £ $ ¥ è é ù ì ò Ç Ø ø Å å
1. _ Æ æ ß É
2. SP ! " # ¤ % & ' ( ) * + , - . /
3. 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4. ¡ A B C D E F G H I J K L M N O
5. P Q R S T U V W X Y Z Ä Ö Ñ Ü §
6. ¿ a b c d e f g h i j k l m n o
7. p q r s t u v w x y z ä ö ñ ü à

При использовании data_coding=0 или 3 поддерживается корректная передача только символов из таблицы выше. По всем остальным значениям data_coding не выполняется анализ или модификация исходного текста сообщения (текст передается оператору как есть).

При отправке сообщений в кодировке GSM 03.38 упаковывать текст сообщения в 7 бит не нужно.

Кодировки

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

ESME Already in Bound State (0x00000005)

Ошибка ESME_RALYBND возникает при попытке инициировать новое подключение в режимах transceiver или receiver при уже имеющемся активном соединении с таким же system_id на одном нашем сервере в режиме transceiver или receiver. Если необходимо держать несколько соединений в режиме transceiver или receiver (на режим transmitter ограничение не распространяется), можно создать дополнительные учётные записи. Дополнительные учётные записи привязаны к основному аккаунту и используют единый биллинг. Подробное описание этой возможности вы найдете в «Руководстве по работе с личным кабинетом» (требуется предварительная авторизация в ЛК). Для включения функционала обратитесь к вашему менеджеру.

Throttling error (0x00000058)

Ошибка ESME_RTHROTTLED возникает при превышении максимально допустимой скорости отправки сообщений по SMPP соединению. По умолчанию ограничение составляет 20 СМС/сек. Необходимо настроить своё ПО таким образом, чтобы возвращенные с этой ошибкой сообщения перепосылались через небольшой таймаут, либо следует уменьшить интенсивность передачи сообщений.

Invalid Password (0x0000000E)

Ошибка ESME_RINVPASWD возникает на этапе выполнения операции BIND при указании неверного system-id и(или) пароля. Проверьте корректность логина и пароля. Убедитесь, что логин и пароль совпадают с теми, которые выдал ваш менеджер.

Bind Failed (0x0000000D)

Ошибка ESME_RBINDFAIL возникает на этапе выполнения операции BIND при отсутствии денежных средств на аккаунте. Проверьте состояние баланса на аккаунте.

Invalid Source Address (0x0000000A)

Ошибка ESME_RINVSRCADR возникает при отправке сообщения с некорректным именем отправителя. Возможно, вам не разрешено отправлять сообщения с данным именем, либо по требованию операторов имя отправителя заблокировано на нашей платформе. Убедитесь, что имя отправителя соответствует требованиям и рекомендациям, описанным в разделе «Адрес отправителя».
Проверьте, что оно не содержит лишних пробелов в начале и в конце. Если имя корректно, то свяжитесь со своим менеджером для прояснения ситуации. Контакты менеджера, а также удобная форма обратной связи находятся в вашем личном кабинете.

Invalid Dest Address (0x0000000B)

Ошибка ESME_RINVDSTADR возникает при отправке сообщения на некорректный номер телефона. Возможно, на вашем аккаунте запрещена отправка сообщений на данное направление, либо по требованию операторов номер телефона заблокирован на нашей платформе. Проверьте, что номер указан в международном формате так, как описано в разделе «Формат номера телефона». Вместо прямых городских номеров должны быть указаны их федеральные аналоги. Убедитесь, что номер телефона принадлежит оператору, отправка на который прописана в вашем договоре. Принадлежность к оператору можно определить в личном кабинете на странице определения оператора.

UDH-склейка

Для передачи склеенных сообщений (сообщений из нескольких частей) следует использовать UDH-склейку (User Data Header). Это единственно возможный способ передачи длинных сообщений в GSM сетях. UDH является частью тела сообщения (поле short_message из обязательных параметорв). Существует два вида склейки, которые различаются сигнатурой и размером reference number.

Наиболее часто используемый вариант — reference number размером 1 байт (в примере тело сообщения в hex форме):

05 00 03 D4 03 02 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 …
длина UDH сигнатура (IEI) длина IE reference number общее кол-во частей текущая часть (отсчет идёт от 1) текст части сообщения
05 00 03 D4 03 02 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 …

Другой вариант — reference number размером 2 байта (в примере тело сообщения в hex форме):

06 08 04 A7 D4 03 02 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 …
длина UDH сигнатура (IEI) длина IE reference number общее кол-во частей текущая часть (отсчет идёт от 1) текст части сообщения
06 08 04 A7 D4 03 02 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 …

При применении 2-х байтовой склейки значительно снижается вероятность неправильной склейки сообщений на телефоне абонента. Под неправильной склейкой подразумевается ситуация, когда, например, первая половина текста передана верно, а вторая - взята из старого, ранее отправленного СМС-сообщения. Такое может проиходить из-за малого количества вариантов reference number.

Для того чтобы указать наличие UDH в теле сообщения, необходимо взвести бит UDHI Indicator (седьмой бит) в esm_class. Например, типичное значение esm_class для склеенных сообщений — 0x40.

Пример СМС из двух частей:

05 00 03 AF 02 01 … тело сообщения …

— первая часть

05 00 03 AF 02 02 … тело сообщения …

— вторая часть

Из-за того, что невозможно заранее предугадать маршрут доставки каждого отдельно взятого сообщения, используется параметр reference number (в примере это AF). Он позволяет принимающему аппарату определить, что поступившие части относятся к одному и тому же склеенному сообщению. Последние два октета позволяют аппарату склеить сообщения в правильном порядке и определить общее количество частей сообщения для корректной индикации о неполном сообщении.

Правила индикации зависят от конкретной модели телефона. Наиболее часто встречаются два алгоритма индикации:

Телефон копит во внутреннем буфере все части сообщения и отображает его на своем экране только после получения всех частей.
Телефон сразу начинает отображать поступившие части, а в списке сообщений неполное сообщение отмечается особым значком.

Из-за того, что UDH является частью сообщения, максимальный размер текста уменьшается на длину UDH. Например, для сообщений в семибитной кодировке, максимальныая длина текста — 153 символа, а для UCS-2 — 67.

При использовании склейки с 2-х байтовым reference number максимальная длина текста уменьшается до 152 символов в семибитной кодировке и до 66 символов в UCS-2.

SOAP протокол

Отправка сообщений на телефон абонента осуществляется путем обращения к веб-сервису и вызовом необходимых методов. Описание типов и поддерживаемых методов представлено в WSDL.

WSDL для сервиса находится по адресу: https://soap.smstraffic.ru/soap.wsdl.
Адрес сервера: https://soap.smstraffic.ru/soap.php .

Поведение параметров, описанных в WSDL, соответствует поведению одноимённых параметров HTTP(S) протокола.

В WSDL представлены следующие методы:

SendBulkSms — отправка одного сообщения на несколько номеров одним запросом;
SendIndividualSms — отправка индивидуального сообщения нескольким получателям;
GetSmsStatus — запрос статуса доставки;
GetBalance — запрос баланса учётной записи.

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

В запросах должен присутствовать элемент Options - в нем указываются логин и пароль к аккаунту, а также набор необязательных опций:

Элемент Описание
Login Ваш логин в системе SMS Traffic. Этот элемент обязателен.
Password Пароль от вашего аккаунта. Этот элемент обязателен.
Originator Имя отправителя. Если не указано, берётся имя отправителя по умолчанию из настроек аккаунта. Более подробно описано в параметре originator HTTP(S) протокола.
WantSmsIds Если установлен в true, то в ответ вернутся идентификаторы, присвоенные каждому сообщению. Значение по умолчанию — false. Более подробно описано в параметре want_sms_ids HTTP(S) протокола.
IgnorePhoneFormat Отключает проверку коррeктности номера телефона. Значение по умолчанию — false. Более подробно описано в параметре ignore_phone_format HTTP(S) протокола.
LatinEncoding Если установлено в true, то предполагается отправка СМС в латинице или транслите. Русские символы будут транслитерироваться в латиницу. Максимальное количество символов в одном СМС-сообщении — 160 (153 для склеенного сообщения). Если установлено в false, то сообщение будет отправлено в кодировке UCS-2, при этом максимальное количество символов в одном СМС-сообщении — 70 (67 для склеенного сообщения). Значение по умолчанию — false.
Timeout Время жизни СМС (в секундах). Значение по умолчанию — 86400 (24 часа). Более подробно описано в параметре timeout HTTP(S) протокола.
Flash Отправлять сообщение как flash-SMS. Значение по умолчанию — false. Более подробно описано в параметре flash HTTP(S) протокола.
StartDate Дата и время отправки СМС. По умолчанию сообщения отправляются немедленно. Более подробно описано в параметре start_date HTTP(S) протокола.
MaxParts Максимальное количество частей, на которые при необходимости будет разбит текст сообщения. Значение по умолчанию — 255. Более подробно описано в параметре max_parts HTTP(S) протокола.
TwoByteConcat Параметр позволяет указать способ UDH-склейки. Значение по умолчанию — false. Более подробно описано в параметре two_byte_concat HTTP(S) протокола.

В ответе каждого метода присутствует элемент Status. Он содержит статус обработки всего запроса.

Элемент Описание
IsSuccess true, если запрос обработан успешно и false - в противном случае.
Code Код ошибки. Если указан 0, то запрос был обработан без ошибок. Возвращаемые в этом элементе значения соответствуют «Кодам ошибок, возвращаемых по протоколу HTTP(S)»
Description Текстовое описание ошибки. Значение этого элемента полезно записать в логи.

Если элемент WantSmsIds был установлен в true, то для каждого абонента в ответе также будет присутствовать элемент MessageInfo со структурой, приведенной ниже:

Элемент Описание
Phone Номер телефона абонента
ProcessResult Текстовый статус обработки сообщения
SmsId Идентификатор СМС-сообщения (в случае, если ProcessResult=Accepted)

В свою очередь, элемент ProcessResult может содержать следующие значения:

Элемент Описание
Accepted Сообщение было принято и обработано.
Unroutable Сообщение было принято, но не обработано (например, по причине отсутствия роутинга на оператора абонента).

Метод SendBulkSms

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

Запрос
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <BulkSms>
    <Options>
     <Login>example</Login>
     <Password>p@ssw0rd!</Password>
    </Options>
    <Message>hello world</Message>
    <Phone>78003336655</Phone>
    <Phone>78002224477</Phone>
    <Phone>78001114444</Phone>
   </BulkSms>
  </env:Body>
</env:Envelope>
                                    
Ответ
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <SmsResponse>
    <Status>
     <IsSuccess>true</IsSuccess>
     <Code>0</Code>
     <Description>queued 3 messages</Description>
    </Status>
   </SmsResponse>
  </env:Body>
</env:Envelope>
                                    

Метод SendIndividualSms

Метод SendIndividualSms позволяет отправить каждому получателю своё индивидуальное сообщение.

Запрос
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <IndividualSms>
    <Options>
     <Login>example</Login>
     <Password>p@ssw0rd!</Password>
    </Options>
    <Pairs>
     <Phone>78003336655</Phone>
     <Message>individual</Message>
    </Pairs> <Pairs>
     <Phone>78002224477</Phone>
     <Message>message</Message>
    </Pairs>
    <Pairs>
     <Phone>78001114444</Phone>
     <Message>by phone</Message>
    </Pairs>
   </IndividualSms>
  </env:Body>
</env:Envelope>
                                    
Ответ
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <SmsResponse>
    <Status>
     <IsSuccess>true</IsSuccess>
     <Code>0</Code>
     <Description>queued 3 messages</Description>
    </Status>
   </SmsResponse>
  </env:Body>
</env:Envelope>
                                    

Метод GetSmsStatus

Метод GetSmsStatus возвращает статус доставки сообщения по sms_id.

Запрос
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <StatusRequest>
    <Login>example</Login>
    <Password>p@ssw0rd!</Password>
    <SmsId>27371658818</SmsId>
    <SmsId>1</SmsId>
   </StatusRequest>
  </env:Body>
</env:Envelope>
                                    
Ответ
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <StatusResponse>
    <Status>
     <IsSuccess>true</IsSuccess>
     <Code>0</Code>
     <Description></Description>
    </Status>
    <SmsInfo>
     <SmsId>27374567618</SmsId>
     <Error></Error>
     <SubmissionDate>2020-05-09T15:19:00</SubmissionDate>
     <SendDate>2020-05-09T15:19:00</SendDate>
     <LastStatusChangeDate>2020-05-09T15:19:00</LastStatusChangeDate>
     <Status>Expired</Status> </SmsInfo>
    <SmsInfo>
     <SmsId>1</SmsId>
     <Error>no such message or this message does not belong to you</Error>
    </SmsInfo>
   </StatusResponse>
  </env:Body>
</env:Envelope>
                                    

Метод GetBalance

Метод GetBalance возвращает текущий баланс аккаунта.

Запрос
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
 . xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <BalanceRequest>
    <Login>texample</Login>
    <Password>p@ssw0rd!</Password>
   </BalanceRequest>
  </env:Body>
</env:Envelope>
                                    
Ответ
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
  xmlns="http://soap.smstraffic.ru/soap.wsdl">
  <env:Body>
   <BalanceResponse>
    <Status>
     <IsSuccess>true</IsSuccess>
     <Code>0</Code>
     <Description></Description>
    </Status>
    <Amount>52782.35</Amount>
   </BalanceResponse>
  </env:Body>
</env:Envelope>
                                    
SMTP протокол (вариант 1)

Для того чтобы отправить СМС на телефон абонента посредством электронной почты, необходимо написать (или ваша программа должна сгенерировать) письмо на адрес: login@corp.smsmail.ru, где login – имя, выданное вам после регистрации. Номер телефона следует указать в теме письма (subject), а само сообщение – в теле письма.

Сообщение можно написать русскими буквами - в этом случае, в зависимости от настроек вашего аккаунта, система либо сама перекодирует его в транслит (эта настройка действует по умолчанию), либо отправит в кодировке UCS-2.
Для изменения этой настройки воспользуйтесь страницей настроек (lk.smstraffic.ru/options.php) в своем аккаунте.

Пример:

From: yourname@yourdomain.ru
To: yourlogin@corp.smsmail.ru
Subject: 79161234567

Vam neobhodimo oplatit’ schet $17.65. Dlya spravok zvonite 1234567.

Телефон абонента можно указать одним из двух способов:

В теме письма - в этом случае почта отправляется на адрес типа login@corp.smsmail.ru, как описано выше.
В адресе - разделяя номер телефона и логин точкой. Например, 79161112233.login@corp.smsmail.ru.

Пример:

From: yourname@yourdomain.ru To: 79161234567.yourlogin@corp.smsmail.ru Subject: ne imeyet znacheniya

Vam neobhodimo oplatit’ schet $17.65. Dlya spravok zvonite 1234567.

Обратите внимание - SMTP v1 не предназначен для массовых рассылок. Для массовых рассылок используйте протоколы SMPP, HTTP(S) или личный кабинет. Рекомендуемое ограничение — не более 100 писем в минуту.

По желанию клиента можно ограничить отсылку таких писем с конкретного SMTP сервера (рекомендуется). Аутентификация осуществляется по заголовкам Received. Для того чтобы установить защиту, необходимо отправить тестовое электронное сообщение на tech.support@smstraffic.ru через тот SMTP сервер, который будет использоваться для отправки рабочих сообщений. В теле письма укажите, для какого аккаунта вы хотите установить защиту.

Также, по желанию клиента можно ограничить список телефонов, на которые возможна отправка. Список можно задать на странице lk.smstraffic.ru/options.php. По умолчанию принимаются сообщения на любые телефоны.

Мы настоятельно рекомендум использовать хотя бы один тип защиты — либо по заголовкам SMTP, либо с помощью ограничения списка получателей. Возможно также полностью запретить прием сообщений через email и пользоваться только протоколами HTTP(S) или SMPP. Установить такой запрет можно на странице lk.smstraffic.ru/options.php. Для всех новых аккаунтов отправка по email описанным выше способом по умолчанию отключена.

При отправке по email невозможно динамически задавать имя или телефон отправителя (поле originator при передаче по HTTP), поэтому в качестве отправителя всегда будет подставлено одно и то же значение, по умолчанию. Это значение можно исправить на странице настроек вашего личного кабинета. Если необходимо динамически изменять отправителя, рекомендуем использовать протоколы HTTP(S), SMPP или SMTP вариант 2.

SMTP протокол (вариант 2)

Существует другой способ отправлять СМС-сообщения через email и при этом пользоваться практически всеми возможностями, которые предоставляет протокол HTTP(S). Отправьте email на адрес multi@smtp2.smsmail.ru. В теле сообщения перечислите поля и их значения (согласно описанию протокола HTTP), разделенные двоеточием. Каждая пара "поле: значение" должна быть на отдельной строке и отделена от соседних пар по крайней мере одной пустой строкой. Тема сообщения не имеет значения.

Пример:

From: yourname@yourdomain.ru
To: multi@smtp2.smsmail.ru
Subject: ne imeyet znacheniya

login: yourlogin
password: yourpass

phones: 79161234567

message: Vam neobhodimo oplatit’ schet $17.65. Dlya spravok zvonite 1234567.

originator: MyCompany

Ограничение: в поле message нельзя использовать два символа перевода строки подряд (такое сочетание символов будет воспринято как разделитель полей). Дополнительно можно использовать специальный параметр reply_to_email со значением 1, как в примере ниже:

From: yourname@yourdomain.ru
To: multi@smtp2.smsmail.ru
Subject: ne imeyet znacheniya

login: yourlogin
password: yourpass

phones: 79161234567

message: Vam neobhodimo oplatit’ schet $17.65. Dlya spravok zvonite 1234567.

originator: MyCompany

reply_to_email: 1

В этом случае на email-адрес отправителя будет выслан ответ, такой же как при использовании протокола HTTP(S).

Пример
<?xml version="1.0"?>
<reply>
  <result>OK</result>
  <code>0</code>
  <description>queued 1 messages</description>
  <message_infos>
   <message_info>
    <phone>79161234567</phone>
    <sms_id>1014190631</sms_id>
   </message_info>
  </message_infos>
</reply>
                                    

Обратите внимание - данный метод не предназначен для массовых рассылок. Для массовых рассылок используйте протоколы SMPP, HTTP(S) или личный кабинет. Рекомендуемое ограничение — не более 100 писем в минуту и не более 10000 СМС в одном письме.

Список кодов ошибок в поле err отчёта о доставке

Код Описание на английском Описание на русском
1 The subscriber is absent or out of a coverage Абонент недоступен или отключен.
2 Call barred service activated У абонента включен запрет на прием сообщений или абонента заблокировал оператор (возможно, в связи с отрицательным балансом).
3 Unknown subscriber Номер телефона не существует или не обслуживается.
4 Memory capacity exceeded Память телефона абонента переполнена.
5 Equipment protocol error Аппаратная ошибка телефона абонента.
6 Teleservice not provisioned Сервис коротких сообщений не предоставляется.
7 Facility not supported Аппарат абонента не поддерживает прием коротких сообщений.
8 Subscriber is busy Аппарат абонента занят операцией, препятствующей получению короткого сообщения.
9 Roaming restrictions Абонент находится в роуминге.
10 Timeout Время ожидания ответа от SMSC абонента истекло.
11 SS7 routing error Внутренняя ошибка маршрутизации.
12 Internal system failure Внутренняя ошибка системы.
13 SMSC failure Ошибка коммутатора (внутренняя ошибка передачи данных).
14 Illegal subscriber Блокировка оператором или незарегистрированный пользователь.
15 Message queue full Очередь сообщений для абонента со стороны оператора переполнена.
16 Invalid source address Некорректное имя отправителя
17 Unroutable direction Сообщение не маршрутизируемо.

Входящие СМС-сообщения

Если у вас подключена услуга "Входящий номер", то вы можете принимать СМС-сообщения от ваших сотрудников и клиентов. Суть услуги в том, что абонент отправляет СМС на специальный номер, настроенный в СМС-центре, после чего это сообщение пересылается вам либо по email, либо на ваше HTTP-приложение, либо по SMPP-протоколу.

Пересылка входящих сообщений на email

Для получения входящих сообщений по email, пришлите нам адрес, на который вы хотите получать входящие, и мы пропишем этот адрес в настройках. В дальнейшем вы сможете изменить этот адрес на странице настроек lk.smstraffic.ru/options.php

Пересылка входящих сообщений на HTTP (S)-скрипт

Для пересылки входящих сообщений на ваше HTTP-приложение и их автоматической обработки, вам необходимо установить на своем веб-сервере скрипт, который будет принимать методом GET или POST от нашего сервера следующие данные:

phone – номер телефона абонента;
message – текст сообщения (по умолчанию кодировка Windows-1251);
sms_id – уникальный идентификатор сообщения. Передается для исключения дублей: если sms_id повторяется, то необходимо дать тот же ответ, что и при первом запросе.

На успешный запрос нашего сервера ваш скрипт должен вернуть ответ ОК (response 200).

Вы можете самостоятельно редактировать параметры скрипта на странице настроек: lk.smstraffic.ru/options.php. В случае передачи данных POST-запросом, достаточно указать путь к вашему скрипту. В случае передачи данных GET-запросом, необходимо придерживаться шаблона следующего вида:

Путь_к_вашему_скрипту?message={{message}}&phone={{phone}}&sms_id={{sms_id}}

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

Пересылка входящих сообщений по SMPP

Для пересылки входящих (МО) сообщений по протоколу SMPP необходимо в настройках входящего номера в личном кабинете выбрать опцию "SMPP" (установлена по умолчанию). Входящие сообщения будут поступать только в режимах подключения Receiver и Transceiver.

Запрос списка входящих сообщений

Для получения списка входящих сообщений вызывается скрипт api.smstraffic.ru/multi.php с параметрами:

login - ваш логин
password - ваш пароль
operation=incoming

Необязательные параметры:

from_date- дата, начиная с которой необходимо получить список. Формат: «ГГГГ-ММ-ДД» или «ГГГГ-ММ-ДД ЧЧ:ММ:СС» . Время московское.
from_phone - телефон, с которого приходили сообщения;
count - максимальное количество сообщений, выдаваемое за один запрос;
want_sms_ids=1 — в ответный XML включается идентификатор СМС (по умолчанию - не включается).

В качестве ответа скрипт отдает XML с информацией о сообщении. Например:
<?xml version="1.0" ?>
<reply>
  <count>125</count>
  <messages>
   <message>
    <from_phone>79031234567</from_phone>
    <text>sms message text</text>
    <send_date>2020-05-09 01:12:59</send_date>
    <delivery_date>2020-05-09 01:13:05</delivery_date>
    <sms_id>5269156759</sms_id>
   </message>
   ...
   <message>
    <from_phone>79037654321</from_phone>
    <text>sms message</text>
    <send_date>2020-05-09 06:02:13</send_date>
    <delivery_date>2020-05-09 06:02:18</delivery_date>
    <sms_id>5269156775</sms_id>
   </message>
  </messages>
</reply>
                                

Срок хранения и выдачи сообщений по данному запросу не должен превышать двух дней. Если для вас важна оперативность получения сообщений, используйте возможность автоматического уведомления по HTTP протоколу, см. раздел Пересылка входящих сообщений на HTTP(S).

Короткий номер

Для получения сообщений, поступивших на ваш короткий номер, необходимо установить на своем веб-сервере скрипт, который будет принимать методом GET или POST следующие параметры:

phone – телефонный номер абонента;
message – текст его запроса (по умолчанию, кодировка Windows-1251);
shortcode – короткий номер;
password – пароль для защиты от несанкционированного использования вашего скрипта;
sms_id – уникальный идентификатор сообщения. В случае повторного поступления запроса с одним и тем же sms_id необходимо дать абоненту точно такой же ответ. Пришлите нам URL вашего скрипта, и мы настроим его вызов после каждого поступления запроса на ваш короткий номер. Скрипт должен обработать запрос и дать ответ, который мы без изменений перешлем абоненту по СМС.

Ответ может содержать, например, запрошенную текстовую информацию, подтверждение принятия запроса или ссылку на wap-сайт, по которой абонент может скачать запрошенный контент. Ответ не должен содержать никакого форматирования. Вы можете самостоятельно редактировать параметры вызова скрипта на странице настроек https://lk.smstraffic.ru/options.php.

Необходимо придерживаться шаблона следующего вида:

Путь_к_вашему_скрипту?message={{message}}&phone={{phone}}&sms_id={{sms_id}}&shortcode={{shortcode}}.

Пример PHP скрипта для обработки сообщений, поступивших на короткий номер, можно найти в папке shortcode.

История версий
Дата изменения Версия документа Описание
2026-05-28 2.4 Добавлено описание метода выгрузки журнала событий личного кабинета.
2025-12-18 2.3 Добавлен блок HTTP API v2. Удалён параметр gap в HTTP API, SOAP.
2025-02-20 2.2.3 Минорное изменение.
2024-04-23 2.2.2 Минорное изменение.
2023-08-21 2.2.1 Минорное изменение. В связи с обновлением интерфейса личного кабинета.
2023-07-06 2.2 Новая операция для HTTP протокола: установка статуса «Проверено».
2021-09-29 2.1.4 Минорное изменение. Исправлена/добавлена формулировка типичных ошибок (Invalid Password, Bind Failed).
2021-06-17 2.1.3 Минорное изменение. Дополнение кода ошибки канала СМС (код 17).
2021-05-24 2.1.2 Минорные изменения. Убрана неактуальная информация (о длине пароля).
2020-05-09 2.1.1 Минорные изменения. Убрана неактуальная информация.
2019-09-18 2.1. Изменен формат документации. Добавлены перекрестные ссылки.
2019-03-28 1.90 Изменены названия статусов для русской версии ЛК.
2019-02-19 1.89 Дополнена документация по SOAP протоколу.
2017-03-21 1.88 Добавлен параметр error_code для автоматической передачи статусов СМС.
2016-12-07 1.87 Добавлены коды ошибок 503 и 504 для протокола HTTP(S).
2016-07-19 1.86 Добавлен код ошибки 16 для протокола SMPP.
2015-12-10 1.85 Переработана структура документа. Добавлены новые разделы, расширены старые. Новый протокол SOAP. Изменены адреса для доступа к HTTP(S) API.
2012-09-25 1.84 Добавлено подробное описание функционала автоматического получения статусов.
2012-06-08 1.81 Добавлен параметр want_sms_ids для operation=incoming при работе по протоколу HTTP(S).
2012-03-23 1.80 Добавлено подробное описание особенностей работы по SMPP протоколу.
2012-01-22 1.77 Сервер server2.smstraffic.ru указан как основной при работе по протоколу SMPP.
2011-12-29 1.76 Добавлены несколько новых кодов ошибок при работе по протоколу HTTP(S).
2011-10-04 1.74 Добавлен параметр timeout в протокол HTTP(S).
2011-09-27 1.72 Описание ограничений при работе с протоколами SMTP, добавлен код ошибки 440 для работы по протоколу HTTP(S).
2011-08-12 1.69 Коррекция описания работы с параметром want_sms_ids для протокола HTTP(S).
2010-12-14 1.63 IP адреса заменены на адреса хостов для усиления отказоустойчивости.
2010-01-11 1.55 Добавлен новый список кодов ошибок для протокола HTTP(S).
2009-07-06 1.50 Дополнено описание протокола SMPP.
2009-05-14 1.48 Добавлен протокол SOAP.
2009-03-31 1.47 Изменены IP адреса для работы по SMPP протоколу.
2008-12-02 1.45 Добавлено значение rus=5 в протокол HTTP(S).
2007-11-23 1.39 Добавлен параметр flash в протокол HTTP(S).
2007-10-28 1.37 Добавлены примеры использования протоколов.
2007-07-18 1.35 В протоколе SMTP v.2. изменен адрес назначения на multi@smtp2.smsmail.ru .
2007-06-8 1.31 Добавлен параметр start_date в протокол HTTP(S).
2007-05-29 1.28 Добавлено описание дублирующего сервера.
2006-10-24 1.19 Добавлена возможность запрашивать список входящих сообщений по протоколу HTTP(S).
2006-08-15 1.18 Добавлена возможность запрашивать состояние счета по протоколу HTTP(S).
2006-08-08 1.17 Добавлен параметр wap_push_url в протокол HTTP(S) .
2006-06-30 1.13 Уточнено описание параметра originator протокола HTTP(S). Добавлен новый протокол — SMTP v2.
2006-06-28 1.9 Добавлен параметр gap в протокол HTTP(S).
2006-03-23 1.6 Добавлены параметры max_parts и UDH в протокол HTTP(S).
2005-04-18 1.5 Добавлена возможность передачи статуса сообщения методом вызова стороннего скрипта.
2005-02-21 1.3 Добавлены дополнительные переменные для протокола HTTP(S).
2004-08-02 1.1 Документ создан.
Россия

Москва,
2-й Южнопортовый проезд, д. 20А, с. 4
+7 (495) 787-35-95

Беларусь

Минск,
220007, ул. Толстого, 10

Казахстан

Алматы,
улица Нурлы жол 16, 1 этаж
+7 (727) 347-09-18

Узбекистан

Ташкент,
Яккасарайский район, ул. Абдулла Каххор, дом 1
+998 91 008 83 40