Обзор REST API TrekMail для разработчиков

Узнайте, как работает REST API TrekMail: аутентификация с bearer-токенами, доступ по тарифам, лимиты запросов и форматы ответов.

Сведения о статье

Тип, сложность, тарифы и дата последнего обновления.

Тип
Справочная статья
Сложность
Средний уровень
Тарифы
Nano · Starter · Pro · Agency
Обновлено
23 авг 2026 г.

API TrekMail позволяет управлять доменами, почтовыми ящиками, переадресацией, DNS, переносом почты и операциями веб-почты из HTTP-клиента или с помощью ИИ-агента. Сюда входят чтение и отправка писем, черновики, планирование отправки, папки, контакты, календари, идентификаторы отправителя, шаблоны и заблокированные отправители. Аутентифицированные запросы используют bearer-токен, ответы возвращаются в JSON, а действия API регистрируются в журнале аудита.

Что вы получаете

  • REST API v1 с форматом запросов и ответов JSON.
  • Аутентификация с bearer-токеном: для аутентифицированных вызовов API не используются cookie или сессии.
  • Ключи идемпотентности для операций записи, где они обязательны, чтобы повторные попытки не создавали дубликаты.
  • Ограничение частоты запросов для каждого токена с заголовками Retry-After.
  • Журнал аудита, доступный в панели управления в разделе ИИ-агенты и API → Журнал аудита.
  • Сервер MCP с каталогом, отфильтрованным по учетным данным, транспорту и настройкам безопасности текущего подключения. Поэтому узкое подключение проекта видит только доступные ему инструменты.
  • Псевдонимы доменов: связывайте адреса только для приема на дополнительном домене с теми же локальными частями на основном домене, учитывая сохраненное и фактическое состояния доставки и безопасное отключение. См. Псевдонимы доменов через API и MCP.
  • Архитектура с двумя токенами: отдельные операционные токены для инфраструктуры и токены сообщений для полного набора почтовых операций, включая чтение, отправку, создание черновиков, планирование, контакты, календари, идентификаторы отправителя, шаблоны и папки.
  • Данные об исходящей доставляемости и возвратах: получайте сводку об отправленных, доставленных, окончательно и временно возвращенных письмах из панели управления, а также SMTP-коды и ответы для каждого получателя. См. Доставляемость и возвраты.
  • Использование хранилища почтовых ящиков: list_mailboxes и get_mailbox возвращают used_mb, quota_mb, allocation_mb и is_pooled, поэтому агент может обнаружить ящики, приближающиеся к лимиту, без доступа к панели управления.
  • Администрирование White Label: проверяйте настройку, управляйте брендингом для каждого домена, приглашайте клиентов, контролируйте роли и домены, приостанавливайте или восстанавливайте доступ и просматривайте активность через API или MCP. См. руководство по брендингу и руководство по управлению командой.

API Drive и автоматизация файлов

Drive входит в общедоступную поверхность API. Она охватывает пространство Drive аккаунта и пространства Drive почтовых ящиков, использование хранилища, просмотр папок, загрузку, управление файлами и папками, корзину, массовые действия, публичные ссылки общего доступа, управление паролями устройств синхронизации и доступный только для чтения статус дополнения Drive Storage.

Drive использует одиннадцать областей действия операционного токена: drive:account:read, drive:account:write, drive:account:share, drive:account:purge, drive:mailbox:read, drive:mailbox:write, drive:mailbox:share, drive:mailbox:purge, drive:addon:read, drive:devices:read и drive:devices:write. Операции оплаты для дополнения Drive, включая покупку, изменение размера и отмену, остаются доступными только в панели управления и не предоставляются как операции записи API или MCP.

Начните с обзора API Drive или быстрого старта API Drive.

Архитектура с двумя токенами

API использует два независимых типа токенов. В зависимости от задачи можно использовать один или оба:

Тип токена Префикс Что он открывает
Операционный токен tm_live_ Инструменты аккаунта и инфраструктуры: White Label, домены, DNS, почтовые ящики, приглашения, Drive, переносы, SMTP, обращения, оплата и Cloudflare
Токен сообщений tm_msg_ Операции веб-почты: сообщения, папки, вложения, черновики, запланированная отправка, отметки спама и не спама, массовые действия, контакты, группы контактов, календарь, помощники составления писем, идентификаторы отправителя, шаблоны и заблокированные отправители

У операционных токенов и токенов сообщений разные области действия и отдельные лимиты запросов. Один агент может одновременно использовать оба токена, если настроить их в окружении сервера MCP.

Токены сообщений доступны на тарифах Pro и Agency.

Перед началом работы

  • Все тарифы имеют доступ к API:
    • Nano: Email Verifier. Подключите дополнение Drive Storage для полного доступа к API и MCP Drive.
    • Starter: полный Drive, полный Email Verifier и доступ только для чтения во всех остальных областях инфраструктуры. Для соответствующих операций записи используйте панель управления.
    • Pro / Agency: полный доступ к базовому API, включая токены сообщений. Области действия White Label добавляются, пока действует пробный период или платное дополнение.
  • Подключаете ИИ-агента? Добавьте https://trekmail.net/mcp как удаленный сервер MCP в любом совместимом клиенте. Если клиент поддерживает авторизацию через браузер, токен вручную не нужен. В статье Подключение ИИ-агентов (MCP) описаны удаленный вариант, CLI/приложение для компьютера, мост и самостоятельный хостинг.
  • Создаете собственную интеграцию? Создайте токен tm_live_ в разделе ИИ-агенты и API → Токены → Создать токен и передавайте его как Authorization: Bearer …. См. Создание токенов API и управление ими.
  • Впервые работаете с API? Нажмите Начать обзор в верхней части страницы ИИ-агенты и API, чтобы пройти краткое знакомство со способами подключения, управлением токенами, подключенными приложениями и журналом аудита.

Как работает аутентификация

Каждый запрос должен содержать ваш токен в заголовке Authorization:

