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

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

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

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

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

Эндпоинты

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

Полный URL: https://web.mydialogi.ru/api/v1/broadcast/....

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

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

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

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

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

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

curl --location 'https://web.mydialogi.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.mydialogi.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.mydialogi.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

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

Объект contentSettings:

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

Шаги рассылки — flowSteps

Элемент flowSteps — это один шаг каскада: канал, содержимое, условие перехода.

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

contentPattern — это JSON-узел (JsonNode). Если шаблон простой текстовый — передайте строку. Если нужны переменные или структура — передайте объект в формате канала.

Проверка поддержки RCS — rcsCapabilityCheck

Используется, когда contentType: 3 — RCS Capability Check. Позволяет проверить, поддерживает ли устройство получателя RCS.

ПолеТипЧто указать
senderIdstringИмя отправителя, от которого выполняется проверка

Пример:

{
  "contentType": 3,
  "contentSettings": {
    "rcsCapabilityCheck": {
      "senderId": "rcs_sender"
    }
  }
}

Сценарий чат-бота — scenario

Используется, когда contentType: 2 — Chat Bot. Запускает двустороннюю рассылку со сценарием чат-бота.

ПолеТипЧто указать
channelIdintegerНомер канала, в котором работает чат-бот
flowIdintegerID чат-бота (сценария)
senderIdstringИмя отправителя, от которого работает чат-бот

Пример:

{
  "contentType": 2,
  "contentSettings": {
    "scenario": {
      "channelId": 4,
      "flowId": 42,
      "senderId": "wa_sender"
    }
  }
}

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

Список

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

ПараметрТипПо умолчаниюЧто указать
limitinteger10Максимум записей
offsetinteger0Смещение
curl --location 'https://web.mydialogi.ru/api/v1/broadcast/templates?limit=2' \
  --header 'X-API-Key: <ваш-ключ>'

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

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

ПолеТипОбязательноЧто указать
namestringДаНазвание шаблона
contentTypeintegerДа1, 2 или 3
contentobjectДаКонфигурация содержимого
descriptionstringНетОписание
tagsarrayНетТеги получателей
filterListarrayНетID фильтров
extraRecipientListarrayНетТочные номера телефонов
rcsCheckbooleanНетПроверять поддержку RCS
curl --location 'https://web.mydialogi.ru/api/v1/broadcast/templates' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "name": "Летняя распродажа",
    "contentType": 1,
    "content": {
      "flowSteps": [
        {
          "channelType": 1,
          "senderId": "sms_sender",
          "contentPattern": "Привет из шаблона",
          "deliveryCondition": "DELIVERY_SUCCESS",
          "timeout": 259200
        }
      ]
    }
  }'

Детали / обновление / удаление

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

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

# Удаление — возвращает 204 No Content
curl --location --request DELETE 'https://web.mydialogi.ru/api/v1/broadcast/templates/1670' \
  --header 'X-API-Key: <ваш-ключ>'

При обновлении поддерживается частичное изменение: переданные поля обновляются, null игнорируются. Для смены contentType нужно передать полностью новый 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

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