Unisender API API

Отрасль: Связь и уведомления. Актуально на 2026-10-24.

API сервиса email- и SMS-рассылок Unisender: списки контактов, подписка и импорт контактов, создание email- и SMS-сообщений, запуск и статус рассылок, одиночные письма, шаблоны, дополнительные поля и метки, статистика. Использовать API можно бесплатно на любом аккаунте. Для транзакционных писем без ограничений документация рекомендует отдельный сервис Unisender Go.

Сценарии

Подписать контакт на рассылку с сайта

Форма подписки на сайте добавляет email в список Unisender.

  1. Скопируй API-ключ в личном кабинете. Передавай его параметром api_key методом POST, чтобы ключ не попадал в логи прокси. Формат вызова: https://api.unisender.com/ru/api/<метод>?format=json.
  2. Узнай код списка: POST /ru/api/getLists — в result список с id и title.
  3. Подпиши контакт: POST /ru/api/subscribe с list_ids, fields[email] (и при необходимости fields[phone], fields[Name]) и tags. double_optin = 0 отправит письмо-приглашение с подтверждением, 3 — добавит контакт без письма (только если согласие уже получено на твоей стороне).
  4. Успешный ответ — поле result без error; предупреждения приходят в warnings.
curl -X POST "https://api.unisender.com/ru/api/subscribe?format=json" \
  -d api_key=<ключ> \
  -d list_ids=<код списка> \
  --data-urlencode 'fields[email]=ivan@example.ru' \
  --data-urlencode 'fields[Name]=Иван' \
  --data-urlencode 'tags=сайт,подписка' \
  -d double_optin=0

Загрузить базу контактов

Перенести контакты из CRM или старого сервиса пачками.

  1. Подготовь данные: field_names — названия столбцов (обязательно email, можно email_list_ids для списков и свои поля), data — строки со значениями в том же порядке.
  2. Загружай пачками: POST /ru/api/importContacts — не больше 500 контактов за вызов.
  3. Таймаут вызова — 30 секунд. Если ответа нет, повтори не больше двух раз — повтор безопасен, контакты обновятся, а не задвоятся.
  4. Флаги overwrite_tags и overwrite_lists определяют, заменять ли метки и списки существующих контактов или добавлять к ним.
curl -X POST "https://api.unisender.com/ru/api/importContacts?format=json" \
  -d api_key=<ключ> \
  --data-urlencode 'field_names[0]=email' \
  --data-urlencode 'field_names[1]=Name' \
  --data-urlencode 'field_names[2]=email_list_ids' \
  --data-urlencode 'data[0][0]=ivan@example.ru' --data-urlencode 'data[0][1]=Иван' -d 'data[0][2]=<код списка>' \
  --data-urlencode 'data[1][0]=anna@example.ru' --data-urlencode 'data[1][1]=Анна' -d 'data[1][2]=<код списка>'

Запустить email-рассылку по списку

Создать письмо, отправить его по списку и узнать результат.

  1. Создай письмо: POST /ru/api/createEmailMessage с sender_name, sender_email (подтверждённый адрес), subject, body (HTML) и list_id. Письмо отправляется только по одному списку. В ответе — код сообщения.
  2. Запусти рассылку: POST /ru/api/createCampaign с message_id. Без start_time отправка начнётся сразу; для отложенной передай start_time (не дальше 100 дней) и timezone. Включи track_read и track_links, чтобы видеть открытия и переходы.
  3. Проверяй статус: POST /ru/api/getCampaignStatus с campaign_id. Перед отправкой рассылка может пройти модерацию (waits_censor), итог — completed. Время в ответе — UTC.
MSG=$(curl -s -X POST "https://api.unisender.com/ru/api/createEmailMessage?format=json" \
  -d api_key=<ключ> --data-urlencode 'sender_name=Магазин' -d sender_email=news@example.ru \
  --data-urlencode 'subject=Скидки выходного дня' --data-urlencode 'body=<h1>Скидка 20%</h1><p>Только до воскресенья.</p>' \
  -d list_id=<код списка> | jq -r .result.message_id)

curl -X POST "https://api.unisender.com/ru/api/createCampaign?format=json" \
  -d api_key=<ключ> -d message_id=$MSG -d track_read=1 -d track_links=1

Отправить одиночное письмо

Письмо одному адресату: подтверждение регистрации, уведомление о заказе.

  1. Отправь: POST /ru/api/sendEmail с email, sender_name, sender_email, subject, body и list_id — списком, от которого адресат сможет отписаться.
  2. Новым аккаунтам по умолчанию доступно до 1000 таких писем в сутки; одному адресату — не чаще раза в 60 секунд; размер письма — до 1 МБ.
  3. Статус доставки проверяется методом checkEmail и хранится месяц.
  4. Для большого потока транзакционных писем документация рекомендует отдельный сервис Unisender Go.
