Поиск отправленных писем, их открытий и кликов, а также работа со входящими письмами сервера. Серверный ключ видит письма только своего сервера, ключ аккаунта — всех серверов; сузить выборку до канала можно фильтром messagestream. Старые письма, отправленные без канала, относятся к серверу аккаунта по умолчанию. Пути вида /messages/outbound/… тоже принимаются.
Возвращает отправленные письма сервера ключа, новые первыми. Письмо с несколькими получателями — отдельная запись на каждого получателя.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи». |
| count |
Количество писем в ответе, от 1 до 500. По умолчанию 100. |
|---|---|
| offset |
Сколько писем пропустить. По умолчанию 0. Сумма count и offset — не больше 10000. |
| recipient |
Email получателя, точное совпадение. |
| fromemail |
Email отправителя, точное совпадение. |
| tag |
Тег письма. |
| subject |
Часть темы письма. |
| messagestream |
ID канала. |
| fromdate |
Начало периода: дата |
| todate |
Конец периода включительно. Дата без времени — до конца дня. По умолчанию — сейчас. |
| TotalCount | integer |
Сколько писем подходит под фильтры. |
|---|---|---|
| Messages | array |
Письма. |
| Messages[].Recipient | string |
Email получателя. |
| Messages[].ReceivedAt | string |
Время отправки, |
| Messages[].Tag | string |
Тег письма. |
| Messages[].From | string |
Email отправителя. |
| Messages[].MessageID | string |
ID письма. |
| Messages[].Subject | string |
Тема письма. |
| Messages[].MessageStream | string |
ID канала. У писем, отправленных до появления канала по умолчанию, бывает |
| Messages[].Status | string |
Всегда |
curl "https://api.haskimail.ru/messages?count=50&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": 1,
"Messages": [
{
"Recipient": "ivan@example.com",
"ReceivedAt": "2026-10-07 14:30:13",
"Tag": "orders",
"From": "shop@example.com",
"MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
"Subject": "Ваш заказ №1042 оформлен",
"MessageStream": "2081",
"Status": "Sent"
}
]
}
Возвращает одно отправленное письмо. Если письмо не найдено — ответ 422 с кодом 701.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи». |
| messageid | обязательный ID письма — MessageID из ответа на отправку. |
|---|
| Recipient | string |
Email получателя. |
|---|---|---|
| ReceivedAt | string |
Время отправки, |
| Tag | string |
Тег письма. |
| From | string |
Email отправителя. |
| MessageID | string |
ID письма. |
| Subject | string |
Тема письма. |
| MessageStream | string |
ID канала. У писем, отправленных до появления канала по умолчанию, бывает |
| Status | string |
Всегда |
curl "https://api.haskimail.ru/messages/{messageid}/details" \
-X GET \
-H "Accept: application/json" \
-H "X-Haskimail-Server-Token: server token"
HTTP/1.1 200 OK
Content-Type: application/json
{
"Recipient": "ivan@example.com",
"ReceivedAt": "2026-10-07 14:30:13",
"Tag": "orders",
"From": "shop@example.com",
"MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
"Subject": "Ваш заказ №1042 оформлен",
"MessageStream": "2081",
"Status": "Sent"
}
Возвращает открытия писем сервера ключа, новые первыми. Каждое открытие — отдельная запись.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи». |
| count |
Количество открытий в ответе, от 1 до 500. По умолчанию 100. |
|---|---|
| offset |
Сколько записей пропустить. По умолчанию 0. Сумма count и offset — не больше 10000. |
| recipient |
Email получателя, точное совпадение. |
| tag |
Тег письма. |
| messagestream |
ID канала. |
| fromdate |
Начало периода: дата |
| todate |
Конец периода включительно. Дата без времени — до конца дня. По умолчанию — сейчас. |
| TotalCount | integer |
Сколько открытий подходит под фильтры. |
|---|---|---|
| Opens | array |
Открытия. |
| Opens[].Recipient | string |
Email получателя. |
| Opens[].ReceivedAt | string |
Время открытия, |
| Opens[].Tag | string |
Тег письма. |
| Opens[].From | string |
Email отправителя. |
| Opens[].MessageID | string |
ID письма. |
| Opens[].Subject | string |
Тема письма. |
| Opens[].MessageStream | string |
ID канала. У писем, отправленных до появления канала по умолчанию, бывает |
| Opens[].RecordType | string |
Всегда |
| Opens[].Os | string |
Операционная система. |
| Opens[].Browser | string |
Браузер или почтовая программа. |
| Opens[].Webservice | string |
Почтовый веб-сервис, если письмо открыто в веб-интерфейсе. |
| Opens[].UserAgent | string |
Строка User-Agent. |
| Opens[].Language | string |
Язык браузера. |
| Opens[].Region | string |
Регион. |
| Opens[].Country | string |
Код страны. |
curl "https://api.haskimail.ru/messages/opens?count=50&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": 1,
"Opens": [
{
"Recipient": "ivan@example.com",
"ReceivedAt": "2026-10-07 14:52:40",
"Tag": "orders",
"From": "shop@example.com",
"MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
"Subject": "Ваш заказ №1042 оформлен",
"MessageStream": "2081",
"RecordType": "Open",
"Os": "Windows",
"Browser": "Chrome",
"Webservice": "",
"Language": "ru-RU",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0 Safari/537.36",
"Region": "Москва",
"Country": "RU"
}
]
}
Период не ограничен: возвращаются все записи по письму. Фильтры recipient, tag и messagestream работают так же, как в общем списке.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи». |
| messageid | обязательный ID письма — MessageID из ответа на отправку. |
|---|
| count |
Количество открытий в ответе, от 1 до 500. По умолчанию 100. |
|---|---|
| offset |
Сколько записей пропустить. По умолчанию 0. Сумма count и offset — не больше 10000. |
| recipient |
Email получателя, точное совпадение. |
| tag |
Тег письма. |
| messagestream |
ID канала. |
| TotalCount | integer |
Сколько открытий у письма. |
|---|---|---|
| Opens | array |
Открытия — поля как в «Открытиях писем». |
curl "https://api.haskimail.ru/messages/opens/{messageid}?count=10&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": 1,
"Opens": [
{
"Recipient": "ivan@example.com",
"ReceivedAt": "2026-10-07 14:52:40",
"Tag": "orders",
"From": "shop@example.com",
"MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
"Subject": "Ваш заказ №1042 оформлен",
"MessageStream": "2081",
"RecordType": "Open",
"Os": "Windows",
"Browser": "Chrome",
"Webservice": "",
"Language": "ru-RU",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0 Safari/537.36",
"Region": "Москва",
"Country": "RU"
}
]
}
Возвращает клики по ссылкам в письмах сервера ключа, новые первыми. Каждый клик — отдельная запись.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи». |
| count |
Количество кликов в ответе, от 1 до 500. По умолчанию 100. |
|---|---|
| offset |
Сколько записей пропустить. По умолчанию 0. Сумма count и offset — не больше 10000. |
| recipient |
Email получателя, точное совпадение. |
| tag |
Тег письма. |
| messagestream |
ID канала. |
| fromdate |
Начало периода: дата |
| todate |
Конец периода включительно. Дата без времени — до конца дня. По умолчанию — сейчас. |
| TotalCount | integer |
Сколько кликов подходит под фильтры. |
|---|---|---|
| Clicks | array |
Клики. |
| Clicks[].Recipient | string |
Email получателя. |
| Clicks[].ReceivedAt | string |
Время клика, |
| Clicks[].Tag | string |
Тег письма. |
| Clicks[].From | string |
Email отправителя. |
| Clicks[].MessageID | string |
ID письма. |
| Clicks[].Subject | string |
Тема письма. |
| Clicks[].MessageStream | string |
ID канала. У писем, отправленных до появления канала по умолчанию, бывает |
| Clicks[].RecordType | string |
Всегда |
| Clicks[].Os | string |
Операционная система. |
| Clicks[].Browser | string |
Браузер или почтовая программа. |
| Clicks[].Webservice | string |
Почтовый веб-сервис, если письмо открыто в веб-интерфейсе. |
| Clicks[].UserAgent | string |
Строка User-Agent. |
| Clicks[].Language | string |
Язык браузера. |
| Clicks[].Region | string |
Регион. |
| Clicks[].Country | string |
Код страны. |
| Clicks[].OriginalLink | string |
Ссылка, по которой перешел получатель. |
curl "https://api.haskimail.ru/messages/clicks?count=50&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": 1,
"Clicks": [
{
"Recipient": "ivan@example.com",
"ReceivedAt": "2026-10-07 14:53:02",
"Tag": "orders",
"From": "shop@example.com",
"MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
"Subject": "Ваш заказ №1042 оформлен",
"MessageStream": "2081",
"RecordType": "Click",
"OriginalLink": "https://example.com/orders/1042",
"Os": "Windows",
"Browser": "Chrome",
"Webservice": "",
"Language": "ru-RU",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0 Safari/537.36",
"Region": "Москва",
"Country": "RU"
}
]
}
Период не ограничен: возвращаются все записи по письму. Фильтры recipient, tag и messagestream работают так же, как в общем списке.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ. Он есть в настройках сервера на вкладке «API-ключи». |
| messageid | обязательный ID письма — MessageID из ответа на отправку. |
|---|
| count |
Количество кликов в ответе, от 1 до 500. По умолчанию 100. |
|---|---|
| offset |
Сколько записей пропустить. По умолчанию 0. Сумма count и offset — не больше 10000. |
| recipient |
Email получателя, точное совпадение. |
| tag |
Тег письма. |
| messagestream |
ID канала. |
| TotalCount | integer |
Сколько кликов у письма. |
|---|---|---|
| Clicks | array |
Клики — поля как в «Кликах по ссылкам». |
curl "https://api.haskimail.ru/messages/clicks/{messageid}?count=10&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": 1,
"Clicks": [
{
"Recipient": "ivan@example.com",
"ReceivedAt": "2026-10-07 14:53:02",
"Tag": "orders",
"From": "shop@example.com",
"MessageID": "6f1c0b2d9e8a4f7b3c5d2e1a0b9c8d7e",
"Subject": "Ваш заказ №1042 оформлен",
"MessageStream": "2081",
"RecordType": "Click",
"OriginalLink": "https://example.com/orders/1042",
"Os": "Windows",
"Browser": "Chrome",
"Webservice": "",
"Language": "ru-RU",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0 Safari/537.36",
"Region": "Москва",
"Country": "RU"
}
]
}
Возвращает входящие письма сервера за последние 45 дней, новые первыми.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ: входящие письма принадлежат серверу. Ключ есть в настройках сервера на вкладке «API-ключи». |
| count |
Количество писем в ответе, от 1 до 500. По умолчанию 100. |
|---|---|
| offset |
Сколько писем пропустить. По умолчанию 0. |
| recipient |
Адрес, на который доставлено письмо (OriginalRecipient). |
| fromemail |
Email отправителя. |
| subject |
Часть темы письма. |
| mailboxhash |
Значение MailboxHash. |
| status |
Статус: |
| fromdate |
Письма, полученные начиная с даты/времени, например 2026-09-01T12:00:00. Время МСК. |
| todate |
Письма, полученные до даты/времени включительно. Дата без времени — до конца дня. |
curl "https://api.haskimail.ru/messages/inbound?count=50&offset=0&status=failed" \
-X GET \
-H "Accept: application/json" \
-H "X-Haskimail-Server-Token: server token"
HTTP/1.1 200 OK
Content-Type: application/json
{
"TotalCount": 1,
"InboundMessages": [
{
"From": "ivan@example.com",
"FromName": "Иван Петров",
"FromFull": { "Email": "ivan@example.com", "Name": "Иван Петров", "MailboxHash": "" },
"To": "\"Поддержка\" <451d9b70cf9364d23ff6f9d51d870251+ticket-42@inbound.haskimail.ru>",
"OriginalRecipient": "451d9b70cf9364d23ff6f9d51d870251+ticket-42@inbound.haskimail.ru",
"Subject": "Re: Заказ №42",
"Date": "2026-09-29T14:05:14+03:00",
"MailboxHash": "ticket-42",
"Tag": "",
"MessageID": "22c74902-a0c1-4511-804f-341342852c90",
"MessageStream": "2081",
"Status": "Failed",
"AttachmentsCount": 1
}
]
}
Возвращает письмо целиком — те же поля, что приходят на вебхук, но без содержимого вложений, а также статус и его причину: BlockedReason для заблокированных, FailureReason для писем с ошибкой или запланированным повтором.
Если письмо пропускали мимо правил (кнопкой в интерфейсе или методом bypass), это видно по полям BypassedAt — когда, BypassedBy — кто (email пользователя или API) и BypassedBlockReason — какую блокировку обошли. У писем, которые не пропускали, BypassedAt равен null, остальные два поля — пустые строки.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ: входящие письма принадлежат серверу. Ключ есть в настройках сервера на вкладке «API-ключи». |
| messageid | обязательный ID входящего письма — |
|---|
curl "https://api.haskimail.ru/messages/inbound/{messageid}/details" \
-X GET \
-H "Accept: application/json" \
-H "X-Haskimail-Server-Token: server token"
HTTP/1.1 200 OK
Content-Type: application/json
{
"FromName": "Иван Петров",
"MessageStream": "2081",
"From": "ivan@example.com",
"OriginalRecipient": "451d9b70cf9364d23ff6f9d51d870251+ticket-42@inbound.haskimail.ru",
"Subject": "Re: Заказ №42",
"MessageID": "22c74902-a0c1-4511-804f-341342852c90",
"MailboxHash": "ticket-42",
"TextBody": "Спасибо, все получил!",
"StrippedTextReply": "Спасибо, все получил!",
"Attachments": [
{ "Name": "check.pdf", "ContentType": "application/pdf", "ContentLength": 48213, "ContentID": "" }
],
"Status": "Failed",
"BlockedReason": "",
"FailureReason": "Вебхук ответил HTTP 500",
"ReceivedAt": "2026-09-29T14:05:14+03:00",
"ProcessedAt": null,
"BypassedAt": null,
"BypassedBy": "",
"BypassedBlockReason": ""
}
Отправляет письмо в статусе Blocked на вебхук, не применяя правила блокировки и спам-фильтр. Письмо уходит в течение минуты. Если письмо заблокировано из-за исчерпанного лимита, сначала пополните его.
Haskimail запоминает, когда и кем письмо пропущено и какая блокировка была обойдена, — это видно в деталях письма (поля BypassedAt, BypassedBy со значением API, BypassedBlockReason) и в карточке письма в интерфейсе.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ: входящие письма принадлежат серверу. Ключ есть в настройках сервера на вкладке «API-ключи». |
| messageid | обязательный ID входящего письма — |
|---|
curl "https://api.haskimail.ru/messages/inbound/{messageid}/bypass" \
-X PUT \
-H "Accept: application/json" \
-H "X-Haskimail-Server-Token: server token"
HTTP/1.1 200 OK
Content-Type: application/json
{
"ErrorCode": 0,
"Message": "Successfully bypassed message: 22c74902-a0c1-4511-804f-341342852c90"
}
Заново отправляет на вебхук письмо в статусе Failed: счетчик попыток сбрасывается, при неудаче снова действует расписание повторов.
| Accept | обязательный application/json |
|---|---|
| X-Haskimail-Server-Token | обязательный Серверный API-ключ: входящие письма принадлежат серверу. Ключ есть в настройках сервера на вкладке «API-ключи». |
| messageid | обязательный ID входящего письма — |
|---|
curl "https://api.haskimail.ru/messages/inbound/{messageid}/retry" \
-X PUT \
-H "Accept: application/json" \
-H "X-Haskimail-Server-Token: server token"
HTTP/1.1 200 OK
Content-Type: application/json
{
"ErrorCode": 0,
"Message": "Successfully rescheduled failed message: 22c74902-a0c1-4511-804f-341342852c90"
}