Обзор

Интеграции

Руководство пользователя

Справочник API

Вебхуки

Шаблоны

Шаблоны писем хранятся на сервере: их можно создавать, править, переносить между серверами и использовать при отправке. Серверный ключ работает только с шаблонами своего сервера — чужой шаблон для него не найден (код 1101); перенос между серверами доступен только ключу аккаунта.

Отправка письма с шаблоном #

post

/email/withTemplate

Отправляет одно письмо по сохранённому шаблону. Шаблон должен принадлежать серверу ключа, иначе вернётся ошибка 1101. Остальное — как у отправки одного письма.

Заголовки запроса

Accept обязательный

application/json

Content-Type обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры тела запроса

TemplateId integer

ID шаблона. Нужен TemplateId или TemplateAlias.

TemplateAlias string

Название шаблона — вместо TemplateId.

TemplateModel object

Подстановки: ключ — фрагмент текста шаблона, значение — на что его заменить. Замена буквальная, поэтому разделители входят в ключ: {"{{name}}": "Иван"} заменит {{name}}. Применяется к HTML и к теме.

From string обязательный

Адрес отправителя. Он должен быть на подтверждённом домене аккаунта. Имя отправителя указывается так: Магазин <shop@example.com>.

To string обязательный

Адреса получателей через запятую. Каждый получатель получает отдельное письмо со своим MessageID.

Cc string

Получатели копии через запятую.

Bcc string

Получатели скрытой копии через запятую.

Subject string

Тема письма. Если не указана, берётся тема шаблона.

Tag string

Тег письма. По нему фильтруют письма, открытия, клики и возвраты в API.

ReplyTo string

Адрес для ответа (заголовок Reply-To).

Headers array

Дополнительные заголовки письма: список объектов {"Name": "…", "Value": "…"}.

TrackOpens boolean

Включить или выключить отслеживание открытий для этого письма. Без параметра действует настройка сервера.

TrackLinks boolean

Включить или выключить отслеживание кликов для этого письма. Без параметра действует настройка сервера.

Metadata object

Произвольные данные «ключ — значение», привязанные к письму.

Attachments array

Вложения: список объектов с полями Name (имя файла), Content (содержимое в Base64) и ContentType. Чтобы встроить картинку в HTML, добавьте поле ContentID и сошлитесь на неё как cid:….

MessageStream string

ID канала, через который отправляется письмо, — из списка каналов. Канал должен принадлежать серверу ключа, не быть входящим и не находиться в архиве (иначе ошибка 1226). Если не указан, письмо уходит через транзакционный канал сервера по умолчанию; если исходящих каналов у сервера ещё нет, такой канал создаётся. Если активные исходящие каналы у сервера только массовые, вернётся ошибка 1226 — укажите канал явно.

Ответ

To string

Получатели из запроса.

SubmittedAt string

Время приёма письма, YYYY-MM-DD HH:MM:SS, МСК.

MessageID string

ID письма. Если получателей несколько, ID перечислены через запятую в том же порядке. По ID ищут письмо в API сообщений.

ErrorCode integer

0 — письмо принято в отправку. Иначе — код ошибки, HTTP-статус ответа при этом 422.

Message string

Описание результата.

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

curl "https://api.haskimail.ru/email/withTemplate" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Haskimail-Server-Token: server token" \
  -d '{
  "TemplateId": 4521,
  "TemplateModel": {
    "{{name}}": "Иван",
    "{{order}}": "1042"
  },
  "From": "Магазин <shop@example.com>",
  "To": "ivan@example.com",
  "Tag": "orders",
  "MessageStream": "2081"
}'

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "To": "ivan@example.com",
  "SubmittedAt": "2026-10-07 14:30:12",
  "MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
  "ErrorCode": 0,
  "Message": "OK"
}

Перенос шаблонов на другой сервер #

put

/templates/push

Переносит все шаблоны одного сервера на другой. Шаблоны именно переезжают, а не копируются: на исходном сервере их не останется. С PerformChanges: false метод только показывает, какие шаблоны будут перенесены.

Заголовки запроса

Accept обязательный

application/json

Content-Type обязательный

application/json

X-Haskimail-Account-Token обязательный

API-ключ аккаунта. Он есть в настройках аккаунта на вкладке «API-ключи».

Параметры тела запроса

SourceServerID integer обязательный

ID сервера, с которого переносятся шаблоны.

DestinationServerID integer обязательный

ID сервера, на который переносятся шаблоны.

PerformChanges boolean обязательный

true — перенести, false — только показать список.

Ответ

TotalCount integer

Количество шаблонов исходного сервера.

Templates array

Шаблоны исходного сервера.

Templates[].TemplateId integer

ID шаблона.

Templates[].Name string

Название шаблона.

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

curl "https://api.haskimail.ru/templates/push" \
  -X PUT \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Haskimail-Account-Token: account token" \
  -d '{
  "SourceServerID": 11834,
  "DestinationServerID": 11835,
  "PerformChanges": true
}'

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "TotalCount": 2,
  "Templates": [
    {
      "TemplateId": 4521,
      "Name": "Заказ оформлен"
    },
    {
      "TemplateId": 4522,
      "Name": "Восстановление пароля"
    }
  ]
}

