# Unisender API: Запустить email-рассылку по списку

Сценарий из mcp-everything. Актуально на 2026-10-24.

Создать письмо, отправить его по списку и узнать результат.

1. Создай письмо: POST /ru/api/createEmailMessage с sender_name, sender_email (подтверждённый адрес), subject, body (HTML) и list_id. Письмо отправляется только по одному списку. В ответе — код сообщения.
2. Запусти рассылку: POST /ru/api/createCampaign с message_id. Без start_time отправка начнётся сразу; для отложенной передай start_time (не дальше 100 дней) и timezone. Включи track_read и track_links, чтобы видеть открытия и переходы.
3. Проверяй статус: POST /ru/api/getCampaignStatus с campaign_id. Перед отправкой рассылка может пройти модерацию (waits_censor), итог — completed. Время в ответе — UTC.

```bash
MSG=$(curl -s -X POST "https://api.unisender.com/ru/api/createEmailMessage?format=json" \
  -d api_key=<ключ> --data-urlencode 'sender_name=Магазин' -d sender_email=news@example.ru \
  --data-urlencode 'subject=Скидки выходного дня' --data-urlencode 'body=<h1>Скидка 20%</h1><p>Только до воскресенья.</p>' \
  -d list_id=<код списка> | jq -r .result.message_id)

curl -X POST "https://api.unisender.com/ru/api/createCampaign?format=json" \
  -d api_key=<ключ> -d message_id=$MSG -d track_read=1 -d track_links=1
```

## Базовые URL

- Боевой: `https://api.unisender.com`
- Формат вызова: `https://api.unisender.com/LANG/api/METHOD?format=json&api_key=KEY&arg1=ARG_1`

## Авторизация

Тип: API-ключ

API-ключ копируется в личном кабинете и передаётся параметром `api_key`. Рекомендуется передавать его через POST, чтобы ключ не попадал в логи прокси. Доступ можно дополнительно ограничить списком доверенных IP.

```
https://api.unisender.com/ru/api/getLists?format=json&api_key=KEY
```

## Методы сценария

### POST /ru/api/createEmailMessage — Создание email-сообщения

Возвращает код сообщения для `createCampaign`. Письмо отправляется только по одному списку.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `api_key` | body | string | да | Ключ доступа |
| `sender_name` | body | string | да | Имя отправителя (не email) |
| `sender_email` | body | string | да | Подтверждённый email отправителя |
| `subject` | body | string | нет | Тема; обязательна, если нет template_id |
| `body` | body | string | нет | HTML-текст; обязателен, если нет template_id/system_template_id |
| `list_id` | body | integer | да | Код списка |
| `text_body` | body | string | нет | Текстовая версия |
| `generate_text` | body | integer | нет | 1 — сгенерировать текстовую часть из HTML (по умолчанию 0) |
| `tag` | body | string | нет | Отправить только контактам с меткой |
| `attachments` | body | array | нет | Вложения |
| `lang` | body | string | нет | Язык |
| `template_id` | body | integer | нет | Шаблон вместо subject и body |
| `wrap_type` | body | string | нет | Тип обёртки письма |
| `categories` | body | string | нет | Категории |

### POST /ru/api/createCampaign — Запуск рассылки

Запускает сразу или по расписанию ранее созданное email- или SMS-сообщение; возвращает код рассылки.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `api_key` | body | string | да | Ключ доступа |
| `message_id` | body | integer | да | Код сообщения из createEmailMessage/createSmsMessage |
| `start_time` | body | string | нет | ГГГГ-ММ-ДД чч:мм, не дальше 100 дней; без него — сразу |
| `timezone` | body | string | нет | Часовой пояс start_time; явно поддерживается UTC |
| `track_read` | body | integer | нет | 1 — отслеживать прочтения (по умолчанию 0) |
| `track_links` | body | integer | нет | 1 — отслеживать переходы (по умолчанию 0) |
| `contacts` | body | string | нет | Email или телефоны через запятую; без него — весь список |
| `contacts_url` | body | string | нет | URL файла со списком контактов (нельзя вместе с contacts) |
| `track_ga` | body | integer | нет | Добавлять UTM-метки (ga_medium, ga_source, ga_campaign, ga_content, ga_term) |

### POST /ru/api/getCampaignStatus — Статус рассылки

Время в ответе — UTC.

Статусы: `waits_censor`, `censor_hold`, `declined`, `waits_schedule`, `scheduled`, `in_progress`, `analysed`, `completed`, `stopped`, `canceled`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `api_key` | body | string | да | Ключ доступа |
| `campaign_id` | body | integer | да | Код рассылки из createCampaign |

Пример ответа:

```json
{ "result":{ "status":"completed", "creation_time":"2011-09-21 19:47:31", "start_time":"2011-09-21 20:00:00" } }
```

## Нюансы

- Параметры можно передавать GET или POST, кодировка UTF-8; запросы и ответы можно сжимать gzip или bzip2.
- Успешный ответ — поле `result` без `error`; могут быть `warnings[]` с полем `warning`.
- Типичная цепочка рассылки: `getLists` → `createEmailMessage` → `createCampaign` → `getCampaignStatus`.
- Также есть методы SMS (`createSmsMessage`, `sendSms`, `checkSms`), шаблонов, полей и меток, заметок, статистики (`getCampaignCommonStats`, `getVisitedLinks`) и Event tracking API.

## Другие сценарии

- [Подписать контакт на рассылку с сайта](https://mcp-everything.ru/integrations/unisender/scenarios/podpisat-kontakt-na-rassylku-s-sayta.md)
- [Загрузить базу контактов](https://mcp-everything.ru/integrations/unisender/scenarios/zagruzit-bazu-kontaktov.md)
- [Отправить одиночное письмо](https://mcp-everything.ru/integrations/unisender/scenarios/otpravit-odinochnoe-pismo.md)

---

Если этого недостаточно — официальная документация: https://www.unisender.com/ru/support/api/common/bulk-email/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/unisender.md
