Рассылки
Массовые письма по адресной базе: создание, вёрстка, запуск, пауза, вложения и папки.
Рассылка создаётся черновиком, наполняется содержимым и запускается переводом в статус отправки. Отдельного метода «отправить» нет — запуск выполняется через изменение рассылки.
Жизненный цикл
POST /campaigns → DRAFT черновик создан
PUT /campaigns/{id} → DRAFT правим тему, вёрстку, базу
POST /campaigns/{id}/test → DRAFT письмо на свой адрес — проверить
GET /campaigns/{id}/preview → DRAFT ссылка на просмотр в браузере
GET /campaigns/{id}/estimate → DRAFT сколько писем уйдёт
PUT /campaigns/{id} status=SCHEDULE→ SCHEDULE запланирована на delivery_time
PUT /campaigns/{id} status=MODERATING → отправка сразу после модерации
POST /campaigns/{id}/unschedule → DRAFT снята с расписания, пока не ушла
→ PROCESSING идёт отправка
→ SENT отправлена
Статусы
DRAFT | Черновик. Можно менять всё |
MODERATING | Отправлена на модерацию; уйдёт сразу после её прохождения |
SCHEDULE | Запланирована на delivery_time |
CREATED, PROCESSING | Отправка идёт. Изменить рассылку уже нельзя |
SENT | Отправлена |
PAUSED | Отправка приостановлена |
TEMPLATE | Сохранённый шаблон, а не рассылка |
SUBSCRIBE, TRIGGER | Автоматизация, не обычная рассылка |
BLOCKED, BLOCKED-SPAM | Заблокирована модератором |
DELETED | Удалена |
Ссылка отписки обязательна
Рассылка не запустится без ссылки отписки — это требование антиспам-законодательства, и API проверяет его на этапе запуска:
- в HTML-версии нужен тег со свойством
id="unsub_link":
<a id="unsub_link" href="%ОТПИСАТЬСЯ%">отписаться</a> - в текстовой версии нужна подстановка
%ОТПИСАТЬСЯ%; - в AMP-версии — тег с
id="unsub_link".
- GET Список рассылок
- GET Одна рассылка
- POST Создать рассылку
- PUT Изменить и запустить рассылку
- DELETE Удалить рассылку
- POST Скопировать рассылку
- POST Поставить отправку на паузу
- POST Возобновить отправку
- POST Снять с расписания
- POST Отправить тестовое письмо
- GET Ссылка на просмотр письма
- GET Сколько писем уйдёт
- POST Переотправить неоткрывшим
- GET Вложения рассылки
- POST Приложить файл
- DELETE Удалить вложение
- GET Папки рассылок
- POST Переместить рассылку в папку
Список рассылок #
GET
/campaigns
Возвращает рассылки аккаунта. Удалённые не показываются, если
явно не запрошен статус DELETED.
Здесь смещение задаётся параметром offset
(в отличие от подписчиков, где используется start).
По умолчанию возвращается 100 рассылок.
Параметры строки запроса
| Параметр | Тип | Описание |
|---|---|---|
limit | integerпо умолчанию: 100 | Сколько рассылок вернуть. |
offset | integerпо умолчанию: 0 | Смещение. Учитывается только вместе с limit. |
status | string | Фильтр по статусу рассылки. |
list_id | integer | Только рассылки по указанной адресной базе. |
start | date | Рассылки не раньше этой даты. Для статуса SENT сравнивается время отправки, иначе — время последнего изменения. |
end | date | Рассылки не позже этой даты. |
external_campaign_id | string | Поиск по вашему внешнему идентификатору. |
workflow | integer | Только письма указанной цепочки автоматизации. |
merge_json | флаг | Отдавать вложенные структуры как JSON. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
4 |
Рассылок, подходящих под фильтр, нет |
curl -X GET 'https://api.dashamail.com/v2/campaigns?status=SENT&limit=2' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns?status=SENT&limit=2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/campaigns?status=SENT&limit=2',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns?status=SENT&limit=2', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": [
{
"id": 501233,
"name": "Весенняя распродажа",
"subject": "Скидки до 40%",
"from_name": "Ромашка",
"from_email": "news@example.ru",
"list_id": "128341",
"status": "SENT",
"delivery_time": "2026-04-05 10:00:00",
"sent": 1284
},
{
"id": 501199,
"name": "Мартовский дайджест",
"subject": "Что нового",
"from_name": "Ромашка",
"from_email": "news@example.ru",
"list_id": "128341",
"status": "SENT",
"delivery_time": "2026-03-02 10:00:00",
"sent": 1201
}
]
}
}
Одна рассылка #
GET
/campaigns/{campaign_id}
Возвращает рассылку целиком, включая HTML- и текстовую версии письма.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Параметры строки запроса
| Параметр | Тип | Описание |
|---|---|---|
merge_json | флаг | Отдавать вложенные структуры как JSON. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
4 |
Рассылки с таким campaign_id нет |
curl -X GET 'https://api.dashamail.com/v2/campaigns/501233' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/campaigns/501233',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": [
{
"id": 501233,
"name": "Весенняя распродажа",
"subject": "Скидки до 40%",
"from_name": "Ромашка",
"from_email": "news@example.ru",
"list_id": "128341",
"status": "SENT",
"track_opens": "Y",
"track_clicks": "Y",
"delivery_time": "2026-04-05 10:00:00",
"html": "<h1>Скидки</h1><a id=\"unsub_link\" href=\"%ОТПИСАТЬСЯ%\">отписаться</a>",
"plain_text": "Скидки. Отписаться: %ОТПИСАТЬСЯ%"
}
]
}
}
Создать рассылку #
POST
/campaigns
Создаёт черновик рассылки. Отправка не начинается — для этого нужно перевести рассылку в статус запуска.
Содержимое письма можно передать сразу в html,
а можно наполнить позже.
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
list_id обязательный | integer | JSON-строка | Адресная база. Для рассылки по нескольким базам передайте JSON-массив идентификаторов: "[128341,128342]". |
subject обязательный | string | Тема письма. Поддерживает подстановки вида %ИМЯ%. |
from_email обязательный | string | Адрес отправителя. Домен должен быть подтверждён в аккаунте. |
from_name обязательный | string | Имя отправителя. |
name | stringпо умолчанию: Без Названия + дата | Внутреннее название рассылки, получателям не видно. |
html | string | HTML-версия письма. Вместо вёрстки можно передать id сохранённого шаблона числом, либо tmpl<campaign_id>, чтобы взять вёрстку другой рассылки. |
plain_text | string | Текстовая версия письма. |
amp | string | AMP-версия письма. Требует включённой поддержки AMP на аккаунте. |
track_opens | stringпо умолчанию: Y | Отслеживать открытия. Допустимые значения: Y, N |
track_clicks | stringпо умолчанию: Y | Отслеживать клики. Допустимые значения: Y, N |
plain_clicks | stringпо умолчанию: N | Отслеживать клики и в текстовой версии. Допустимые значения: Y, N |
esegment | JSON-строка | Условия сегментации базы. Структура: {"match":"and","c":[{"field":"…","op":"…","value":"…"}]}. При рассылке по нескольким базам — объект, где ключ это list_id. |
status | stringпо умолчанию: DRAFT | При создании допустимы только DRAFT и TEMPLATE; любое другое значение приводится к DRAFT.Допустимые значения: DRAFT, TEMPLATE |
external_campaign_id | string | Ваш идентификатор рассылки для сопоставления с внешней системой. |
personalizeToEmail | stringпо умолчанию: off | Подставлять имя получателя в поле «Кому». |
to_email | string | Шаблон отображаемого имени получателя, например %ИМЯ%. |
analytics | stringпо умолчанию: N | Добавлять UTM-метки к ссылкам. Допустимые значения: Y, N |
analytics_tag | string | Значение utm_campaign. |
analytics_source | string | Значение utm_source. |
analytics_medium | string | Значение utm_medium. |
analytics_content | string | Значение utm_content. |
analytics_term | string | Значение utm_term. |
allow_time_zone | флаг | Отправлять с учётом часового пояса получателя. |
allow_best_time | флаг | Отправлять в наиболее удачное для получателя время. |
limit | integer | Ограничить скорость отправки — сколько писем за интервал wait_time. |
wait_time | integer | Интервал ограничения скорости в минутах. |
no_images_add | флаг | Не добавлять изображения автоматически. |
dialogs_enabled | флаг | Включить приём ответов через Даша.Диалоги. Несовместимо с собственным Reply-To — при конфликте побеждают диалоги. |
stat_domain | string | Домен для ссылок статистики. Должен быть подтверждён в аккаунте. |
cloud | флаг | Выгрузить изображения из HTML в облачное хранилище DashaMail. |
Что возвращается
Идентификатор созданной рассылки.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
422 |
3 |
Не переданы обязательные параметры |
422 |
6 |
Адрес отправителя запрещён или не подтверждён |
500 |
38 |
Некорректная структура esegment |
404 |
5 |
Указанной адресной базы не существует |
curl -X POST 'https://api.dashamail.com/v2/campaigns' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"list_id": 128341,
"subject": "Скидки до 40%",
"from_email": "news@example.ru",
"from_name": "Ромашка",
"name": "Весенняя распродажа",
"html": "<h1>Скидки до 40%</h1><p><a id=\"unsub_link\" href=\"%ОТПИСАТЬСЯ%\">отписаться</a></p>",
"track_opens": "Y"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'list_id' => 128341,
'subject' => 'Скидки до 40%',
'from_email' => 'news@example.ru',
'from_name' => 'Ромашка',
'name' => 'Весенняя распродажа',
'html' => '<h1>Скидки до 40%</h1><p><a id="unsub_link" href="%ОТПИСАТЬСЯ%">отписаться</a></p>',
'track_opens' => 'Y',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'list_id': 128341,
'subject': 'Скидки до 40%',
'from_email': 'news@example.ru',
'from_name': 'Ромашка',
'name': 'Весенняя распродажа',
'html': '<h1>Скидки до 40%</h1><p><a id="unsub_link" href="%ОТПИСАТЬСЯ%">отписаться</a></p>',
'track_opens': 'Y',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"list_id": 128341,
"subject": "Скидки до 40%",
"from_email": "news@example.ru",
"from_name": "Ромашка",
"name": "Весенняя распродажа",
"html": "<h1>Скидки до 40%</h1><p><a id=\"unsub_link\" href=\"%ОТПИСАТЬСЯ%\">отписаться</a></p>",
"track_opens": "Y"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501233
}
}
}
Изменить и запустить рассылку #
PUT
/campaigns/{campaign_id}
Меняет черновик и — через параметр status —
запускает отправку.
Изменять можно рассылки в статусах DRAFT,
SCHEDULE, TRIGGER и
TEMPLATE. Уже отправляющуюся рассылку изменить
нельзя.
Как отправить рассылку. Передайте
status=MODERATING, чтобы письмо ушло сразу после
модерации, либо status=SCHEDULE вместе с
delivery_time, чтобы запланировать отправку.
Перед запуском проверяются тема, отправитель, наличие текста
письма и ссылки отписки.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
status | string | Новый статус. Запуск отправки — MODERATING или SCHEDULE.Допустимые значения: DRAFT, MODERATING, SCHEDULE, TEMPLATE |
delivery_time | datetime | Время запланированной отправки. Обязателен при status=SCHEDULE. |
subject | string | Тема письма. |
from_email | string | Адрес отправителя. |
from_name | string | Имя отправителя. |
name | string | Внутреннее название. |
list_id | integer | JSON-строка | Сменить адресную базу или набор баз. |
html | string | HTML-версия письма. |
plain_text | string | Текстовая версия письма. |
esegment | JSON-строка | Условия сегментации. |
track_opens | string | Отслеживание открытий. Допустимые значения: Y, N |
track_clicks | string | Отслеживание кликов. Допустимые значения: Y, N |
stat_domain | string | Домен статистики. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет либо её статус не допускает изменений |
409 |
21 |
Рассылка уже отправляется |
422 |
20 |
Недопустимое значение status |
500 |
13 |
При SCHEDULE не задан delivery_time |
500 |
14 |
Не задана тема письма |
500 |
15 |
Не задано имя отправителя |
500 |
16 |
Не задан адрес отправителя |
500 |
17 |
Нет ни HTML-, ни текстовой версии |
500 |
18 |
В HTML нет ссылки отписки с id="unsub_link" |
500 |
19 |
В тексте нет подстановки %ОТПИСАТЬСЯ% |
402 |
25 |
Недостаточно средств на балансе |
403 |
30 |
Отправка заблокирована по подозрению в спаме |
curl -X PUT 'https://api.dashamail.com/v2/campaigns/501233' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"status": "SCHEDULE",
"delivery_time": "2026-05-01 10:00:00"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'status' => 'SCHEDULE',
'delivery_time' => '2026-05-01 10:00:00',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.put(
'https://api.dashamail.com/v2/campaigns/501233',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'status': 'SCHEDULE',
'delivery_time': '2026-05-01 10:00:00',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"status": "SCHEDULE",
"delivery_time": "2026-05-01 10:00:00"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": true
}
}
Удалить рассылку #
DELETE
/campaigns/{campaign_id}
Помечает рассылку удалённой. Статистика по уже отправленным письмам сохраняется.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
curl -X DELETE 'https://api.dashamail.com/v2/campaigns/501233' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.delete(
'https://api.dashamail.com/v2/campaigns/501233',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
(тело ответа пустое)
Скопировать рассылку #
POST
/campaigns/{campaign_id}/copy
Создаёт копию рассылки вместе с вёрсткой. Копия отправленной
или заблокированной рассылки всегда получает статус
DRAFT.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор исходной рассылки. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
name | string | Название копии. По умолчанию совпадает с исходным. |
client_id | integer | Создать копию в аккаунте клиента. Доступно партнёрским аккаунтам. |
Что возвращается
Идентификатор созданной копии.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Исходной рассылки нет |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/copy' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Весенняя распродажа — повтор"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/copy');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Весенняя распродажа — повтор',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/copy',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'name': 'Весенняя распродажа — повтор',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/copy', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "Весенняя распродажа — повтор"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501240
}
}
}
Поставить отправку на паузу #
POST
/campaigns/{campaign_id}/pause
Приостанавливает идущую рассылку. Уже отправленные письма не отзываются.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
500 |
41 |
Рассылка сейчас не отправляется |
404 |
22 |
Рассылки с таким campaign_id нет |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/pause' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/pause');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/pause',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/pause', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": true
}
}
Возобновить отправку #
POST
/campaigns/{campaign_id}/resume
Продолжает рассылку, поставленную на паузу, с того места, где она остановилась.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
401 |
42 |
Рассылки на паузе с таким campaign_id нет |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/resume' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/resume');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/resume',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/resume', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": true
}
}
Снять с расписания #
POST
/campaigns/{campaign_id}/unschedule
Возвращает запланированную рассылку в черновик: статус
SCHEDULE, MODERATING, CREATED
или WAITING становится DRAFT. Письма ещё
не уходили, поэтому это не отмена отправки, а отказ от запуска —
рассылку можно поправить и запланировать заново тем же
PUT /campaigns/{campaign_id}. Сплит-варианты
возвращаются вместе с основной. Идущую отправку останавливает
POST /campaigns/{campaign_id}/pause, уже отправленные
письма не отзываются.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
422 |
20 |
Рассылка не запланирована: черновик, уже отправлена, на паузе |
409 |
21 |
Рассылка успела уйти в отправку |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/unschedule' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/unschedule');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/unschedule',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/unschedule', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501233,
"status": "DRAFT"
}
}
}
Отправить тестовое письмо #
POST
/campaigns/{campaign_id}/test
Отправляет письмо рассылки на указанные адреса — ровно в том
виде, в каком его получит подписчик: с вёрсткой, вложениями,
AMP-версией и подстановкой %ТЭГОВ% по случайному
активному подписчику первой базы. Служебные ссылки в тесте ведут
на заглушки, поэтому его открытия и переходы в отчёт рассылки не
попадают.
Лимит — 12 писем на рассылку и 25 в сутки на аккаунт. Адреса
из чёрного списка и формально неверные отбрасываются молча; если
не осталось ни одного, приходит отказ с кодом 6.
За один вызов уходит не больше шести писем.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
email обязательный | string | Адрес получателя. Несколько адресов — через запятую или массивом, не больше шести. |
Что возвращается
Число отправленных писем и адреса, на которые они ушли.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
403 |
30 |
Аккаунт ещё не прошёл модерацию |
404 |
22 |
Рассылки с таким campaign_id нет |
422 |
6 |
Не осталось годных адресов; обратный адрес рассылки на домене DashaMail |
429 |
63 |
Исчерпан лимит тестовых писем |
500 |
36 |
Письмо не удалось поставить в очередь отправки |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/test' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"email": "me@example.com"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/test');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'email' => 'me@example.com',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/test',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'email': 'me@example.com',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/test', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"email": "me@example.com"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501233,
"sent": 1,
"emails": [
"me@example.com"
]
}
}
}
Ссылка на просмотр письма #
GET
/campaigns/{campaign_id}/preview
Возвращает ссылку, по которой письмо открывается в браузере так, как его увидит подписчик. Страница просмотра пускает по подписи в самой ссылке, вход в личный кабинет не нужен — ссылку можно показать тому, кто согласует письмо. Она не меняется при правках рассылки, поэтому годится и для повторного просмотра.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Что возвращается
Ссылка на страницу просмотра.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
curl -X GET 'https://api.dashamail.com/v2/campaigns/501233/preview' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/preview');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/campaigns/501233/preview',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/preview', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501233,
"preview_url": "https://lk.dashamail.ru/stat/preview.php?hc=7a5b1&ss=9f1c0e7a4b2d8c6e5f3a1b9d7c4e2f60"
}
}
}
Сколько писем уйдёт #
GET
/campaigns/{campaign_id}/estimate
Размер аудитории рассылки до запуска: сколько активных подписчиков в выбранных базах и сколько из них попадает в сегмент. Отвечает по счётчикам, поэтому годится и перед самой отправкой, и в диалоге «а скольким это уйдёт».
Поле exact говорит, можно ли считать число
окончательным. Оно становится false в двух случаях:
баз больше одной (адрес из двух баз получит одно письмо, а
счётчики баз про это не знают, так что сумма — оценка сверху) или
размер сегмента ещё не посчитан. Состояние каждой базы — в
lists[].status:
ready | Число готово |
calculating | Сегмент пересчитывается, повторите запрос позже |
unknown | Сегмент задан, но ни разу не считался: размер появится после первого подсчёта в кабинете |
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Что возвращается
Общее число получателей и разбивка по базам.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
curl -X GET 'https://api.dashamail.com/v2/campaigns/501233/estimate' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/estimate');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/campaigns/501233/estimate',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/estimate', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501233,
"recipients": 12340,
"exact": true,
"lists": [
{
"list_id": 515843,
"name": "Клиенты",
"count_active": 12340,
"segment": false,
"recipients": 12340,
"status": "ready"
}
]
}
}
}
Переотправить неоткрывшим #
POST
/campaigns/{campaign_id}/resend
Создаёт новую рассылку по тем получателям исходной, кто её не открыл. Обычный приём — повторить письмо через несколько дней с другой темой.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор исходной рассылки. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
new_subject | string | Тема повторного письма. По умолчанию берётся исходная. |
Что возвращается
Идентификатор созданной рассылки.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Исходной рассылки нет |
500 |
40 |
Рассылка не в статусе PROCESSING или SENT |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/resend' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"new_subject": "Вы не видели: скидки до 40%"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/resend');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'new_subject' => 'Вы не видели: скидки до 40%',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/resend',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'new_subject': 'Вы не видели: скидки до 40%',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/resend', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"new_subject": "Вы не видели: скидки до 40%"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 501255
}
}
}
Вложения рассылки #
GET
/campaigns/{campaign_id}/attachments
Список файлов, приложенных к рассылке. Возвращается не больше десяти вложений.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
404 |
4 |
Вложений нет |
curl -X GET 'https://api.dashamail.com/v2/campaigns/501233/attachments' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/attachments');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/campaigns/501233/attachments',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/attachments', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": [
{
"id": 7712,
"campaign_id": 501233,
"name": "prays-list.pdf",
"size": 184320,
"link": ""
}
]
}
}
Приложить файл #
POST
/campaigns/{campaign_id}/attachments
Скачивает файл по указанной ссылке и прикладывает его к письму. Суммарный размер вложений ограничен тарифом.
С параметром separate_link файл не скачивается:
в письмо вставляется ссылка на него. Так стоит поступать с
крупными файлами — письмо останется лёгким.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
url обязательный | string | Ссылка на файл. |
name | string | Имя файла в письме. По умолчанию берётся из ссылки; кириллица транслитерируется. |
separate_link | флаг | Не прикладывать файл, а вставить ссылку на него. |
Что возвращается
Идентификатор вложения.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
422 |
3 |
Не передан url |
500 |
33 |
Недопустимый формат файла — .php и .exe запрещены |
402 |
25 |
Файл с таким именем уже приложен |
413 |
26 |
Превышен лимит на размер вложений |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/attachments' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.ru/files/prays-list.pdf",
"name": "Прайс-лист.pdf"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/attachments');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.ru/files/prays-list.pdf',
'name' => 'Прайс-лист.pdf',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/attachments',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'url': 'https://example.ru/files/prays-list.pdf',
'name': 'Прайс-лист.pdf',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/attachments', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"url": "https://example.ru/files/prays-list.pdf",
"name": "Прайс-лист.pdf"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"id": 7712
}
}
}
Удалить вложение #
DELETE
/campaigns/{campaign_id}/attachments/{id}
Открепляет файл от рассылки и удаляет его с диска.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
id обязательный | integer | Идентификатор вложения из списка вложений. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
404 |
27 |
Вложение не найдено |
curl -X DELETE 'https://api.dashamail.com/v2/campaigns/501233/attachments/7712' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/attachments/7712');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.delete(
'https://api.dashamail.com/v2/campaigns/501233/attachments/7712',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/attachments/7712', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
(тело ответа пустое)
Папки рассылок #
GET
/campaigns/folders
Список папок, по которым разложены рассылки.
Параметры строки запроса
| Параметр | Тип | Описание |
|---|---|---|
id | integer | Вернуть одну папку. |
name | string | Найти папку по точному названию. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
4 |
Папок нет |
curl -X GET 'https://api.dashamail.com/v2/campaigns/folders' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/folders');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/campaigns/folders',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/folders', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": [
{
"id": 33,
"name": "Дайджесты"
},
{
"id": 34,
"name": "Акции"
}
]
}
}
Переместить рассылку в папку #
POST
/campaigns/{campaign_id}/move
Перекладывает рассылку в указанную папку.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор рассылки. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
folder_id обязательный | integer | Идентификатор папки из списка папок. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Рассылки с таким campaign_id нет |
500 |
39 |
Папки с таким folder_id нет |
curl -X POST 'https://api.dashamail.com/v2/campaigns/501233/move' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"folder_id": 34
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/campaigns/501233/move');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'folder_id' => 34,
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/campaigns/501233/move',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'folder_id': 34,
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/campaigns/501233/move', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"folder_id": 34
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": true
}
}