Получение шаблона #

get

/templates/{templateIdOrAlias}

Возвращает шаблон по ID или по названию.

Заголовки запроса

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры пути

templateIdOrAlias обязательный

ID шаблона или его название.

Ответ

TemplateId integer

ID шаблона.

Name string

Название шаблона.

Subject string

Тема письма.

HtmlBody string

HTML-версия.

TextBody string

Текстовая версия.

AssociatedServerId integer

ID сервера, к которому относится шаблон.

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

curl "https://api.haskimail.ru/templates/{templateIdOrAlias}" \
  -X GET \
  -H "Accept: application/json" \
  -H "X-Haskimail-Server-Token: server token"

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "TemplateId": 4521,
  "Name": "Заказ оформлен",
  "Subject": "Заказ №{{order}} оформлен",
  "HtmlBody": "<html><body><p>Здравствуйте, {{name}}! Заказ №{{order}} оформлен.</p></body></html>",
  "TextBody": "Здравствуйте, {{name}}! Заказ №{{order}} оформлен.",
  "AssociatedServerId": 11834
}

Создание шаблона #

post

/templates

Создаёт шаблон на указанном сервере.

Заголовки запроса

Accept обязательный

application/json

Content-Type обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры тела запроса

Name string обязательный

Название шаблона. По нему шаблон можно выбрать вместо ID (TemplateAlias), поэтому лучше делать названия уникальными.

AssociatedServerId integer

ID сервера, на котором создаётся шаблон. С серверным ключом можно не указывать — шаблон создаётся на сервере ключа; другой сервер указать нельзя (код 510). С ключом аккаунта обязателен.

Subject string

Тема письма.

HtmlBody string

HTML-версия.

TextBody string

Текстовая версия.

Ответ

TemplateId integer

ID нового шаблона.

Name string

Название шаблона.

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

curl "https://api.haskimail.ru/templates" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Haskimail-Server-Token: server token" \
  -d '{
  "Name": "Заказ оформлен",
  "AssociatedServerId": 11834,
  "Subject": "Заказ №{{order}} оформлен",
  "HtmlBody": "<html><body><p>Здравствуйте, {{name}}! Заказ №{{order}} оформлен.</p></body></html>",
  "TextBody": "Здравствуйте, {{name}}! Заказ №{{order}} оформлен."
}'

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "TemplateId": 4521,
  "Name": "Заказ оформлен"
}

Редактирование шаблона #

put

/templates/{templateIdOrAlias}

Заменяет содержимое шаблона. Поля перезаписываются целиком: поле, которого нет в запросе, станет пустым, поэтому передавайте все четыре.

Заголовки запроса

Accept обязательный

application/json

Content-Type обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры пути

templateIdOrAlias обязательный

ID шаблона или его название.

Параметры тела запроса

Name string обязательный

Название шаблона.

Subject string обязательный

Тема письма.

HtmlBody string обязательный

HTML-версия.

TextBody string обязательный

Текстовая версия.

Ответ

TemplateId integer

ID шаблона.

Name string

Название шаблона.

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

curl "https://api.haskimail.ru/templates/{templateIdOrAlias}" \
  -X PUT \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Haskimail-Server-Token: server token" \
  -d '{
  "Name": "Заказ оформлен",
  "Subject": "Заказ №{{order}} принят",
  "HtmlBody": "<html><body><p>Здравствуйте, {{name}}! Заказ №{{order}} принят.</p></body></html>",
  "TextBody": "Здравствуйте, {{name}}! Заказ №{{order}} принят."
}'

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "TemplateId": 4521,
  "Name": "Заказ оформлен"
}

Список шаблонов #

get

/templates

Возвращает шаблоны сервера ключа; с ключом аккаунта — всех серверов.

Заголовки запроса

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры строки запроса

count

Количество шаблонов в ответе. По умолчанию 500.

offset

Сколько шаблонов пропустить. По умолчанию 0.

Ответ

TotalCount integer

Общее количество шаблонов.

Templates array

Шаблоны.

Templates[].TemplateId integer

ID шаблона.

Templates[].Name string

Название шаблона.

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

curl "https://api.haskimail.ru/templates?count=100&offset=0" \
  -X GET \
  -H "Accept: application/json" \
  -H "X-Haskimail-Server-Token: server token"

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "TotalCount": 2,
  "Templates": [
    {
      "TemplateId": 4521,
      "Name": "Заказ оформлен"
    },
    {
      "TemplateId": 4522,
      "Name": "Восстановление пароля"
    }
  ]
}

Удаление шаблона #

delete

/templates/{templateIdOrAlias}

Удаляет шаблон.

Заголовки запроса

Accept обязательный

application/json

X-Haskimail-Server-Token обязательный

Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи».

Параметры пути

templateIdOrAlias обязательный

ID шаблона или его название.

Ответ

ErrorCode integer

0 — шаблон удалён.

Message string

Описание результата.

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

curl "https://api.haskimail.ru/templates/{templateIdOrAlias}" \
  -X DELETE \
  -H "Accept: application/json" \
  -H "X-Haskimail-Server-Token: server token"

Пример ответа

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ErrorCode": 0,
  "Message": "Template 4521 removed."
}