Шаблоны писем
Сохранённая вёрстка, которую можно подставлять в новые рассылки вместо того, чтобы каждый раз передавать HTML целиком.
В DashaMail два хранилища шаблонов, и живое из них — второе:
- Сохранённые рассылки — рассылки в статусе
TEMPLATE. Это те шаблоны, которые видно в кабинете; их отдаёт отдельный эндпоинт. Вёрстку такого шаблона возвращает запрос рассылки, а меняет её обновление. - HTML-шаблоны — старое хранилище отдельных заготовок
вёрстки,
/templates. Кабинет переносит их в шаблоны-рассылки при первом же заходе в раздел «Шаблоны», поэтому у большинства аккаунтов список пуст. Создание здесь по-прежнему работает: заготовка появится в кабинете после переноса.
Подставить шаблон в рассылку можно, передав его идентификатор числом
в параметре html при
создании рассылки.
Чтобы взять вёрстку другой рассылки, передайте
tmpl<campaign_id>.
- GET HTML-шаблоны
- GET Один HTML-шаблон
- PUT Изменить шаблон
- GET Сохранённые рассылки
- POST Сохранить шаблон
- DELETE Удалить шаблон
HTML-шаблоны #
GET
/templates
Возвращает HTML-шаблоны аккаунта вместе с вёрсткой, от новых к старым. Это старое хранилище: кабинет переносит такие заготовки в шаблоны-рассылки, поэтому пустой ответ здесь — обычное дело, а не признак того, что шаблонов нет.
Параметры строки запроса
| Параметр | Тип | Описание |
|---|---|---|
id | integer | Вернуть один шаблон. |
name | string | Найти шаблон по точному названию. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
4 |
Шаблонов нет |
curl -X GET 'https://api.dashamail.com/v2/templates' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/templates');
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/templates',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/templates', {
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": 4412,
"name": "Базовый одноколоночный",
"html": "<html>…</html>"
}
]
}
}
Один HTML-шаблон #
GET
/templates/{id}
Возвращает один HTML-шаблон вместе с вёрсткой — так же, как список, но адресно и без перебора.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
id обязательный | integer | Идентификатор шаблона. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
500 |
28 |
Шаблона с таким идентификатором нет |
curl -X GET 'https://api.dashamail.com/v2/templates/4412' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/templates/4412');
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/templates/4412',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/templates/4412', {
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": 4412,
"name": "Базовый одноколоночный",
"html": "<html>…</html>"
}
]
}
}
Изменить шаблон #
PUT
/templates/{id}
Меняет название и вёрстку HTML-шаблона. Передавайте только то, что нужно изменить: остальные поля останутся прежними.
Рассылки, созданные на основе шаблона, не затрагиваются —
вёрстка в них уже своя. Сохранённые рассылки (статус
TEMPLATE) правятся не здесь, а как
рассылка.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
id обязательный | integer | Идентификатор шаблона. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
name | string | Новое название. |
template | string | Новая HTML-вёрстка. |
cloud | флаг | Выгрузить изображения из вёрстки в облачное хранилище DashaMail. |
Что возвращается
Идентификатор изменённого шаблона.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
500 |
28 |
Шаблона с таким идентификатором нет |
422 |
11 |
Не передано ни одного изменяемого поля |
curl -X PUT 'https://api.dashamail.com/v2/templates/4412' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Базовый одноколоночный (2026)"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/templates/4412');
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([
'name' => 'Базовый одноколоночный (2026)',
], 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/templates/4412',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'name': 'Базовый одноколоночный (2026)',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/templates/4412', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "Базовый одноколоночный (2026)"
}),
});
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": 4412
}
}
}
Сохранённые рассылки #
GET
/templates/saved
Шаблоны аккаунта — рассылки в статусе TEMPLATE.
Отдаются без вёрстки: только идентификатор, название и папка,
иначе ответ распухнет на сотнях шаблонов. Вёрстку одного шаблона
возвращает запрос
рассылки, меняет — её
обновление.
Параметры строки запроса
| Параметр | Тип | Описание |
|---|---|---|
id | integer | Вернуть одну запись. |
name | string | Найти по точному названию. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
4 |
Сохранённых рассылок нет |
curl -X GET 'https://api.dashamail.com/v2/templates/saved' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/templates/saved');
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/templates/saved',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/templates/saved', {
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": 501100,
"name": "Шаблон дайджеста",
"folder_id": 33
}
]
}
}
Сохранить шаблон #
POST
/templates
Сохраняет вёрстку как HTML-шаблон.
В template можно передать либо саму вёрстку,
либо число — идентификатор рассылки, чью
вёрстку нужно сохранить.
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
name обязательный | string | Название шаблона. |
template обязательный | string | HTML-вёрстка либо campaign_id числом. |
body обязательный | string | Служебный параметр запроса — продублируйте сюда значение template. |
campaign_id | integer | Рассылка-источник вёрстки. Указывается вместе с числовым template. |
cloud | флаг | Выгрузить изображения из вёрстки в облачное хранилище DashaMail. |
Что возвращается
Идентификатор созданного шаблона.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
422 |
3 |
Не передан name или template |
404 |
22 |
Рассылки-источника с таким campaign_id нет |
curl -X POST 'https://api.dashamail.com/v2/templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Базовый одноколоночный",
"template": "<html><body><h1>Заголовок</h1></body></html>",
"body": "<html><body><h1>Заголовок</h1></body></html>"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/templates');
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' => 'Базовый одноколоночный',
'template' => '<html><body><h1>Заголовок</h1></body></html>',
'body' => '<html><body><h1>Заголовок</h1></body></html>',
], 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/templates',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'name': 'Базовый одноколоночный',
'template': '<html><body><h1>Заголовок</h1></body></html>',
'body': '<html><body><h1>Заголовок</h1></body></html>',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/templates', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "Базовый одноколоночный",
"template": "<html><body><h1>Заголовок</h1></body></html>",
"body": "<html><body><h1>Заголовок</h1></body></html>"
}),
});
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": 4412
}
}
}
Удалить шаблон #
DELETE
/templates/{id}
Удаляет HTML-шаблон. Рассылки, созданные на его основе, не затрагиваются — вёрстка в них уже своя.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
id обязательный | integer | Идентификатор шаблона. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
500 |
28 |
Шаблона с таким идентификатором нет |
curl -X DELETE 'https://api.dashamail.com/v2/templates/4412' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/templates/4412');
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/templates/4412',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/templates/4412', {
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);
(тело ответа пустое)