Authorization: Bearer tm_live_abc123...

Операционные токены начинаются с tm_live_, а токены сообщений с tm_msg_. Оба показываются один раз при создании и больше не могут быть отображены.

Если токен отсутствует, отозван или просрочен, API возвращает 401 с кодом ошибки unauthenticated.

Базовый URL и управление версиями

Все конечные точки находятся по адресу:

https://trekmail.net/api/v1

Базовый URL указан в разделе Краткая справка панели ИИ-агенты и API. Версия входит в путь URL. Если когда-либо появится v2, v1 продолжит работать.

Формат ответа

Успешные ответы возвращают JSON с ключом data для одного ресурса или список с постраничной навигацией:

{
  "data": [
    { "id": 1, "domain": "example.com", "status": "active" }
  ],
  "links": { "next": "...", "prev": null },
  "meta": { "current_page": 1, "last_page": 1, "total": 1 }
}

Ответы с ошибками имеют единообразную структуру:

{
  "error": {
    "code": "unauthenticated",
    "message": "Invalid or expired API token",
    "hint": "Check that your token is correct and has not been revoked.",
    "request_id": "req_abc123",
    "retryable": false
  }
}

Идентификаторы запросов

Каждый ответ содержит заголовок X-Request-Id. Также можно передать собственный идентификатор в заголовке запроса X-Request-Id. Он будет возвращен в ответе и записан в журнал аудита.

Лимиты запросов

Для каждого токена действует поминутное ограничение частоты запросов. При достижении лимита API возвращает 429 с заголовком Retry-After, который указывает, когда можно повторить запрос.

Для разрушительных операций (намерений удаления) установлен дополнительный дневной лимит на токен и пауза между последовательными удалениями.

Для операций записи при переносе (запуск, отмена, повторная попытка) действует отдельный лимит в 10 запросов в минуту на токен, а также общий лимит одновременных операций на сервере, который возвращает 503, если во всей системе выполняется слишком много переносов.

Токены сообщений используют отдельные лимиты. По умолчанию разрешено 30 запросов чтения в минуту на токен, 60 запросов отправки в минуту на токен, 5,000 успешных чтений в день на токен и 100 отправок через API в день для одного почтового ящика. Второй счетчик безопасности отправки по умолчанию допускает 500 операций на токен в день; обычно раньше срабатывает меньший лимит почтового ящика. Эти меры безопасности API не заменяют ограничения управляемого SMTP вашего тарифа или собственные ограничения внешнего поставщика.

Идемпотентность

Конечные точки, изменяющие состояние и отмеченные как идемпотентные, требуют заголовок Idempotency-Key. Сюда относятся операции создания, обновления, отправки и удаления, где автоматическая повторная попытка иначе могла бы продублировать работу. Подобные чтению действия POST, например определение поставщика или проверка подключения, не требуют этого заголовка; уточняйте в таблице конечных точек или спецификации OpenAPI. Если отправить тот же ключ с тем же телом, API воспроизведет исходный ответ без создания дубликатов.

Idempotency-Key: create-mailbox-alice-2024

Если отправить тот же ключ с другим телом, API вернет 409 Conflict.

Распределение хранилища почтового ящика

Каждая конечная точка, создающая почтовый ящик или приглашение, POST /api/v1/mailboxes, /api/v1/mailboxes:bulk, /api/v1/mailboxes/invites, /api/v1/mailboxes/invites:bulk, принимает необязательное целое число storage_allocation_mb.

Значение Значение параметра
Не указано (или null) Почтовый ящик использует общий пул аккаунта (по умолчанию).
Положительное целое число (MB) Почтовый ящик получает выделенное хранилище. Указанный объем резервируется из пула аккаунта только для этого ящика.

Распределение проверяется по фактическому свободному пулу с вычетом существующих выделенных почтовых ящиков и ожидающих выделенных приглашений. Массовые конечные точки дополнительно проверяют сумму объемов во всей партии и отклоняют всю партию с ошибкой 422 storage_pool_exceeded, если она приведет к перерасходу. Пул обновляется после удаления выделенного почтового ящика, активации приглашения (объем переходит новому ящику) и истечения срока ожидающего приглашения.

Для приглашений объем записывается в коде доступа и при активации копируется в новый почтовый ящик. Если к моменту активации в пуле уже недостаточно места для запрошенного объема (например, другой администратор тем временем увеличил выделенный объем), новый ящик без ошибки переводится на общий пул вместо отказа, а получатель видит уведомление на странице успешной активации.

Доступ почтового ящика к Drive

У каждого почтового ящика есть уровень drive_access, определяющий доступ пользователя к Drive в веб-почте. Он возвращается в ресурсе почтового ящика и задается через PATCH /api/v1/mailboxes/{id} или для нескольких ящиков сразу через POST /api/v1/mailboxes:drive-access.

Значение Значение параметра
full Все возможности: вкладка Drive, загрузка файлов и общий доступ, поиск файлов и синхронизация с компьютером. Значение по умолчанию.
attachments_only В веб-почте нет Drive и синхронизации. Отправка продолжает работать: файл больше порога уходит как ссылка для скачивания, а его копия удаляется после срока хранения.
disabled Drive недоступен, а файл больше порога вообще нельзя прикрепить.

Хранилище объединено в общий пул аккаунта, поэтому этот параметр определяет, какую часть пула один пользователь может заполнить файлами.

Приостановка входа в почтовый ящик

Вход в почтовый ящик можно приостановить, сохранив прием почты: веб-почта, IMAP, SMTP и пароли устройств перестают работать, а открытые сессии завершаются, но доставка не меняется, поэтому возвратов нет и все письма будут ждать восстановления входа. Установите это через POST /api/v1/mailboxes/{id}:suspend-login (а отмените через :resume-login) или для нескольких ящиков через POST /api/v1/mailboxes:login-access.

