Отправка массовых рассылок через Sendsay API
Массовая рассылка — это выпуск, который отправляется сразу большой аудитории: промоакция, дайджест, новостная рассылка. Список получателей определяется до начала отправки. Отправка через API позволяет запускать такие рассылки автоматически — например, из CRM, интернет-магазина или другой внешней системы.
Через Sendsay API массовые рассылки отправляются вызовом issue.send. Доступны два способа:
- выпуск по списку или сегменту контактов;
- экспресс-выпуск с передачей списка получателей прямо в запро се.
Требования для отправки
- API-ключ — создайте саблогин и сгенерируйте для него ключ.
- Черновик письма — создайте заранее через интерфейс или вызовом
issue.draft.set. - Список получателей — список или сегмент получателей в Sendsay, или файл с адресами (для экспресс-выпуска).
Адрес API
Все вызовы основного API отправляются методом POST на:
https://api.sendsay.ru/api/v100/json/account
где account — код вашего аккаунта (он совпадает с основным логином).
Тело запроса — JSON в кодировке UTF-8. В каждом запросе передаётся API-ключ и код действия.
Выпуск по списку или сегменту контактов
Типовой сценарий: рассылка уходит всем, кто входит в указанный список или сегмент.
Запрос
{
"apikey": "ваш-api-ключ",
"action": "issue.send",
"group": "group_code",
"letter": {
"draft.id": "123"
},
"sendwhen": "now",
"relink": 1
}
Параметры
| Параметр | Описание |
|---|---|
action | Всегда issue.send |
group | Код списка или сегмента контактов |
letter.draft.id | ID или алиас черновика письма |
sendwhen | Время отправки: now — немедленно, или дата в формате YYYY-MM-DD hh:mm — отложенный выпуск |
relink | 1 — преобразовывать ссылки для отслеживания кликов, 0 — нет |
Ответ
Вызов issue.send для массового выпуска — асинхронный. В ответе возвращается номер трекера:
{
"track.id": 12345
}
Через track.id можно отслеживать статус выпуска вызовом track.get. Также можно настроить колбек, который сработает по завершении выпуска.
Экспресс-выпуск
Экспресс-выпуск используется, если аудитория для рассылки формируется во внешней системе — например, в CRM, интернет-магазине или внутреннем сервисе. В этом случае список получателей и персональные данные можно передать прямо в запросе, не создавая отдельный список в платформе.
Адреса и данные передаются прямо в запросе через users.list или по ссылке через users.url. Параметр users.list поддерживает несколько форматов. Формат определяется автоматически по типу значения:
- Если значение — массив → JSON-массив.
- Если значение — объект → JSON-объект (АВО или КД).
- Если значение — строка ZIP с файлом workbook.xml → XLSX.
- Если значение — строка ZIP без workbook.xml → CSV (первый файл архива).
- Если значение — строка без ZIP → CSV.
Формат: JSON-массив (только Экспресс-выпуск)
Массив объектов, каждый из которых описывает одного получателя. Данные трактуются по модели Ключей Данных (КД) и могут иметь любую вложенную структуру.
Адрес получателя задаётся ключом member.email (для SMS — member.cellphone).
В шаблоне письма доступ к данным — через префикс anketa:
[% anketa.member.email %],
[% anketa.City %],
[% anketa.personal.fio.name %]
{
"apikey": "ваш-api-ключ",
"action": "issue.send",
"group": "masssending",
"letter": {
"draft.id": "123"
},
"users.list": [
{
"member": { "email": "client1@test.com" },
"City": "Москва",
"personal": {
"fio": { "name": "Анна", "surname": "Иванова" }
},
"bonuses": [100, 200, 500]
},
{
"member": { "email": "client2@test.com" },
"City": "Казань",
"personal": {
"fio": { "name": "Иван", "surname": "Петров" }
},
"bonuses": [50, 150]
}
],
"sendwhen": "now",
"relink": 1
}
JSON-массив доступен только для экспресс-выпуска. Для импорта контактов (member.import) этот формат не поддерживается.
Формат: JSON-объект-АВО
Объект с массивом caption (описание соответствия столбцов анкетам) и массивом rows (данные). Каждая ячейка содержит одно значение — не массив и не объект.
{
"apikey": "ваш-api-ключ",
"action": "issue.send",
"group": "masssending",
"letter": {
"draft.id": "123"
},
"users.list": {
"caption": [
{ "anketa": "member", "quest": "email" },
{ "anketa": "info", "quest": "firstname" },
{ "anketa": "info", "quest": "city" }
],
"rows": [
["anna@example.com", "Анна", "Москва"],
["ivan@example.com", "Иван", "Казань"],
["olga@example.com", "Ольга", "Самара"]
]
},
"sendwhen": "now",
"relink": 1
}
Формат: JSON-объект-КД (только импорт)
Аналогичная структура с caption и rows, но caption описывает ключи данных (datakey) вместо анкет.
Импорт и добавление контактов через Sendsay API