UniSendy

Документация API

REST API Unisendy. Базовый URL: https://unisendy.ru/api/v1. Ключ — в кабинете → API.

Авторизация

Передавайте API-ключ в заголовке одним из способов:

Authorization: YOUR_API_KEY
Authorization: Bearer YOUR_API_KEY
X-Api-Key: YOUR_API_KEY

Тело запроса: application/json или multipart/form-data. Ответы — JSON.

Пример без ключа

curl "https://unisendy.ru/api/v1/user"
Ответ · 401
{ "error": "Unauthorized" }

Ошибки

При ошибке API возвращает JSON с полем error и соответствующий HTTP-код.

401Unauthorized

Нет заголовка Authorization / X-Api-Key или ключ неверный.

{ "error": "Unauthorized" }
400Bad Request

Не хватает обязательных полей или данные некорректны (например, from не ваш ящик).

{ "error": "Укажите from, to и subject" }
404Not Found

Ящик, письмо или запись журнала не найдены.

{ "error": "Письмо не найдено" }
500Server Error

Ошибка SMTP/IMAP или внутренняя ошибка сервера. Текст в поле error.

{ "error": "…" }

HTTP-уведомления

URL настраиваются в разделе API. При отправке через API вызываются события sent и error — POST JSON на ваш URL.

Пример тела webhook (sent)
{
  "event": "sent",
  "id": "cmsadzp3i0001w01s98bdm7ew",
  "messageId": "<39b8bb26-5fc2-04ed-be1d-cab584625a3e@shopeek.ru>",
  "from": "info@shopeek.ru",
  "to": "client@example.com",
  "subject": "Unisendy API test",
  "tag": "api-test",
  "timestamp": "2026-08-01T13:07:57.774Z"
}

Методы

POSThttps://unisendy.ru/api/v1/smtp/send

Отправка письма

Отправляет письмо с вашего ящика Unisendy. Поле from должно совпадать с существующим ящиком аккаунта.

ПараметрОбяз.Описание
fromдаEmail отправителя (ваш ящик)
toдаEmail получателя
subjectдаТема письма
htmlнетHTML-версия (нужен html или text)
textнетТекстовая версия
nameнетИмя отправителя
bccнетСкрытая копия
replyнетАдрес для ответа (Reply-To)
tagнетМетка для фильтрации в журнале
filesнетВложения JSON: [{"name":"a.pdf","body":"<base64>"}]. Суммарно до 9 МБ (лимит сервера 10 МБ).
headersнетДоп. заголовки JSON: [{"X-Custom":"value"}]
Запрос
curl -X POST "https://unisendy.ru/api/v1/smtp/send" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "info@shopeek.ru",
    "to": "client@example.com",
    "subject": "Unisendy API test",
    "html": "<p>Тест API Unisendy</p>",
    "text": "Тест API Unisendy",
    "name": "Отдел продаж",
    "tag": "api-test"
  }'
Ответ · 200
{
  "ok": true,
  "id": "cmsadzp3i0001w01s98bdm7ew",
  "messageId": "<39b8bb26-5fc2-04ed-be1d-cab584625a3e@shopeek.ru>",
  "status": "sent"
}
Ошибки
// 400 — нет обязательных полей
{ "error": "Укажите from, to и subject" }

// 400 — from не ваш ящик
{ "error": "Ящик отправителя не найден или недоступен. from должен быть вашим ящиком Unisendy." }

// 500 — ошибка SMTP
{ "error": "…" }
GEThttps://unisendy.ru/api/v1/user

Профиль аккаунта

Информация об аккаунте, тарифные лимиты и краткая статистика.

Запрос
curl "https://unisendy.ru/api/v1/user" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "id": "cms95ydu40000w00k4eovcbr3",
  "email": "admin@unisendy.ru",
  "name": "Unisendy Admin",
  "plan": "BUSINESS",
  "planExpiresAt": "2027-07-31T16:35:13.419Z",
  "limits": {
    "domains": 5,
    "mailboxes": 50,
    "storageGb": 50
  },
  "stats": {
    "domains": 1,
    "mailboxes": 2,
    "apiSent": 1
  }
}
GEThttps://unisendy.ru/api/v1/user/domain

Список доменов

Домены аккаунта и статус DNS (MX, SPF, DKIM, DMARC).

Запрос
curl "https://unisendy.ru/api/v1/user/domain" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "domains": [
    {
      "id": "cms968mvg0001w0qkvjfrpcul",
      "name": "shopeek.ru",
      "verified": true,
      "status": "VERIFIED",
      "mxOk": true,
      "spfOk": true,
      "dkimOk": true,
      "dmarcOk": true,
      "createdAt": "2026-07-31T16:43:11.692Z"
    }
  ]
}
GEThttps://unisendy.ru/api/v1/mailboxes