Ресурс почтового ящика сообщает об этом полями login_suspended, login_suspended_at и login_suspended_reason. Проверяйте login_suspended, чтобы узнать, может ли пользователь войти, а status, чтобы узнать, работает ли сам ящик: приостановленный ящик сохраняет состояние active, поскольку продолжает принимать почту. :pause действует иначе: устанавливает status в disabled и также останавливает доставку.

См. Приостановка входа в почтовый ящик через API.

Массовая конечная точка принимает ровно один селектор, mailbox_ids, domain_id или all, и возвращает результат своих действий:

{ "data": { "drive_access": "attachments_only", "matched": 24, "updated": 21, "skipped_shared": 3 } }

Используйте domain_id как селектор, когда один домен соответствует одному клиенту. Почтовые ящики, уже имеющие запрошенный уровень, учитываются как matched, но не как updated, поэтому вызов можно безопасно повторять.

Общие почтовые ящики отклоняются одиночной конечной точкой с ошибкой 422 drive_access_not_applicable, а массовая конечная точка пропускает и подсчитывает их: у них нет собственного пользователя веб-почты, участники открывают их со своим уровнем доступа, поэтому значение в строке общего ящика ничего бы не изменило.

Ограничение действует и в API, и в интерфейсе. Пространство Drive ограниченного почтового ящика отсутствует в GET /api/v1/drive/spaces, его файлы возвращают 404 при запросе по идентификатору, а создать для него устройство синхронизации нельзя.

Адреса переадресации

GET /api/v1/domains/{id}/forwarding-addresses возвращает не только список, поскольку два свойства адреса переадресации не видны в самом адресе:

{
  "data": [ { "id": 8, "address": "sales@acme.com", "local_part": "sales",
              "domain_id": 4, "recipients": ["team@example.net"], "is_active": true } ],
  "limits": { "used": 1, "max": 100, "recipients_per_address": 15 },
  "delivery": { "active": true, "requires_plan": "pro",
                "paused_until": null, "paused_reason": null }
}
  • limits.max задается для домена и зависит от тарифа: 100 на Pro, 300 на Agency и 25 сохраненных, но неактивных адресов на Nano или Starter.
  • delivery.active показывает, пересылают ли эти правила почту прямо сейчас. Значение равно false на тарифе ниже requires_plan и остается false, пока установлено paused_until (аккаунт превысил почасовой лимит отправки; см. Лимиты отправки по тарифам). Правило может иметь is_active: true и все равно не доставлять почту, поэтому перед сообщением о работе переадресации проверяйте delivery, а не только is_active.

Создание разрешено даже на тарифе, который не поддерживает доставку, и возвращает 201: правило сохраняется и начинает работать после повышения тарифа. Так же работает панель управления, где такие правила отображаются как сохраненные и неактивные.

Отказы возвращаются с кодом 422, а error.code получает значение validation_error или limit_exceeded. Причиной может быть уже занятый в домене адрес, получатель в том же домене (что создало бы цикл), домен получателя без рабочего MX или исчерпанный лимит домена.

Запросы POST и DELETE к этим конечным точкам требуют Idempotency-Key, а PATCH не требует.

История доставки

GET /api/v1/domains/{id}/forwarding-addresses/{addressId}/log возвращает фактический результат обработки недавней почты, начиная с самых новых событий:

{
  "data": [
    { "id": 91, "occurred_at": "2026-07-27T09:12:04+00:00", "outcome": "delivered",
      "from": "rfq@northgatesupply.com", "to": "sales@example.net",
      "smtp_code": "2.0.0", "smtp_response": "250 2.0.0 OK" }
  ],
  "address": "sales@acme.com",
  "window": { "retention_days": 30, "max_events": 200 }
}

Значение outcome может быть delivered, deferred (временная ошибка, попытки продолжаются), failed (сервер получателя отклонил письмо) или blocked. Последнее означает, что наш спам-фильтр остановил сообщение до переадресации, поэтому оно вообще не дошло до получателя. Если считать blocked возвратом, кто-то будет искать на принимающем сервере проблему, возникшую на нашей стороне.

limit (от 1 до 200, по умолчанию 100) является единственным параметром. Окно соответствует сроку хранения тарифа: 30 дней на Agency и 7 дней на остальных тарифах. Более старых данных нет, поскольку события переадресации удаляются.

Общие почтовые ящики команды

Общий почтовый ящик представляет собой командный входящий ящик, например support@ или sales@, который участники открывают через свои обычные аккаунты почтовых ящиков в Webmail, а при включенном нативном доступе также как делегированную папку IMAP. У него нет общего пароля или отдельного входа. Доступ одинаков для всех: каждый участник может читать, а единый флаг can_send определяет, может ли он отвечать от имени адреса (true) или имеет доступ только для чтения (false). Ролей участников нет.

GET /api/v1/mailboxes и GET /api/v1/mailboxes/{id} теперь возвращают mailbox_type ("user" или "shared") и логическое поле is_shared; общие почтовые ящики также содержат shared_member_count. Используйте эти поля, чтобы отличить командный входящий ящик от обычного перед вызовом конечных точек участников.

Конечная точка Метод Требуемая область Что она делает
/api/v1/mailboxes/{id}/members GET mailboxes:read Перечисляет участников общего почтового ящика (для каждого: member_mailbox_id, email, can_read, can_send)
/api/v1/mailboxes/{id}/members POST mailboxes:write Добавляет участника, тело {member_mailbox_id, can_send?} (по умолчанию can_send равно true)
/api/v1/mailboxes/{id}/members/{member} PATCH mailboxes:write Переключает право участника отвечать, тело {can_send}
/api/v1/mailboxes/{id}/members/{member} DELETE mailboxes:write Удаляет участника (в общем почтовом ящике всегда остается хотя бы один)
/api/v1/shared-mailboxes POST mailboxes:create Создает общий почтовый ящик, тело {domain_id, local_part, display_name, member_mailbox_ids[], storage_shared?, storage_mb?}
/api/v1/mailboxes/{id}/convert-to-shared POST mailboxes:write Преобразует существующий почтовый ящик в общий, тело {member_mailbox_ids[]} (меняет старый пароль, чтобы с ним больше нельзя было войти; возвращает 202 conversion_pending с автоматической повторной попыткой, если синхронизация серверной части еще не подтверждена)
/api/v1/mailboxes/{id}/convert-to-regular POST mailboxes:write Преобразует общий почтовый ящик обратно в обычный, тело {password} (удаляет участников и устанавливает новый пароль для входа)

