Broadcasts API — рассылки и шаблоны

Broadcasts API Multi API — запуск рассылок, управление шаблонами рассылок, параметры запроса, вебхук статусов

Коротко: Broadcasts API запускает рассылки и управляет их шаблонами. Рассылка может использовать готовый шаблон или inline-содержимое через payload.

Кому подходит

  • Роль: Разработчик, Интегратор
  • Уровень: Опытный

Что такое Broadcasts API

Broadcasts API — интерфейс для работы с рассылками. Два блока:

  • Запуск рассылки — POST /broadcast/broadcasts.
  • Управление шаблонами рассылок — /broadcast/templates.

Каждая рассылка запускается через шаблон или через inline-содержимое. Все результаты приходят на вебхук.

Эндпоинты

МетодЭндпоинтДля чего
POST/broadcast/broadcastsЗапуск рассылки
GET/broadcast/templatesСписок шаблонов рассылок
POST/broadcast/templatesСоздать шаблон рассылки
GET/broadcast/templates/{id}Детали шаблона
PUT/broadcast/templates/{id}Обновить шаблон
DELETE/broadcast/templates/{id}Удалить шаблон

Полный URL: https://web.multiapi.ru/api/v1/broadcast/broadcasts и https://web.multiapi.ru/api/v1/broadcast/templates.

Запуск рассылки

Эндпоинт: POST /broadcast/broadcasts

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

ПолеТипОбязательноЧто указать
webhookstringДаURL вебхука для статусов рассылки
templateIdintegerДа*ID существующего шаблона рассылки
payloadobjectДа*Inline-содержимое рассылки
recipientsListarrayНетСписок получателей. Если не указан — используются фильтры шаблона
launchTimestringНетВремя запуска (ISO 8601). Если не указано — рассылка стартует сразу после модерации
namestringНетНазвание рассылки. Если не указано — сгенерируется автоматически
descriptionstringНетОписание рассылки

*- нужен либо templateId, либо payload.

Пример 1. Запуск рассылки по шаблону:

curl --location 'https://web.multiapi.ru/api/v1/broadcast/broadcasts' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "templateId": 3091,
    "launchTime": "",
    "webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a"
  }'

Пример 2. Отложенная рассылка с указанием получателей:

curl --location 'https://web.multiapi.ru/api/v1/broadcast/broadcasts' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "templateId": 3091,
    "launchTime": "2024-08-30T09:14:45.410958Z",
    "webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a",
    "recipientsList": [
      { "phoneNumber": "4915735987904" }
    ]
  }'

Пример 3. Рассылка без шаблона (inline-содержимое):

curl --location 'https://web.multiapi.ru/api/v1/broadcast/broadcasts' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "name": "Летняя распродажа",
    "description": "Распродажа летней коллекции",
    "launchTime": "2025-08-30T09:14:45.410958Z",
    "webhook": "https://webhook.site/9a9a9a9a-9a9a-9a9a-9a9a-9a9a9a9a9a9a",
    "recipientsList": [
      { "phoneNumber": "4915735987904" },
      { "phoneNumber": "4948735987296" }
    ],
    "payload": {
      "contentType": 1,
      "contentSettings": {
        "flowSteps": [
          {
            "channelType": 1,
            "senderId": "smsGate",
            "timeout": 172800,
            "deliveryCondition": "SUBMIT_SUCCESS",
            "contentPattern": "Привет! Наша летняя распродажа начинается сегодня!"
          }
        ]
      }
    }
  }'

recipientsList принимает один или несколько объектов с полем phoneNumber. Если phoneNumber не указан — API вернёт код 400.

Формат payload

Поле payload используется для inline-содержимого, когда рассылка запускается без шаблона.

ПолеТипОбязательноЧто указать
contentTypeintegerДаТип содержимого: 1 — Fallback, 2 — Chat Bot, 3 — RCS Capability Check
contentSettingsobjectДаНастройки содержимого
rcsCheckbooleanНетПроверять поддержку RCS перед отправкой

Объект contentSettings:

ПолеТипЧто означает
flowStepsarrayСписок шагов рассылки (каскад)
rcsCapabilityCheckobjectНастройки проверки RCS
scenarioobjectНастройки сценария (для Chat Bot)

Элемент flowSteps — шаг каскада:

ПолеТипОбязательноЧто указать
channelTypeintegerДаНомер канала
senderIdstringНетИмя отправителя
contentPatternobjectНетСодержимое сообщения
deliveryConditionstringНетУсловие успеха: SUBMIT_SUCCESS, DELIVERY_SUCCESS, DISPLAY_SUCCESS
timeoutintegerНетСекунды до перехода на следующий шаг
orderintegerНетПорядок шага

