# DashaMail REST API v2: Добавить подписчика в адресную базу

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

Подписка с сайта или синхронизация клиентов из CRM.

1. Узнай ID базы: GET /v2/lists — в response.data список баз с id и описанием дополнительных полей merge_1…merge_N.
2. Добавь подписчика: POST /v2/lists/{list_id}/members с email и доп. полями (merge_1 — например, имя). Чтобы обновить существующего подписчика вместо ошибки 409, передай update = 1.
3. Для подписки с подтверждением (double opt-in) передай send_confirm — подписчик получит письмо со ссылкой.
4. Ответ 201 с response.data.member_id. Ошибка 10 значит, что адрес отписан, в чёрном списке или неактивен.
5. Проверить подписчика можно через GET /v2/lists/{list_id}/members с email.

```bash
curl -X POST https://api.dashamail.com/v2/lists/128341/members \
  -H "Authorization: Bearer $DASHAMAIL_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email": "ivan@example.ru", "merge_1": "Иван", "merge_2": "Москва", "update": 1}'
```

## Базовые 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'
```

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

### GET /v2/lists — Адресные базы

В `response.data` — базы с полями `id`, `state`, `name`, `merge_1`…`merge_N` и счётчиками `count_active`, `count_unsubscribed`, `count_all` и др.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `state` | query | string | нет | active, archived, blocked |
| `limit` | query | integer | нет | Число баз; без него — все |
| `offset` | query | integer | нет | Смещение (только с limit) |
| `merge_json` | query | boolean | нет | Описания доп. полей в JSON |

### GET /v2/lists/{list_id}/members — Подписчики базы

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `list_id` | path | integer | да | ID базы |
| `start` | query | integer | нет | Смещение, по умолчанию 0 |
| `limit` | query | integer | нет | Число записей, по умолчанию 100 |
| `order` | query | string | нет | Сортировка поле направление, по умолчанию id asc |
| `state` | query | string | нет | active, unsubscribed, bounced, complained, unconfirmed, inactive |
| `email` | query | string | нет | Поиск по адресу |
| `member_id` | query | integer | нет | Поиск по ID |
| `segment_id` | query | integer | нет | Подписчики сегмента |

### POST /v2/lists/{list_id}/members — Добавление подписчика

Ответ `201`: `response.data.member_id`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `list_id` | path | integer | да | ID базы |
| `email` | body | string | да | Адрес подписчика |
| `merge_1` | body | string | нет | Доп. поле 1 (аналогично merge_2…merge_N) |
| `update` | body | boolean | нет | Обновить существующего подписчика вместо ошибки |
| `update_tags` | body | string | нет | on — добавить метки к существующим |
| `send_confirm` | body | boolean | нет | Отправить письмо подтверждения (double opt-in) |
| `no_check` | body | boolean | нет | Не проверять по возвратам и не исправлять опечатки |
| `state` | body | string | нет | Явное состояние подписчика |

Пример запроса:

```
curl -X POST 'https://api.dashamail.com/v2/lists/128341/members' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "email": "ivan@example.com",
  "merge_1": "Иван",
  "merge_2": "Москва",
  "update": 1
}'
```

## Нюансы

- Перед запуском рассылки проверяются тема, отправитель, наличие 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/sozdat-i-zapustit-massovuyu-rassylku.md)

---

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