Конечные точки участников используют существующие области mailboxes:read / mailboxes:write. Отдельной области для общих почтовых ящиков нет.

Чтобы узнать о нативном доступе из почтового приложения, вызовите GET /api/v1/mailboxes/{member_mailbox_id}/client-setup для обычного почтового ящика участника. Объект shared_mailboxes сообщает устойчивую готовность нативного доступа, фактическую готовность Send As и ее причину, точные пути Inbox/Sent/Archive/Junk и разрешенные операции. can_send означает назначенное разрешение Может отвечать, но не доказывает, что SMTP сейчас готов. Конечная точка никогда не возвращает пароль. Вызов с идентификатором общего почтового ящика возвращает 422 direct_login_unavailable, потому что общий адрес не может проходить аутентификацию напрямую.

Удаление участника, изменение can_send или преобразование общего почтового ящика в обычный синхронизирует разрешения почтового сервера, когда включен нативный доступ. Ответ 503 native_access_sync_failed можно повторить; он гарантирует, что членство, разрешение или тип почтового ящика остались неизменными, а операция не была применена частично.

Доступные конечные точки

Для Drive существует отдельный справочник, который здесь не повторяется, см. Обзор API Drive. Конечные точки SMTP на уровне аккаунта, сохраненные для обратной совместимости, описаны в разделе Маршрутизация SMTP для домена, а не перечислены как актуальные.

