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.
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

Авторизация

Тип: 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 рассылки

Нюансы

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


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