# DashaMail REST API v2: Создать и запустить массовую рассылку

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

Письмо по адресной базе — сразу или по расписанию.

1. Создай черновик: POST /v2/campaigns с list_id, subject, from_email (на подтверждённом домене), from_name и html. Отправка при этом не начинается — в ответе campaign_id.
2. В HTML обязательно должна быть ссылка отписки с id="unsub_link" (или %ОТПИСАТЬСЯ% в текстовой версии) — без неё рассылка не запустится. Также проверяются тема, отправитель и баланс.
3. Отправь сразу: POST /v2/campaigns/{campaign_id}/send — или запланируй: POST /v2/campaigns/{campaign_id}/schedule с delivery_time по московскому времени. allow_time_zone учтёт часовой пояс подписчика.
4. Отменить запланированную рассылку можно, пока письма не ушли, — через /v2/campaigns/{campaign_id}/unschedule.

```bash
CAMPAIGN=$(curl -s -X POST https://api.dashamail.com/v2/campaigns \
  -H "Authorization: Bearer $DASHAMAIL_KEY" -H 'Content-Type: application/json' \
  -d '{"list_id": 128341, "subject": "Скидки выходного дня", "from_email": "news@example.ru", "from_name": "Магазин",
       "html": "<h1>Скидка 20%</h1><p><a id=\"unsub_link\" href=\"#\">Отписаться</a></p>", "track_opens": "Y", "track_clicks": "Y"}' \
  | jq -r .response.data.campaign_id)

curl -X POST "https://api.dashamail.com/v2/campaigns/$CAMPAIGN/schedule" \
  -H "Authorization: Bearer $DASHAMAIL_KEY" -H 'Content-Type: application/json' \
  -d '{"delivery_time": "2026-10-26 10:00:00", "allow_time_zone": true}'
```

## Базовые URL

- Боевой: `https://api.dashamail.com`
- Ресурсы: `/v2`

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

Тип: Bearer-токен

API-ключ из личного кабинета передаётся в заголовке `Authorization: Bearer <ключ>` (схема `ApiKey` тоже принимается). Для совместимости ключ можно передать параметром `api_key` в строке запроса — менее безопасно; при заданном заголовке параметр игнорируется.

```
curl 'https://api.dashamail.com/v2/lists' \
  -H 'Authorization: Bearer YOUR_API_KEY'
```

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

### POST /v2/campaigns — Создание черновика рассылки

Ответ `201`: `campaign_id`. Отправка не начинается.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `list_id` | body | integer | да | ID базы (несколько — JSON-массив строкой) |
| `subject` | body | string | да | Тема (с подстановками) |
| `from_email` | body | string | да | Адрес отправителя на подтверждённом домене |
| `from_name` | body | string | да | Имя отправителя |
| `name` | body | string | нет | Внутреннее название |
| `html` | body | string | нет | HTML-версия |
| `plain_text` | body | string | нет | Текстовая версия |
| `status` | body | string | нет | DRAFT (по умолчанию) или TEMPLATE |
| `track_opens` | body | string | нет | Y/N |
| `track_clicks` | body | string | нет | Y/N |

### POST /v2/campaigns/{campaign_id}/schedule — Запланировать рассылку

Отмена — `POST /v2/campaigns/{campaign_id}/unschedule`, пока письма не ушли. Также можно запустить через `PUT /v2/campaigns/{campaign_id}` с `status` = `MODERATING` или `SCHEDULE`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `campaign_id` | path | integer | да | ID рассылки |
| `delivery_time` | body | string | да | YYYY-MM-DD HH:MM:SS, московское время |
| `allow_time_zone` | body | boolean | нет | Учитывать часовой пояс подписчика |
| `allow_best_time` | body | boolean | нет | Лучшее время отправки |

### POST /v2/campaigns/{campaign_id}/send — Отправить рассылку сейчас

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `campaign_id` | path | integer | да | ID рассылки |

## Нюансы

- Перед запуском рассылки проверяются тема, отправитель, наличие HTML или текста, ссылка отписки (`id="unsub_link"` в HTML или `%ОТПИСАТЬСЯ%` в тексте) и баланс.
- Домен `from_email` должен быть добавлен и подтверждён (DKIM, SPF), иначе письма не уйдут (код 34).
- Ответы — JSON с `response.data`; журнал и статистика транзакционных писем — `GET /v2/transactional/log` и `GET /v2/transactional/stats`.
- Разделы API: `/lists`, `/campaigns`, `/automations`, `/templates`, `/reports`, `/transactional`, `/account`, `/router`.

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

- [Отправить транзакционное письмо](https://mcp-everything.ru/integrations/dashamail/scenarios/otpravit-tranzaktsionnoe-pismo.md)
- [Добавить подписчика в адресную базу](https://mcp-everything.ru/integrations/dashamail/scenarios/dobavit-podpischika-v-adresnuyu-bazu.md)

---

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