Управление шаблонами рассылок

Шаблон рассылки — это сохранённая конфигурация: шаги, каналы, содержимое, условия успеха. Один и тот же шаблон можно запускать несколько раз.

Список шаблонов

Эндпоинт: GET /broadcast/templates

Query-параметры:

ПараметрТипПо умолчаниюЧто указать
limitinteger10Максимум записей
offsetinteger0Смещение

Пример:

curl --location 'https://web.multiapi.ru/api/v1/broadcast/templates?limit=2' \
  --header 'X-API-Key: <ваш-ключ>'

Создание шаблона

Эндпоинт: POST /broadcast/templates

Тело запроса:

ПолеТипОбязательноЧто указать
namestringДаНазвание шаблона
contentTypeintegerДа1 — Fallback, 2 — Chat Bot, 3 — RCS Capability Check
contentobjectДаКонфигурация содержимого (flowSteps, scenario, rcsCapabilityCheck)
descriptionstringНетОписание
tagsarrayНетТеги получателей
filterListarrayНетID фильтров получателей
extraRecipientListarrayНетТочные номера телефонов получателей
rcsCheckbooleanНетПроверять поддержку RCS перед отправкой

Пример:

curl --location 'https://web.multiapi.ru/api/v1/broadcast/templates' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "name": "Летняя распродажа",
    "description": "Шаблон для продвижения летней коллекции",
    "extraRecipientList": [],
    "filterList": [],
    "tags": ["promo"],
    "contentType": 1,
    "content": {
      "flowSteps": [
        {
          "channelType": 1,
          "senderId": "sms_sender",
          "contentPattern": "Привет из шаблона",
          "deliveryCondition": "DELIVERY_SUCCESS",
          "timeout": 259200
        }
      ]
    }
  }'

Детали шаблона

Эндпоинт: GET /broadcast/templates/{id}

Пример:

curl --location 'https://web.multiapi.ru/api/v1/broadcast/templates/1670' \
  --header 'X-API-Key: <ваш-ключ>'

Обновление шаблона

Эндпоинт: PUT /broadcast/templates/{id}

Поддерживается частичное обновление: переданные поля обновляются, null игнорируются. Для смены contentType нужно передать полностью новый content.

Пример:

curl --location --request PUT 'https://web.multiapi.ru/api/v1/broadcast/templates/1670' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "name": "Летняя распродажа 2024",
    "description": "Обновлённое описание"
  }'

Удаление шаблона

Эндпоинт: DELETE /broadcast/templates/{id}

Удаление необратимо.

curl --location --request DELETE 'https://web.multiapi.ru/api/v1/broadcast/templates/1670' \
  --header 'X-API-Key: <ваш-ключ>'

Успешное удаление возвращает код 204 No Content.

Вебхук статусов рассылки

URL вебхука обязателен при запуске рассылки. Платформа отправляет на него статусы по мере выполнения.

Формат:

ПолеТипЧто означает
statusstringОбновлённый статус рассылки
webhookstringURL вебхука
broadcastIdintegerID рассылки
messagestringОписание ошибки (если есть)

Коды ответов

КодЧто означает
200 OKУспешно
204 No ContentУспешно, тело пустое (для удаления)
400Ошибка параметров запроса
401Неверный или отсутствующий API-ключ
403Нет прав
404Шаблон не найден
500Внутренняя ошибка сервера

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

{
  "execId": null,
  "key": null,
  "code": null,
  "message": "Phone number can`t be null or empty",
  "args": null
}

Частые проблемы

Причина: в recipientsList есть объект без поля phoneNumber.

Решение: убедитесь, что в каждом объекте указан phoneNumber.

Причина: templateId не существует или не принадлежит вашей компании.

Решение: проверьте ID в списке шаблонов (GET /broadcast/templates).

Причина: заголовок X-API-Key не передан или ключ неверный.

Решение: проверьте заголовок. Подробнее — Ошибка 401.

Причина: у ключа нет scope broadcasts.

Решение: откройте ключ в разделе API Подключения и добавьте нужный scope.

Причина: возможны разные причины — от настроек шаблона до статусов на стороне провайдера.

Решение: проверьте статусы рассылки через вебхук, указанный при запуске.

См. также

OMNI API — отправка сообщений

Эндпоинты /messages, /omnimessages

Форматы payload по каналам

JSON-примеры для каждого канала

Вебхуки

Статусы сообщений и рассылок

Подключение к API

Аутентификация и базовый URL

Нужна помощь?