API Reference
Базовый URL: https://api.mail.synapsea.agency. Аутентификация: Authorization: Bearer sm_live_... или заголовок X-Synapsea-Key: sm_live_....
Отправка писем
/v1/emailsОтправить одно письмо.
Body:
{
"from": "noreply@example.ru",
"to": "user@example.com",
"subject": "Subject",
"html": "<p>Body</p>",
"text": "Body",
"cc": ["cc@example.com"],
"bcc": ["bcc@example.com"],
"reply_to": "reply@example.ru",
"tags": ["onboarding", "welcome"],
"headers": { "X-Custom-Header": "value" },
"bulk": false
}Поле bulk: true помечает письмо как массовую рассылку — анонс, промо, напоминание об окончании пробного периода. В такое письмо добавляется заголовок List-Unsubscribe с однокликовой отпиской (RFC 8058), и на него действуют отписки получателей. Транзакционные письма — коды подтверждения, чеки, уведомления — отправляйте без этого поля: ссылка отписки в них навредила бы пользователю, отказавшись от кода входа, он потеряет доступ к аккаунту. Отписка от рассылки на транзакционные письма не влияет.
Массовые рассылки допускаются только при наличии согласия получателей — см. Правила допустимого использования. Объём согласуется заранее: превышение суточного лимита писем с одинаковой темой возвращает 429.
Response (202):
{ "id": "em_a1b2c3d4...", "status": "queued" }/v1/emails/batchОтправить до 100 писем за один запрос.
/v1/emails/:idПолучить детали письма и его события доставки.
Управление доменами
/v1/domainsСписок подтверждённых доменов проекта.
/v1/domainsДобавить домен (возвращает DNS-записи для добавления).
/v1/domains/:id/verifyПроверить DNS-записи и подтвердить домен.
/v1/domains/:idУдалить домен.
Suppression list
/v1/suppressionsПолучить адреса в стоп-листе.
/v1/suppressions/:emailУдалить адрес из стоп-листа (email в URL-encoded виде).
Аналитика
/v1/analytics/overviewАгрегированные метрики за сегодня/неделю/месяц.
/v1/analytics/timeseriesПосуточная статистика за 30 дней.
Статусы письма
Статус возвращается в GET /v1/emails/:id и в поле status вебхуков:
queued— принято и поставлено в очередь отправкиsending— передаётся почтовому серверу получателяsent— сервер получателя принял письмоdelivered— доставка подтверждена (приходит не от всех почтовых служб)bounced— ящика не существует — адрес добавлен в стоп-листrejected— почтовая служба отклонила письмо по своей политике или репутации отправителя; ящик существует, адрес НЕ подавляетсяcomplained— получатель отметил письмо как спамfailed— отправка не состоялась на нашей стороне: домен не подтверждён, все получатели в стоп-листе
Различие bounced и rejected принципиально для чистки базы: bounced означает, что адреса не существует и слать на него больше не нужно. rejected — что письмо не приняли по причинам, к адресу отношения не имеющим, и удалять такого получателя из своей базы нельзя. Мы повторяем такие письма автоматически несколько раз с нарастающей задержкой.
Прогрев и темп отправки
Репутация отправителя нарабатывается отдельно для каждой почтовой службы получателя, поэтому новый проект наращивает объём постепенно. Пока идёт прогрев, письма сверх суточной нормы по конкретной почтовой службе не теряются, а откладываются и уходят позже — в событиях это видно как deferred. Если планируете объём заметно выше обычного, предупредите нас заранее: внеплановый всплеск почтовые службы воспринимают как рассылочный и ограничивают доставку всему отправляющему узлу.
Rate limits
По умолчанию: 60 запросов/сек на проект для HTTP API, 300 писем/сек через SMTP. При превышении — HTTP 429. Увеличение лимитов на тарифах Pro и Scale — по запросу.
Ошибки
Все ошибки возвращаются в формате:
{ "error": "Error description" }Коды:
400— невалидный payload401— нет/неверный API-ключ403— домен не подтверждён429— превышен rate limit500— внутренняя ошибка
Поле code в ответе:
DOMAIN_NOT_VERIFIED— домен отправителя не подтверждён — завершите настройку DNSSUBSCRIPTION_REQUIRED— нет активной подписки на проектеRECIPIENT_IN_SUPPRESSION_LIST— все получатели в стоп-листеBULK_LIMIT_EXCEEDED— превышен суточный лимит писем с одинаковой темой — согласуйте объём рассылкиSENDING_PAUSED— отправка по проекту приостановлена — напишите на abuse@synapsea.agencyQUOTA_EXCEEDED— исчерпана суточная или месячная квота тарифа
Свежий список всех эндпоинтов и примеры запросов/ответов доступен в dashboard после входа.