curl -X POST "https://api.unisender.com/ru/api/sendEmail?format=json" \
  -d api_key=<ключ> \
  --data-urlencode 'email=Иван Петров <ivan@example.ru>' \
  --data-urlencode 'sender_name=Магазин' -d sender_email=noreply@example.ru \
  --data-urlencode 'subject=Заказ №1042 оформлен' \
  --data-urlencode 'body=<p>Спасибо за заказ! Мы сообщим, когда он будет отправлен.</p>' \
  -d list_id=<код списка>

Базовые URL

Авторизация

Тип: API-ключ

API-ключ копируется в личном кабинете и передаётся параметром api_key. Рекомендуется передавать его через POST, чтобы ключ не попадал в логи прокси. Доступ можно дополнительно ограничить списком доверенных IP.

https://api.unisender.com/ru/api/getLists?format=json&api_key=KEY

Методы

POST /ru/api/getLists — Списки рассылки

В ответе result[]: id, title.

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
format query string да json

POST /ru/api/subscribe — Подписка контакта

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
list_ids body string да Коды списков через запятую (из getLists)
fields[email] body string да Email контакта
fields[phone] body string нет Телефон в международном формате, например +79261232323
tags body string нет Метки через запятую, не больше 10
double_optin body integer нет 0 — отправить письмо-приглашение, 3 — добавить без письма
overwrite body integer нет Режим перезаписи полей и меток

POST /ru/api/importContacts — Массовый импорт контактов

Таймаут вызова — 30 секунд; при отсутствии ответа — до двух повторов.

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
field_names body array да Названия столбцов; обязательно поле email, до 50 пользовательских полей
data body array да Данные контактов, не больше 500 за вызов
overwrite_tags body boolean нет Перезаписывать метки
overwrite_lists body boolean нет Перезаписывать списки

POST /ru/api/createEmailMessage — Создание email-сообщения

Возвращает код сообщения для createCampaign. Письмо отправляется только по одному списку.

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
sender_name body string да Имя отправителя (не email)
sender_email body string да Подтверждённый email отправителя
subject body string нет Тема; обязательна, если нет template_id
body body string нет HTML-текст; обязателен, если нет template_id/system_template_id
list_id body integer да Код списка
text_body body string нет Текстовая версия
generate_text body integer нет 1 — сгенерировать текстовую часть из HTML (по умолчанию 0)
tag body string нет Отправить только контактам с меткой
attachments body array нет Вложения
lang body string нет Язык
template_id body integer нет Шаблон вместо subject и body
wrap_type body string нет Тип обёртки письма
categories body string нет Категории

POST /ru/api/createCampaign — Запуск рассылки

Запускает сразу или по расписанию ранее созданное email- или SMS-сообщение; возвращает код рассылки.

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
message_id body integer да Код сообщения из createEmailMessage/createSmsMessage
start_time body string нет ГГГГ-ММ-ДД чч:мм, не дальше 100 дней; без него — сразу
timezone body string нет Часовой пояс start_time; явно поддерживается UTC
track_read body integer нет 1 — отслеживать прочтения (по умолчанию 0)
track_links body integer нет 1 — отслеживать переходы (по умолчанию 0)
contacts body string нет Email или телефоны через запятую; без него — весь список
contacts_url body string нет URL файла со списком контактов (нельзя вместе с contacts)
track_ga body integer нет Добавлять UTM-метки (ga_medium, ga_source, ga_campaign, ga_content, ga_term)

POST /ru/api/getCampaignStatus — Статус рассылки

Время в ответе — UTC.

Статусы: waits_censor, censor_hold, declined, waits_schedule, scheduled, in_progress, analysed, completed, stopped, canceled.

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
campaign_id body integer да Код рассылки из createCampaign

Пример ответа:

{ "result":{ "status":"completed", "creation_time":"2011-09-21 19:47:31", "start_time":"2011-09-21 20:00:00" } }

POST /ru/api/sendEmail — Отправка одиночного письма

По умолчанию новым пользователям — до 1000 писем в сутки; письмо до 1 МБ; одному адресату — не чаще раза в 60 секунд. Статус доставки — методом checkEmail (хранится месяц).

Параметр Где Тип Обяз. Описание
api_key body string да Ключ доступа
email body string да Получатель (можно с именем перед адресом)
sender_name body string да Имя отправителя
sender_email body string да Подтверждённый email отправителя
subject body string да Тема
body body string да HTML-текст
list_id body integer да Список, от которого адресат сможет отписаться
attachments body array нет Вложения attachments[filename]
lang body string нет Язык
track_read body integer нет Отслеживать прочтения
track_links body integer нет Отслеживать переходы
cc body string нет Копия
headers body string нет Дополнительные заголовки
error_checking body integer нет Режим проверки ошибок
metadata body object нет Метаданные metadata[key]=value

Нюансы

Ограничения

Счётчик ведётся отдельно для каждого API-ключа или IP.

Источники


Если этого недостаточно — официальная документация: https://www.unisender.com/ru/support/api/common/bulk-email/ JSON: https://mcp-everything.ru/api/integrations/unisender. MCP: https://mcp-everything.ru/mcp