# Sendsay API: Отправить транзакционное письмо

Сценарий из mcp-everything. Актуально на 2026-10-24.

Письмо одному получателю по событию: заказ оформлен, оплата получена.

1. Вызови action = issue.send с group = personal, sendwhen = now и email получателя.
2. В letter передай subject, from.email (и from.name) и message.html. Значения для подстановки в шаблон — в extra.
3. В ответе — letter: по нему письмо находится в статистике.
4. Лимит — 80 запросов в секунду и не больше 5 одновременных запросов на изменение данных; при превышении — 503 rate_limit.

```bash
curl -L -X POST "https://api.sendsay.ru/general/api/v100/json/<аккаунт>" \
  -H 'Content-Type: application/json' \
  -d '{
        "action": "issue.send",
        "apikey": "<API-ключ>",
        "sendwhen": "now",
        "group": "personal",
        "email": "ivan@example.ru",
        "letter": {
          "subject": "Заказ №1042 оформлен",
          "from": {"name": "Магазин", "email": "noreply@example.ru"},
          "message": {"html": "<p>Спасибо за заказ! Мы сообщим, когда он будет отправлен.</p>"}
        }
      }'
```

## Базовые URL

- Боевой: `https://api.sendsay.ru`
- Адрес вызова: `https://api.sendsay.ru/general/api/v100/json/{account}`

## Авторизация

Тип: API-ключ

Рекомендуемый способ — API-ключ (создаётся вызовом `sys.user.apikey.create`, лучше на отдельный саблогин с минимальными правами). Ключ передаётся полем `apikey` в теле JSON или заголовком `Authorization: sendsay apikey=...` (ключ URL-кодируется). Аутентификация действует на один вызов, выход не нужен. Также поддерживаются логин с паролем (сессия), JWT, двухфакторная аутентификация и OpenID.

## Методы сценария

### POST /general/api/v100/json/{account} — issue.send: транзакционное письмо

В ответе — `letter`, по нему письмо отслеживается в статистике.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `account` | path | string | да | Код аккаунта |
| `action` | body | string | да | issue.send |
| `sendwhen` | body | string | да | now — отправить сразу |
| `group` | body | string | да | personal |
| `email` | body | string | да | Получатель |
| `letter.subject` | body | string | да | Тема |
| `letter.from.name` | body | string | нет | Имя отправителя |
| `letter.from.email` | body | string | да | Адрес отправителя |
| `letter.message.html` | body | string | да | HTML-текст |
| `extra` | body | object | нет | Значения для подстановки в шаблон |
| `relink` | body | integer | нет | Перелинковка ссылок |

### POST /general/api/v100/json/{account} — issue.send: массовая рассылка

Переменные в тексте вида `[% anketa.personal.product %]` должны совпадать с ключами в запросе.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `account` | path | string | да | Код аккаунта |
| `action` | body | string | да | issue.send |
| `name` | body | string | нет | Название черновика |
| `sendwhen` | body | string | да | now |
| `group` | body | string | да | masssending |
| `letter` | body | object | да | draft.id существующего черновика либо тема, отправитель и HTML |
| `users.list` | body | object | нет | Получатели: массив с блоками member и personal или объект caption + rows |

## Нюансы

- Тело — JSON в UTF-8 с `Content-Type: application/json`; обязательное поле — `action`; размер запроса — до 400 МБ.
- Ответы с кодами 3xx — перенаправления, клиент обязан их обрабатывать.
- Массив `warnings` означает частичное выполнение, а не ошибку.
- При `error/auth/failed` с уточнением `force_change_password` смените пароль через `sys.user.set` и повторите запрос.
- Результаты импорта и других заданий видны в журнале заданий (`https://app.sendsay.ru/queue`).
- Есть также вызовы стоп-листов, черновиков, форм, участников сценариев и Stream API.

## Другие сценарии

- [Добавить или обновить подписчика](https://mcp-everything.ru/integrations/sendsay/scenarios/dobavit-ili-obnovit-podpischika.md)
- [Запустить массовую рассылку](https://mcp-everything.ru/integrations/sendsay/scenarios/zapustit-massovuyu-rassylku.md)
- [Узнать, кому дошли письма](https://mcp-everything.ru/integrations/sendsay/scenarios/uznat-komu-doshli-pisma.md)

---

Если этого недостаточно — официальная документация: https://docs.sendsay.ru/sendsay-api/sendsay-api-guide
Вся интеграция одним документом: https://mcp-everything.ru/integrations/sendsay.md
