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

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 — шаг каскада:

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

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

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

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

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

ПараметрТипПо умолчаниюЧто указать
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.

Причина: неверный или отсутствующий API-ключ.

Решение: проверьте заголовок X-API-Key.

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

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

См. также

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

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

Recipients API

Контакты, атрибуты, фильтры

Вебхуки

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

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

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

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