{"name":"Sendsay API","vendor":"Sendsay","industry":"communications","summary":"API платформы email-маркетинга Sendsay: добавление и изменение контактов, получение их данных, транзакционные и массовые рассылки, стоп-листы, черновики выпусков, статистика, формы и участники сценариев. Все вызовы идут POST-запросом на один адрес аккаунта; действие задаётся полем `action` в JSON-теле.","docsUrl":"https://docs.sendsay.ru/sendsay-api/sendsay-api-guide","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"dobavit-ili-obnovit-podpischika","title":"Добавить или обновить подписчика","summary":"Подписка с сайта или синхронизация клиентов из CRM в Sendsay.","steps":["Создай API-ключ вызовом sys.user.apikey.create — лучше на отдельный саблогин с минимальными правами. Все вызовы идут POST-запросом с JSON на https://api.sendsay.ru/general/api/v100/json/<код аккаунта>, действие задаётся полем action.","Проверь доступ: action = pong — в ответе account и sublogin.","Добавь контакт: action = member.set с email, addr_type = email и datakey — тройками «ключ, режим, значение». Например, [\"-group.pl21586\", \"set\", \"1\"] добавит контакт в список pl21586, а анкетные поля пишутся через ключи вида base.firstName.","Получить данные контакта: action = member.get с email.","warnings в ответе означают частичное выполнение, а не ошибку. Ответы 3xx — перенаправления, клиент должен их обрабатывать."],"code":"curl -L -X POST \"https://api.sendsay.ru/general/api/v100/json/<аккаунт>\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n        \"action\": \"member.set\",\n        \"apikey\": \"<API-ключ>\",\n        \"email\": \"ivan@example.ru\",\n        \"addr_type\": \"email\",\n        \"datakey\": [\n          [\"base.firstName\", \"set\", \"Иван\"],\n          [\"-group.pl21586\", \"set\", \"1\"]\n        ]\n      }'","language":"bash","methods":["POST /general/api/v100/json/{account} member.set","POST /general/api/v100/json/{account} member.get","POST /general/api/v100/json/{account} pong"]},{"id":"otpravit-tranzaktsionnoe-pismo","title":"Отправить транзакционное письмо","summary":"Письмо одному получателю по событию: заказ оформлен, оплата получена.","steps":["Вызови action = issue.send с group = personal, sendwhen = now и email получателя.","В letter передай subject, from.email (и from.name) и message.html. Значения для подстановки в шаблон — в extra.","В ответе — letter: по нему письмо находится в статистике.","Лимит — 80 запросов в секунду и не больше 5 одновременных запросов на изменение данных; при превышении — 503 rate_limit."],"code":"curl -L -X POST \"https://api.sendsay.ru/general/api/v100/json/<аккаунт>\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n        \"action\": \"issue.send\",\n        \"apikey\": \"<API-ключ>\",\n        \"sendwhen\": \"now\",\n        \"group\": \"personal\",\n        \"email\": \"ivan@example.ru\",\n        \"letter\": {\n          \"subject\": \"Заказ №1042 оформлен\",\n          \"from\": {\"name\": \"Магазин\", \"email\": \"noreply@example.ru\"},\n          \"message\": {\"html\": \"<p>Спасибо за заказ! Мы сообщим, когда он будет отправлен.</p>\"}\n        }\n      }'","language":"bash","methods":["POST /general/api/v100/json/{account} issue.send","POST /general/api/v100/json/{account} issue.send #2"]},{"id":"zapustit-massovuyu-rassylku","title":"Запустить массовую рассылку","summary":"Рассылка по списку получателей — из готового черновика или с текстом в запросе.","steps":["Вызови action = issue.send с group = masssending и sendwhen = now.","В letter передай draft.id существующего черновика — или тему, отправителя и HTML прямо в запросе.","Получателей задай в users.list. Переменные в тексте вида [% anketa.personal.product %] должны совпадать с ключами данных, которые ты передаёшь.","Ход выполнения задания виден в журнале заданий: https://app.sendsay.ru/queue."],"code":"curl -L -X POST \"https://api.sendsay.ru/general/api/v100/json/<аккаунт>\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n        \"action\": \"issue.send\",\n        \"apikey\": \"<API-ключ>\",\n        \"sendwhen\": \"now\",\n        \"group\": \"masssending\",\n        \"letter\": {\"draft.id\": 125},\n        \"users.list\": [\n          {\"member\": {\"email\": \"ivan@example.ru\"}, \"personal\": {\"product\": \"кружка\"}},\n          {\"member\": {\"email\": \"anna@example.ru\"}, \"personal\": {\"product\": \"чайник\"}}\n        ]\n      }'","language":"bash","methods":["POST /general/api/v100/json/{account} issue.send","POST /general/api/v100/json/{account} issue.send #2"]},{"id":"uznat-komu-doshli-pisma","title":"Узнать, кому дошли письма","summary":"Статистика доставки по рассылке или по конкретному адресу.","steps":["Вызови action = stat.uni с select — нужными полями, например deliv.member.email и deliv.result.","Условия задай в filter: a — поле, op — оператор, v — значение. Для периода используй поля дат.","Большую выгрузку можно сохранить файлом: result с типом save и форматом xlsx."],"code":"curl -L -X POST \"https://api.sendsay.ru/general/api/v100/json/<аккаунт>\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n        \"action\": \"stat.uni\",\n        \"apikey\": \"<API-ключ>\",\n        \"select\": [\"deliv.member.email\", \"deliv.result\"],\n        \"filter\": [{\"a\": \"deliv.member.email\", \"op\": \"==\", \"v\": \"ivan@example.ru\"}]\n      }'","language":"bash","methods":["POST /general/api/v100/json/{account} stat.uni"]}],"baseUrls":[{"label":"Боевой","url":"https://api.sendsay.ru"},{"label":"Адрес вызова","url":"https://api.sendsay.ru/general/api/v100/json/{account}"}],"auth":{"type":"api_key","description":"Рекомендуемый способ — API-ключ (создаётся вызовом `sys.user.apikey.create`, лучше на отдельный саблогин с минимальными правами). Ключ передаётся полем `apikey` в теле JSON или заголовком `Authorization: sendsay apikey=...` (ключ URL-кодируется). Аутентификация действует на один вызов, выход не нужен. Также поддерживаются логин с паролем (сессия), JWT, двухфакторная аутентификация и OpenID.","example":""},"methods":[{"id":"POST /general/api/v100/json/{account} member.set","title":"member.set: добавление и изменение контакта","httpMethod":"POST","path":"/general/api/v100/json/{account}","description":"","params":[{"name":"account","in":"path","type":"string","required":true,"description":"Код аккаунта"},{"name":"action","in":"body","type":"string","required":true,"description":"member.set"},{"name":"email","in":"body","type":"string","required":true,"description":"Адрес подписчика"},{"name":"addr_type","in":"body","type":"string","required":false,"description":"Тип адреса, например email"},{"name":"datakey","in":"body","type":"array","required":false,"description":"Тройки «ключ данных, режим, значение»; например -group.pl21586, set, 1 — добавить в список (0 — удалить)"},{"name":"obj","in":"body","type":"object","required":false,"description":"Анкетные данные, например блок base"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /general/api/v100/json/{account} member.get","title":"member.get: данные контакта","httpMethod":"POST","path":"/general/api/v100/json/{account}","description":"","params":[{"name":"account","in":"path","type":"string","required":true,"description":"Код аккаунта"},{"name":"action","in":"body","type":"string","required":true,"description":"member.get"},{"name":"email","in":"body","type":"string","required":true,"description":"Адрес подписчика"},{"name":"addr_type","in":"body","type":"string","required":false,"description":"Тип адреса"},{"name":"datakey","in":"body","type":"array","required":false,"description":"Какие ключи данных вернуть"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /general/api/v100/json/{account} issue.send","title":"issue.send: транзакционное письмо","httpMethod":"POST","path":"/general/api/v100/json/{account}","description":"В ответе — `letter`, по нему письмо отслеживается в статистике.","params":[{"name":"account","in":"path","type":"string","required":true,"description":"Код аккаунта"},{"name":"action","in":"body","type":"string","required":true,"description":"issue.send"},{"name":"sendwhen","in":"body","type":"string","required":true,"description":"now — отправить сразу"},{"name":"group","in":"body","type":"string","required":true,"description":"personal"},{"name":"email","in":"body","type":"string","required":true,"description":"Получатель"},{"name":"letter.subject","in":"body","type":"string","required":true,"description":"Тема"},{"name":"letter.from.name","in":"body","type":"string","required":false,"description":"Имя отправителя"},{"name":"letter.from.email","in":"body","type":"string","required":true,"description":"Адрес отправителя"},{"name":"letter.message.html","in":"body","type":"string","required":true,"description":"HTML-текст"},{"name":"extra","in":"body","type":"object","required":false,"description":"Значения для подстановки в шаблон"},{"name":"relink","in":"body","type":"integer","required":false,"description":"Перелинковка ссылок"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /general/api/v100/json/{account} issue.send #2","title":"issue.send: массовая рассылка","httpMethod":"POST","path":"/general/api/v100/json/{account}","description":"Переменные в тексте вида `[% anketa.personal.product %]` должны совпадать с ключами в запросе.","params":[{"name":"account","in":"path","type":"string","required":true,"description":"Код аккаунта"},{"name":"action","in":"body","type":"string","required":true,"description":"issue.send"},{"name":"name","in":"body","type":"string","required":false,"description":"Название черновика"},{"name":"sendwhen","in":"body","type":"string","required":true,"description":"now"},{"name":"group","in":"body","type":"string","required":true,"description":"masssending"},{"name":"letter","in":"body","type":"object","required":true,"description":"draft.id существующего черновика либо тема, отправитель и HTML"},{"name":"users.list","in":"body","type":"object","required":false,"description":"Получатели: массив с блоками member и personal или объект caption + rows"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /general/api/v100/json/{account} stat.uni","title":"stat.uni: универсальная статистика","httpMethod":"POST","path":"/general/api/v100/json/{account}","description":"","params":[{"name":"account","in":"path","type":"string","required":true,"description":"Код аккаунта"},{"name":"action","in":"body","type":"string","required":true,"description":"stat.uni"},{"name":"select","in":"body","type":"array","required":true,"description":"Поля, например deliv.member.email, deliv.result"},{"name":"filter","in":"body","type":"array","required":false,"description":"Условия a (поле), op (оператор), v (значение); для периода — суффикс :YD"},{"name":"groupby","in":"body","type":"array","required":false,"description":"Группировка"},{"name":"join","in":"body","type":"object","required":false,"description":"Объединение выборок"},{"name":"result","in":"body","type":"object","required":false,"description":"Выгрузка в файл, например тип save, формат xlsx"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /general/api/v100/json/{account} pong","title":"pong: проверка доступности и авторизации","httpMethod":"POST","path":"/general/api/v100/json/{account}","description":"В ответе — `ping`, `account`, `sublogin`, `via`.","params":[{"name":"account","in":"path","type":"string","required":true,"description":"Код аккаунта"},{"name":"action","in":"body","type":"string","required":true,"description":"pong"}],"requestExample":"","responseExample":"","docsUrl":""}],"codeExamples":[],"errors":[{"code":"error/auth/failed","description":"Ошибка аутентификации"},{"code":"rate_limit","description":"Превышен лимит (HTTP 503)"}],"limits":"- 80 запросов в секунду.\n- До 10 одновременных запросов, из них до 5 на изменение данных.\n- До 400 МБ на запрос.","gotchas":["Тело — 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."],"slug":"sendsay","version":2,"updatedAt":"2026-10-24T17:05:36.712Z","sources":[{"title":"Гайд по работе с API","url":"https://docs.sendsay.ru/sendsay-api/sendsay-api-guide","kind":"research","addedAt":"2026-10-17T07:38:25.608Z"},{"title":"Шаблоны API-запросов","url":"https://docs.sendsay.ru/sendsay-api/api-request-templates","kind":"research","addedAt":"2026-10-17T07:38:25.608Z"},{"title":"Работа с API","url":"https://docs.sendsay.ru/sendsay-api","kind":"research","addedAt":"2026-10-17T07:38:25.608Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-17T07:38:25.608Z"},{"title":"scenarios-sendsay.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:26.986Z"}],"logoUrl":null}