Конечная точка Метод Требуемая область
/api/v1/domains GET domains:read
/api/v1/domains/{id} GET domains:read
/api/v1/domains/{id}/matching-addresses GET domains:read
/api/v1/domains/{id}/matching-addresses PUT domains:write
/api/v1/domains/{id}/matching-addresses DELETE domains:write
/api/v1/domains/{id}/dns-requirements GET domains:dns:read
/api/v1/domains/{id}/dns-recheck POST domains:dns:recheck
/api/v1/domains/{id}/spam-metrics GET domains:read
/api/v1/domains/{id}/spam-metrics/summary GET domains:read
/api/v1/domains/{id}/deliverability GET domains:read
/api/v1/domains/{id}/bounces GET domains:read
/api/v1/domains/{id}/signature GET domains:read
/api/v1/domains/{id}/forwarding-addresses GET domains:read
/api/v1/domains/{id}/forwarding-addresses/{addressId}/log GET domains:read
/api/v1/dns-checks/{id} GET domains:dns:read
/api/v1/mailboxes GET mailboxes:read
/api/v1/mailboxes POST mailboxes:create
/api/v1/mailboxes/{id} PATCH mailboxes:write
/api/v1/mailboxes/invites POST mailboxes:invites:create
/api/v1/mailboxes/invites:bulk POST mailboxes:invites:create
/api/v1/mailboxes:bulk POST mailboxes:create
/api/v1/mailboxes/{id}/forwarding GET mailboxes:forwarding:read
/api/v1/mailboxes/{id}/forwarding PUT mailboxes:forwarding:write
/api/v1/mailboxes/{id}/rules GET mailboxes:rules:read
/api/v1/mailboxes/{id}/rules POST mailboxes:rules:write
/api/v1/mailboxes/{id}/rules/{ruleId} GET mailboxes:rules:read
/api/v1/mailboxes/{id}/rules/{ruleId} PUT mailboxes:rules:write
/api/v1/mailboxes/{id}/rules/{ruleId} DELETE mailboxes:rules:write
/api/v1/mailboxes/{id}/rules/reorder PATCH mailboxes:rules:write
/api/v1/mailboxes/{id}/auto-reply GET mailboxes:auto-reply:read
/api/v1/mailboxes/{id}/auto-reply PUT mailboxes:auto-reply:write
/api/v1/mailboxes/{id}/sieve GET mailboxes:rules:read
/api/v1/mailboxes/{id}/sieve PUT mailboxes:rules:write
/api/v1/mailboxes/{id}:delete-intent POST mailboxes:delete
/api/v1/delete-intents/{id}:confirm POST mailboxes:delete
/api/v1/me GET (любой действительный операционный токен)
/api/v1/mailboxes/{id}/message-tokens POST mailboxes:message-tokens:manage
/api/v1/mailboxes/{id}/message-tokens GET mailboxes:message-tokens:manage
/api/v1/message-tokens/{id} DELETE mailboxes:message-tokens:manage
/api/v1/messages GET messages:read (токен сообщений)
/api/v1/messages/{uid} GET messages:read (токен сообщений)
/api/v1/messages/{uid} PATCH messages:write (токен сообщений)
/api/v1/messages/send POST messages:send (токен сообщений)
/api/v1/messages/_ping GET messages:read (токен сообщений, диагностика)
/api/v1/messages/{uid}/attachments/{index} GET messages:read (токен сообщений)
/api/v1/messages/{uid}/attachments GET messages:read (токен сообщений)
/api/v1/messages/{uid}/raw GET messages:read (токен сообщений; возвращает raw_base64, encoding, content_type, size_bytes)
/api/v1/messages/folders POST messages:write (токен сообщений)
/api/v1/messages/folders/{path} PATCH messages:write (токен сообщений)
/api/v1/messages/folders/{path} DELETE messages:write (токен сообщений)
/api/v1/messages/{uid}:spam POST messages:write (токен сообщений)
/api/v1/messages/{uid}:ham POST messages:write (токен сообщений)
/api/v1/messages/bulk POST messages:write (токен сообщений)
/api/v1/messages/folders:empty POST messages:write (токен сообщений)
/api/v1/messages/drafts POST messages:write (токен сообщений); возвращает uid + uidvalidity
/api/v1/messages/drafts/{uid} PUT messages:write (токен сообщений); требует uidvalidity черновика
/api/v1/messages/scheduled POST messages:send (токен сообщений)
/api/v1/messages/scheduled GET messages:read (токен сообщений)
/api/v1/messages/scheduled/{id} PATCH messages:send (токен сообщений)
/api/v1/messages/scheduled/{id} DELETE messages:send (токен сообщений)
/api/v1/messages/contacts GET messages:read (токен сообщений)
/api/v1/messages/contacts POST messages:write (токен сообщений)
/api/v1/messages/contacts/{id} PATCH messages:write (токен сообщений)
/api/v1/messages/contacts/{id} DELETE messages:write (токен сообщений)
/api/v1/messages/contacts/import POST messages:write (токен сообщений)
/api/v1/messages/contacts/export GET messages:read (токен сообщений)
/api/v1/messages/contact-groups GET messages:read (токен сообщений)
/api/v1/messages/contact-groups/{id}/members GET messages:read (токен сообщений)
/api/v1/messages/external-accounts GET messages:read (токен сообщений)
/api/v1/messages/external-accounts POST messages:write (токен сообщений)
/api/v1/messages/external-accounts/{id} PATCH messages:write (токен сообщений)
/api/v1/messages/external-accounts/{id} DELETE messages:write (токен сообщений)
/api/v1/messages/external-accounts/detect POST messages:read (токен сообщений)
/api/v1/messages/external-accounts/test POST messages:write (токен сообщений)
/api/v1/messages/external-accounts/{id}/test POST messages:write (токен сообщений)
/api/v1/messages/_me GET любой токен сообщений (самопроверка)
/api/v1/messages/calendar/events GET messages:read (токен сообщений)
/api/v1/messages/calendar/events POST messages:write (токен сообщений)
/api/v1/messages/calendar/events/{id} PATCH messages:write (токен сообщений)
/api/v1/messages/calendar/events/{id} DELETE messages:write (токен сообщений)
/api/v1/messages/{uid}/reply GET messages:read (токен сообщений)
/api/v1/messages/{uid}/reply-all GET messages:read (токен сообщений)
/api/v1/messages/{uid}/forward GET messages:read (токен сообщений)
/api/v1/messages/contact-groups POST messages:write (токен сообщений)
/api/v1/messages/contact-groups/{id} PATCH messages:write (токен сообщений)
/api/v1/messages/contact-groups/{id} DELETE messages:write (токен сообщений)
/api/v1/messages/contact-groups/{id}/members POST messages:write (токен сообщений)
/api/v1/messages/contact-groups/{id}/members DELETE messages:write (токен сообщений)
/api/v1/messages/identities GET messages:read (токен сообщений)
/api/v1/messages/identities POST messages:write (токен сообщений)
/api/v1/messages/identities/reply-policy PATCH messages:write (токен сообщений)
/api/v1/messages/identities/{id} PATCH messages:write (токен сообщений)
/api/v1/messages/identities/{id} DELETE messages:write (токен сообщений)
/api/v1/messages/templates GET messages:read (токен сообщений)
/api/v1/messages/templates POST messages:write (токен сообщений)
/api/v1/messages/templates/{id} PATCH messages:write (токен сообщений)
/api/v1/messages/templates/{id} DELETE messages:write (токен сообщений)
/api/v1/messages/blocked-senders GET messages:read (токен сообщений)
/api/v1/messages/blocked-senders POST messages:write (токен сообщений)
/api/v1/messages/blocked-senders/{id} DELETE messages:write (токен сообщений)
/api/v1/mailboxes/{id}/enable-imap POST mailboxes:write (операционный токен)
/api/v1/migrations/test-connection POST migrations:write
/api/v1/migrations GET migrations:read
/api/v1/migrations/{id} GET migrations:read
/api/v1/migrations POST migrations:write
/api/v1/migrations/{id}:cancel POST migrations:write
/api/v1/migrations/{id}:retry POST migrations:write
/api/v1/migrations/{id} DELETE migrations:write
/api/v1/migrations/bulk/preview POST migrations:write
/api/v1/migrations/bulk POST migrations:write
/api/v1/migrations/bulk GET migrations:read
/api/v1/migrations/bulk/{batch} GET migrations:read
/api/v1/migrations/bulk/{batch}:cancel POST migrations:write
/api/v1/migrations/bulk/{batch}:retry POST migrations:write
/api/v1/migrations/bulk/{batch}:resume POST migrations:write
/api/v1/migrations/bulk/{batch} DELETE migrations:write
/api/v1/migrations/bulk/{batch}/jobs/{job}/password PATCH migrations:write
/api/v1/account GET account:read
/api/v1/billing/status GET billing:read
/api/v1/billing/invoices GET billing:read
/api/v1/domains POST domains:create
/api/v1/domains/{id} DELETE domains:delete
/api/v1/domains/{id}/catch-all PATCH domains:write
/api/v1/domains/{id}/mail-hosting PATCH domains:write
/api/v1/domains/{id}/forwarding-addresses POST domains:write
/api/v1/domains/{id}/forwarding-addresses/{addressId} PATCH domains:write
/api/v1/domains/{id}/forwarding-addresses/{addressId} DELETE domains:write
/api/v1/domains/{id}/dkim:retry POST domains:write
/api/v1/domains/{id}/note PATCH domains:write
/api/v1/domains/{id}/signature PATCH domains:write
/api/v1/domains/{id}/branding GET domains:read
/api/v1/domains/{id}/branding PATCH domains:write
/api/v1/domains/{id}/branding/logo/{slot} PUT domains:write
/api/v1/domains/{id}/branding/logo/{slot} DELETE domains:write
/api/v1/domains/{id}/branding/verify-dns POST domains:write
/api/v1/domains/{id}/branding/preview POST domains:write
/api/v1/domains/{id}/branding DELETE domains:write
/api/v1/domains:bulk-add POST domains:create
/api/v1/mailboxes/{id} GET mailboxes:read
/api/v1/mailboxes/{id}/client-setup GET mailboxes:read
/api/v1/mailboxes/{id}/apple-mail-profile GET mailboxes:read
/api/v1/mailboxes/{id}/bounces GET mailboxes:read
/api/v1/mailboxes/{id}/password POST mailboxes:write
/api/v1/mailboxes/{id}/note PATCH mailboxes:write
/api/v1/mailboxes/{id}:pause POST mailboxes:write
/api/v1/mailboxes/{id}:restore POST mailboxes:delete
/api/v1/mailboxes/{id}:resume POST mailboxes:write
/api/v1/mailboxes/{id}:suspend-login POST mailboxes:write
/api/v1/mailboxes/{id}:resume-login POST mailboxes:write
/api/v1/mailboxes:login-access POST mailboxes:write
/api/v1/mailboxes:drive-access POST mailboxes:write
/api/v1/mailboxes/{id}/members GET mailboxes:read
/api/v1/mailboxes/{id}/members POST mailboxes:write
/api/v1/mailboxes/{id}/members/{member} PATCH mailboxes:write
/api/v1/mailboxes/{id}/members/{member} DELETE mailboxes:write
/api/v1/shared-mailboxes POST mailboxes:create
/api/v1/mailboxes/{id}/convert-to-shared POST mailboxes:write
/api/v1/mailboxes/{id}/convert-to-regular POST mailboxes:write
/api/v1/tickets GET tickets:read
/api/v1/tickets/{id} GET tickets:read
/api/v1/tickets/{id}/messages GET tickets:read
/api/v1/tickets POST tickets:write
/api/v1/tickets/{id}:mark-seen POST tickets:write
/api/v1/tickets/{id}/reply POST tickets:write
/api/v1/tickets/{id}:close POST tickets:write
/api/v1/domains/{id}/smtp GET smtp:read
/api/v1/domains/{id}/smtp PUT smtp:write
/api/v1/domains/{id}/smtp/profiles GET smtp:read
/api/v1/domains/{id}/smtp/profiles POST smtp:write
/api/v1/domains/{id}/smtp/profiles/{connectionId} PUT smtp:write
/api/v1/domains/{id}/smtp/profiles/{connectionId} DELETE smtp:write
/api/v1/domains/{id}/smtp:test POST smtp:write
/api/v1/domains/{id}/smtp:test-status/{jobId} GET smtp:read
/api/v1/smtp/default GET smtp:read
/api/v1/smtp/default PUT smtp:write
/api/v1/smtp (устаревшая, для обратной совместимости) GET smtp:read
/api/v1/smtp (устаревшая, для обратной совместимости) PUT smtp:write
/api/v1/smtp/{id} (устаревшая, для обратной совместимости) DELETE smtp:write
/api/v1/smtp:test (устаревшая, для обратной совместимости) POST smtp:write
/api/v1/smtp:test-status/{jobId} (устаревшая, для обратной совместимости) GET smtp:read
/api/v1/messages/{uid} DELETE messages:write (токен сообщений)
/api/v1/messages/{uid}:move POST messages:write (токен сообщений)
/api/v1/messages/folders GET messages:read (токен сообщений)
/api/v1/mailboxes/{id}/aliases GET mailboxes:read
/api/v1/mailboxes/{id}/aliases POST mailboxes:write
/api/v1/mailboxes/{id}/aliases/{aliasId} PATCH mailboxes:write
/api/v1/mailboxes/{id}/aliases/{aliasId} DELETE mailboxes:write
/api/v1/verify POST verify:write
/api/v1/verify/bulk POST verify:write
/api/v1/verify/bulk/{jobId} GET verify:read
/api/v1/verify/bulk/{jobId}/download GET verify:read
/api/v1/verify/credits GET verify:read
/api/v1/verify/bulk GET verify:read
/api/v1/verify/bulk/{jobId}/cancel POST verify:write
/api/v1/verify/bulk/{jobId} DELETE verify:write
/api/v1/cloudflare/validate-token POST cloudflare:read
/api/v1/cloudflare/zones POST cloudflare:read
/api/v1/cloudflare/connect POST cloudflare:write
/api/v1/cloudflare/preview POST cloudflare:read
/api/v1/cloudflare/apply POST cloudflare:write
/api/v1/cloudflare/tokens GET cloudflare:read
/api/v1/cloudflare/tokens/{id} DELETE cloudflare:delete

