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
Параметры запроса:
| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| webhook | string | Да | URL вебхука для статусов рассылки |
| templateId | integer | Да* | ID существующего шаблона рассылки |
| payload | object | Да* | Inline-содержимое рассылки |
| recipientsList | array | Нет | Список получателей. Если не указан — используются фильтры шаблона |
| launchTime | string | Нет | Время запуска (ISO 8601). Если не указано — рассылка стартует сразу после модерации |
| name | string | Нет | Название рассылки. Если не указано — сгенерируется автоматически |
| description | string | Нет | Описание рассылки |
*- нужен либо
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-содержимого, когда рассылка запускается без шаблона.
| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| contentType | integer | Да | Тип содержимого: 1 — Fallback, 2 — Chat Bot, 3 — RCS Capability Check |
| contentSettings | object | Да | Настройки содержимого |
| rcsCheck | boolean | Нет | Проверять поддержку RCS перед отправкой |
Объект contentSettings:
| Поле | Тип | Что означает |
|---|---|---|
| flowSteps | array | Список шагов рассылки (каскад) |
| rcsCapabilityCheck | object | Настройки проверки RCS |
| scenario | object | Настройки сценария (для Chat Bot) |
Элемент flowSteps — шаг каскада:
| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| channelType | integer | Да | Номер канала |
| senderId | string | Нет | Имя отправителя |
| contentPattern | object | Нет | Содержимое сообщения |
| deliveryCondition | string | Нет | Условие успеха: SUBMIT_SUCCESS, DELIVERY_SUCCESS, DISPLAY_SUCCESS |
| timeout | integer | Нет | Секунды до перехода на следующий шаг |
| order | integer | Нет | Порядок шага |
Управление шаблонами рассылок
Шаблон рассылки — это сохранённая конфигурация: шаги, каналы, содержимое, условия успеха. Один и тот же шаблон можно запускать несколько раз.
Список шаблонов
Эндпоинт: GET /broadcast/templates
Query-параметры:
| Параметр | Тип | По умолчанию | Что указать |
|---|---|---|---|
| limit | integer | 10 | Максимум записей |
| offset | integer | 0 | Смещение |
Пример:
curl --location 'https://web.multiapi.ru/api/v1/broadcast/templates?limit=2' \
--header 'X-API-Key: <ваш-ключ>'
Создание шаблона
Эндпоинт: POST /broadcast/templates
Тело запроса:
| Поле | Тип | Обязательно | Что указать |
|---|---|---|---|
| name | string | Да | Название шаблона |
| contentType | integer | Да | 1 — Fallback, 2 — Chat Bot, 3 — RCS Capability Check |
| content | object | Да | Конфигурация содержимого (flowSteps, scenario, rcsCapabilityCheck) |
| description | string | Нет | Описание |
| tags | array | Нет | Теги получателей |
| filterList | array | Нет | ID фильтров получателей |
| extraRecipientList | array | Нет | Точные номера телефонов получателей |
| rcsCheck | boolean | Нет | Проверять поддержку 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 вебхука обязателен при запуске рассылки. Платформа отправляет на него статусы по мере выполнения.
Формат:
| Поле | Тип | Что означает |
|---|---|---|
| status | string | Обновлённый статус рассылки |
| webhook | string | URL вебхука |
| broadcastId | integer | ID рассылки |
| message | string | Описание ошибки (если есть) |
Коды ответов
| Код | Что означает |
|---|---|
| 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.
Причина: возможны разные причины — от настроек шаблона до статусов на стороне провайдера.
Решение: проверьте статусы рассылки через вебхук, указанный при запуске.
См. также
Нужна помощь?
- Multi API: support@multiapi.ru