Список ящиков

Все почтовые ящики аккаунта.

Запрос
curl "https://unisendy.ru/api/v1/mailboxes" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "mailboxes": [
    {
      "id": "cmsa36k840001w05xqnlci876",
      "email": "info@shopeek.ru",
      "displayName": "Информационный отдел",
      "active": true,
      "domain": "shopeek.ru"
    }
  ]
}
GEThttps://unisendy.ru/api/v1/mail/messages

Список писем

Письма из указанного ящика (по умолчанию INBOX).

ПараметрОбяз.Описание
mailboxдаEmail или id ящика
folderнетПапка, по умолчанию INBOX
limitнетЛимит (макс. 100)
Запрос
curl "https://unisendy.ru/api/v1/mail/messages?mailbox=info@shopeek.ru&limit=3" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "mailbox": "info@shopeek.ru",
  "folder": "INBOX",
  "messages": [
    {
      "uid": 6,
      "folder": "INBOX",
      "subject": "Re: Вопрос",
      "from": "Служба заботы <info@shopeek.ru>",
      "to": "svamiddr <svamiddr@gmail.com>",
      "date": "2026-08-01T11:00:57.000Z",
      "seen": true,
      "messageId": "<bx.mail.6a6dd1e8.ed15a2@…>",
      "snippet": ""
    }
  ]
}
Ошибки
// 400 — не указан mailbox
{ "error": "Укажите mailbox (email или id ящика)" }

// 404 — ящик не найден
{ "error": "Ящик не найден или пароль недоступен" }
GEThttps://unisendy.ru/api/v1/mail/messages/:uid

Получить письмо

Полное содержимое письма по IMAP UID.

ПараметрОбяз.Описание
mailboxдаEmail или id ящика (query)
folderнетПапка, по умолчанию INBOX
Запрос
curl "https://unisendy.ru/api/v1/mail/messages/6?mailbox=info@shopeek.ru" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "mailbox": "info@shopeek.ru",
  "message": {
    "uid": 6,
    "folder": "INBOX",
    "messageId": "<bx.mail.6a6dd1e8.ed15a2@…>",
    "subject": "Re: Вопрос",
    "from": "\"Служба заботы\" <info@shopeek.ru>",
    "to": "\"svamiddr\" <svamiddr@gmail.com>",
    "date": "2026-08-01T11:00:57.000Z",
    "text": "Текст письма…",
    "html": "<div>HTML…</div>",
    "seen": true
  }
}
Ошибки
// 404
{ "error": "Письмо не найдено" }
GEThttps://unisendy.ru/api/v1/log/message

Журнал отправки

История писем, отправленных через API.

ПараметрОбяз.Описание
limitнетКол-во записей
offsetнетСмещение
fromнетФильтр по отправителю
toнетФильтр по получателю
tagнетФильтр по метке
statusнетsent | error
startDateнетYYYY-MM-DD
endDateнетYYYY-MM-DD
Запрос
curl "https://unisendy.ru/api/v1/log/message?limit=3&tag=api-test" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "total": 1,
  "limit": 3,
  "offset": 0,
  "messages": [
    {
      "id": "cmsadzp3i0001w01s98bdm7ew",
      "messageId": "<39b8bb26-5fc2-04ed-be1d-cab584625a3e@shopeek.ru>",
      "from": "info@shopeek.ru",
      "to": "svamiddr@gmail.com",
      "subject": "Unisendy API test",
      "tag": "api-test",
      "status": "sent",
      "error": null,
      "createdAt": "2026-08-01T13:07:57.774Z"
    }
  ]
}
GEThttps://unisendy.ru/api/v1/log/message/:id

Запись журнала

Одна запись журнала по id (поле id из ответа /smtp/send или /log/message).

Запрос
curl "https://unisendy.ru/api/v1/log/message/cmsadzp3i0001w01s98bdm7ew" \
  -H "Authorization: YOUR_API_KEY"
Ответ · 200
{
  "id": "cmsadzp3i0001w01s98bdm7ew",
  "messageId": "<39b8bb26-5fc2-04ed-be1d-cab584625a3e@shopeek.ru>",
  "from": "info@shopeek.ru",
  "to": "svamiddr@gmail.com",
  "subject": "Unisendy API test",
  "tag": "api-test",
  "status": "sent",
  "error": null,
  "createdAt": "2026-08-01T13:07:57.774Z"
}
Ошибки
// 404
{ "error": "Письмо не найдено" }