Конечные точки Cloudflare повторяют процесс из панели управления: проверка токена, перечисление зон, подключение доменов, предварительный просмотр изменений DNS и их применение. И /cloudflare/preview, и /cloudflare/apply принимают два необязательных параметра для каждого домена:

  • included_records: список разрешенных к изменению записей с ключами по идентификатору домена: { "123": ["mx_primary", "spf_record"] }. Пропущенные записи не затрагиваются, поэтому можно применить только MX и SPF, а к DKIM вернуться позже. Не указывайте поле, чтобы применить все записи.
  • confirmed_conflicts: когда предварительный просмотр отмечает существующую запись с другим значением, укажите здесь ее идентификатор (в той же форме { domain_id: [record_ids] }), чтобы разрешить замену.

Идентификаторы записей (mx_primary, spf_record, dkim_primary, dmarc_main, …) поступают непосредственно из ответа предварительного просмотра, поэтому обычный агент сначала вызывает предварительный просмотр и передает выбранные идентификаторы обратно в операцию применения:

POST /api/v1/cloudflare/apply
{
  "domain_ids": [123],
  "included_records": { "123": ["mx_primary", "spf_record"] },
  "confirmed_conflicts": { "123": ["dmarc_main"] }
}

Маршрутизация SMTP для домена и настройка аккаунта по умолчанию

SMTP настраивается для каждого домена. Каждый домен выбирает один из трех маршрутов: управляемую отправку платформы, сохраненный профиль SMTP (ваш собственный поставщик, многократно используемый для разных доменов) или вариант «не настроено». Единая настройка аккаунта по умолчанию определяет начальный маршрут новых доменов.

Конечные точки домена (smtp:read / smtp:write):

Конечная точка Метод Что она делает
/api/v1/domains/{id}/smtp GET Текущий маршрут: smtp_mode, effective_smtp_mode, profile, effective_profile
/api/v1/domains/{id}/smtp PUT Устанавливает маршрут, тело {smtp_mode: platform|profile|not_configured|inherit, smtp_connection_id?, set_account_default?, apply_to_all?}
/api/v1/domains/{id}/smtp/profiles GET Перечисляет сохраненные профили SMTP аккаунта
/api/v1/domains/{id}/smtp/profiles/{connectionId}/usage GET Перечисляет конкретные домены и адреса Send As, использующие профиль (без учетных данных)
/api/v1/domains/{id}/smtp/profiles POST Создает профиль и использует его для этого домена
/api/v1/domains/{id}/smtp/profiles/{connectionId} PUT Обновляет профиль (влияет на каждый использующий его домен)
/api/v1/domains/{id}/smtp/profiles/{connectionId} DELETE Удаляет профиль (использующие его домены переводятся на настройку аккаунта по умолчанию)
/api/v1/domains/{id}/smtp:test POST Проверяет маршрут, возвращает {job_id, poll_url}
/api/v1/domains/{id}/smtp:test-status/{jobId} GET Проверяет состояние тестовой задачи

Несколько замечаний о теле маршрута:

  • smtp_mode=platform выбирает управляемую отправку; smtp_mode=profile требует smtp_connection_id; not_configured очищает маршрут.
  • smtp_mode=inherit заставляет домен в реальном времени следовать настройке аккаунта по умолчанию: при каждом ее изменении этот домен меняется вместе с ней. Веб-интерфейс всегда записывает конкретные маршруты, но серверная часть по-прежнему поддерживает inherit, поэтому GET возвращает effective_smtp_mode, показывающий текущее фактическое значение inherit.
  • set_account_default: true является эквивалентом переключателя Сделать настройкой аккаунта по умолчанию в панели управления (новые домены начинают с этого маршрута). apply_to_all: true соответствует кнопке Применить ко всем доменам (однократно переводит каждый домен на этот маршрут).

Конечные точки настройки аккаунта по умолчанию (smtp:read / smtp:write):

Конечная точка Метод Что она делает
/api/v1/smtp/default GET Возвращает default_smtp_mode (null, пока значение не задано), effective_default_smtp_mode (базовый вариант тарифа, используемый при отсутствии настройки), default_smtp_connection_id и profile
/api/v1/smtp/default PUT Устанавливает настройку по умолчанию, тело {smtp_mode: platform|profile|not_configured, smtp_connection_id?, apply_to_all?}

Удаление профиля, который был настройкой аккаунта по умолчанию, сбрасывает ее на базовый вариант тарифа.

Устаревшие конечные точки. Операции GET/PUT /api/v1/smtp на уровне аккаунта (а также DELETE /api/v1/smtp/{id}, POST /api/v1/smtp:test, GET /api/v1/smtp:test-status/{jobId}) сохраняются для обратной совместимости, но больше не управляют маршрутизацией для доменов: используйте конечные точки домена и /smtp/default, описанные выше. Устаревшие инструменты MCP get_smtp_config / update_smtp_config не рекомендуются по той же причине.

Брендинг White Label, клиенты и доступ команды

Брендинг настраивается для каждого домена с областями branding:read / branding:write. Домен использует собственный бренд (mode=custom), наследует настройку аккаунта по умолчанию (mode=inherit) или отключает брендинг. Требуется активный пробный период White Label или платное дополнение. После отмены владелец сохраняет доступ только для чтения и восстановления в течение показанного льготного периода. Прочитайте dns_records домена и опубликуйте именно возвращенные записи. Не выводите имена хостов или целевые значения CNAME из примера.

Конечная точка Метод Что она делает
/api/v1/domains/{id}/branding GET Читает брендинг: mode, white_label_addon_active, brand, hosts, записи dns_records, которые нужно создать, cname_target и mail_zone
/api/v1/domains/{id}/branding PATCH Частичное обновление со слиянием: mode, name, primary_color/accent_color, dashboard_enabled/dashboard_label, webmail_enabled/webmail_label, mail_zone_enabled, support_email, support_url, sender_email, scope
/api/v1/domains/{id}/branding/logo/{slot} PUT Загружает логотип в base64 (slot = light|dark|favicon; PNG/JPG, ICO для favicon, ≤1 MB, без SVG). Значение scope=domain по умолчанию требует режима custom; явно заданное scope=account_default для домена inherit требует токена без ограничений.
/api/v1/domains/{id}/branding/logo/{slot} DELETE Удаляет ячейку логотипа. Использует те же правила области домена или настройки аккаунта по умолчанию; DELETE принимает scope как параметр запроса.
/api/v1/domains/{id}/branding/verify-dns POST Ставит проверку DNS для брендированных хостов и почтовой зоны бренда в очередь
/api/v1/domains/{id}/branding/preview POST Создает краткосрочный URL для предварительного просмотра (422 no_brand, если брендинг не настроен)
/api/v1/domains/{id}/branding?scope=domain|all DELETE Очищает брендинг этого домена или всего аккаунта

PATCH выполняет частичное слияние, поэтому пропущенные поля сохраняются. Если брендинг сейчас отключен, передайте mode, чтобы включить его снова. Пользовательский sender_email должен принадлежать домену с подтвержденным ключом DKIM. mail_zone_enabled обслуживает почтовые приложения и синхронизацию DAV на собственном домене бренда. Параметр относится к бренду, а не к отдельному домену, поэтому требует mode=custom или scope=account_default; домен inherit возвращает 422 inherited_brand. Для отслеживания подготовки читайте mail_zone.dns_status, mail_zone.client_hosts_status, mail_zone.records, mail_zone.dav_url и mail_zone.dav_ready и используйте только готовый адрес DAV. Полный процесс для агента описан в руководстве по API и MCP для брендинга White Label.

Поверхность White Label на уровне аккаунта добавляет 13 маршрутов в /api/v1/white-label: состояние и прогресс настройки, актуальный каталог доступа, список участников и действия жизненного цикла, активность аккаунта и историю действий и входов каждого участника. Она использует members:read, members:write и activity:read. Доступ всегда представляет собой пересечение прав аккаунта, текущего членства пользователя, разрешений учетных данных и ограничений домена. Таблица маршрутов и переходы состояний приведены в статье Управление командами White Label с помощью API и MCP.

Спецификация OpenAPI доступна по адресу /api/openapi.json для импорта в Postman, Insomnia или генераторы кода.

Быстрые решения

  • 401 "unauthenticated": Проверьте наличие заголовка Authorization: Bearer <token> и убедитесь, что токен не отозван и не просрочен.
  • 403 "plan_api_disabled": Запрошенная область недоступна на вашем тарифе. Nano включает Email Verifier (и Drive, если приобретено дополнение Drive Storage). Для остальной части API перейдите на Starter или более высокий тариф.
  • 403 "token_scope_blocked_by_plan": У токена есть области, недоступные на текущем тарифе. Отзовите токен и создайте новый с разрешенными областями.
  • 403 "scope_blocked_by_entitlement": Сохраненное разрешение White Label недоступно, поскольку дополнение неактивно или в льготный период выполняется операция записи. Повторно активируйте White Label, затем заново выдайте или авторизуйте учетные данные.
  • 403 "scope_blocked_by_membership": Текущая роль участника уже, чем запрошенное действие. Попросите владельца изменить ее; одной повторной авторизацией расширить членство нельзя.
  • 422 "missing_idempotency_key": Добавьте заголовок Idempotency-Key к операции записи, указанной в справочнике конечных точек.
  • 403 "mailbox_sending_paused": Отправка из этого почтового ящика остановлена, потому что исходящая почта перестала быть похожа на письма владельца, обычно из-за попадания пароля в чужие руки. Чтение, перечисление и все остальные конечные точки продолжают работать; отклоняется только отправка, и повторные попытки не снимут блокировку. Нужно изменить пароль почтового ящика, после чего поддержка снова включает отправку. См. Почему я не могу отправлять письма?.
  • Ограничение частоты 429: Перед повторной попыткой подождите время, указанное в заголовке Retry-After.

Отправка писем: тело, заголовки и доставляемость

POST /api/v1/messages/send принимает запрос вида {to, subject, body: {text, html}, attachments, reply_to_message_id, headers}.

  • body.text и body.html необязательны, но нужно указать хотя бы одно из них. Если передан только body.text, мы автоматически создаем альтернативу HTML с абзацами <p> (пустые строки разделяют абзацы, одиночные переводы строк становятся <br>), чтобы письмо отображалось как обычное во всех современных клиентах. Если нужен моноширинный текст, передайте буквальный <pre>...</pre> в body.html.
  • headers является необязательным объектом пользовательских заголовков исходящей почты. Список разрешенных значений включает List-Unsubscribe, List-Unsubscribe-Post, Reply-To и любой пользовательский заголовок отслеживания X-*. Остальные имена (From, Subject, Message-Id, Authentication-Results и другие) управляются платформой и отклоняются с кодом 422. Значения с CR/LF также отклоняются для защиты от внедрения заголовков. Длина каждого значения ограничена 998 символами согласно RFC 2822.
  • Для массовой отправки и автоматизации см. раздел Заголовки доставляемости для массовых отправителей, где описана настройка List-Unsubscribe и общий для аккаунта переключатель auto_list_unsubscribe.

Связанные статьи

Похожие статьи

Перейдите к близким руководствам, которые продолжают рабочий процесс.

Подключение ИИ-агентов к TrekMail через MCP

Подключайте любой совместимый MCP-клиент к TrekMail через авторизацию в браузере, универсальный CLI-мост или статические токены с узкими областями доступа.

Читать статью

Области API и разрешения тарифов

Сравните области TrekMail API для тарифов, дополнений, OAuth, участников, ограничений домена и защиты MCP, включая White Label.

Читать статью

Руководство по API и MCP для White Label

Настройте White Label для каждого домена: фирменный стиль, логотипы и брендированные хосты панели и веб-почты через REST API или MCP TrekMail.

Читать статью

Управление командами White Label через API и MCP

Приглашайте клиентов, управляйте доменами, блокируйте или восстанавливайте участников и смотрите активность White Label через REST API и MCP.

Читать статью

Обзор TrekMail Drive API для разработчиков

Познакомьтесь с TrekMail Drive API: файлы, папки, загрузка, общедоступные ссылки, использование хранилища, безопасное удаление и границы дополнения.

Читать статью

Быстрый старт с Drive API для разработчиков

Создайте ограниченный токен TrekMail, вызовите Drive API, загрузите файл, создайте публичную ссылку и проверьте журнал аудита.

Читать статью

Мы используем необходимые технологии для работы и защиты TrekMail. Подтверждая это, вы также разрешаете ограниченную аналитику и измерение рекламы, описанные в Политике cookie.

Вход в TrekMail

Доступ к панели, ящикам и DNS.

или

12 символов пароли совпадают

или

Письмо отправлено

Если для этого адреса есть аккаунт, мы отправили инструкции по сбросу пароля.

Продолжая, вы принимаете Условия и Политику конфиденциальности TrekMail.