Документация

Справочник методов

Все методы под одним базовым адресом, с JSON в обе стороны и единым форматом ошибок. Каждый метод указывает право ключа, без которого вернёт 403.

Служебные

3

Проверка ключа и справочники

get
/api/v1/pingлюбой действующий ключ

Проверить ключ

Ответ 200Ключ действителен

ПолеТипОписание
okboolean
organizationobject
organization.idstring
organization.namestring
scopesstring[]

Ошибки

  • 401 Ключ не передан или недействителен
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

get
/api/v1/channelsлюбой действующий ключ

Каталог каналов

Список каналов каскада и их готовность. Читайте его вместо того, чтобы зашивать список каналов в код: новые каналы появляются здесь автоматически.

Ответ 200Каналы

ПолеТипОписание
channelsobject[]
channels[].key"EMAIL" | "SMS"
channels[].slugstring
channels[].labelstring
channels[].contactFieldstring
channels[].configuredboolean
channels[].sendEndpointstring

Ошибки

  • 401 Ключ не передан или недействителен
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

get
/api/v1/locationsправо locations:read

Список точек

Ответ 200Точки организации

ПолеТипОписание
locationsobject[]
locations[].idstring
locations[].namestring
locations[].addressstring
locations[].citystring

Ошибки

  • 401 Ключ не передан или недействителен
  • 403 Ключу не выдано нужное право
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

Контакты

1

Передача клиентов бизнеса из вашей системы

post
/api/v1/contactsправо contacts:write

Передать контакт клиента

Создаёт или обновляет контакт по вашему externalId. С флагом startCascade сразу ставит его в каскад — это самый короткий путь для интеграции с CRM: одно событие «заказ закрыт» → один вызов.

Заголовки

  • Idempotency-Key (необязательный) — Повтор запроса с тем же ключом вернёт сохранённый ответ и НЕ отправит сообщения повторно. Обязателен, если запрос инициирует вебхук вашей CRM с ретраями.

Тело запроса

JSON, заголовок Content-Type: application/json.

ПолеТипОписание
externalIdstringID клиента в вашей системе — ключ дедупликации
namestring
emailstring (email)
phonestring
locationIdstring
consentAtstring (date-time)Когда клиент дал согласие на коммуникацию
attributesobjectПроизвольные поля вашей системы
startCascadebooleanСразу поставить контакт в каскад запроса отзыва (по умолчанию false)
flowIdstringСценарий каскада; по умолчанию — сценарий организации

Ответ 200Контакт сохранён

ПолеТипОписание
contactobject
cascadeobject(может быть null)
cascade.idstring
cascade.queuedinteger

Ошибки

  • 400 Некорректный запрос
  • 401 Ключ не передан или недействителен
  • 402 Тариф не позволяет операцию
  • 403 Ключу не выдано нужное право
  • 404 Объект не найден
  • 409 Конфликт: повтор Idempotency-Key с другим телом или канал не настроен
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

Каскады

4

Запуск и статус каскадных рассылок

get
/api/v1/flowsправо cascades:read

Сценарии каскада

Последовательности шагов «канал + задержка». Идентификатор сценария передаётся в POST /api/v1/cascades.

Ответ 200Сценарии

ПолеТипОписание
flowsobject[]
flows[].idstring
flows[].namestring
flows[].isDefaultboolean
flows[].stepsobject[]
flows[].steps[].orderinteger
flows[].steps[].channel"EMAIL" | "SMS"
flows[].steps[].delayMinutesinteger

Ошибки

  • 401 Ключ не передан или недействителен
  • 403 Ключу не выдано нужное право
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

post
/api/v1/cascadesправо cascades:write

Запустить каскад

Ставит получателей в сценарий каскада. Шаги исполняются фоново: первый уходит сразу, следующие — по задержкам сценария, если клиент так и не поставил оценку.

Заголовки

  • Idempotency-Key (необязательный) — Повтор запроса с тем же ключом вернёт сохранённый ответ и НЕ отправит сообщения повторно. Обязателен, если запрос инициирует вебхук вашей CRM с ретраями.

Тело запроса

JSON, заголовок Content-Type: application/json.

ПолеТипОписание
locationIdобяз.string
namestring
flowIdstringСценарий; по умолчанию — сценарий организации
channel"EMAIL" | "SMS"Одношаговый каскад в один канал. Взаимоисключимо с flowId.
externalIdstring
recipientsобяз.object[](от 1 до 500)
recipients[].namestring
recipients[].emailstring (email)
recipients[].phonestring

Ответ 202Каскад принят в работу

ПолеТипОписание
idstring
statusstring
queuedinteger
skippedinteger
flowobject

Ошибки

  • 400 Некорректный запрос
  • 401 Ключ не передан или недействителен
  • 402 Тариф не позволяет операцию
  • 403 Ключу не выдано нужное право
  • 404 Объект не найден
  • 409 Конфликт: повтор Idempotency-Key с другим телом или канал не настроен
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

get
/api/v1/cascades/{id}право cascades:read

Статус каскада

Параметры пути

  • id

Ответ 200Состояние каскада и получателей

ПолеТипОписание
idstring
statusstring
externalIdstring(может быть null)
countsobject<integer>
recipientsobject[]

Ошибки

  • 401 Ключ не передан или недействителен
  • 403 Ключу не выдано нужное право
  • 404 Объект не найден
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

post
/api/v1/review-requestsправо review-requests:write

Создать ссылку на отзыв

Возвращает персональную ссылку /r/<token>, которую вы отправите своими каналами. Отзыв и перехват негатива работают так же, как в каскаде.

Заголовки

  • Idempotency-Key (необязательный) — Повтор запроса с тем же ключом вернёт сохранённый ответ и НЕ отправит сообщения повторно. Обязателен, если запрос инициирует вебхук вашей CRM с ретраями.

Тело запроса

JSON, заголовок Content-Type: application/json.

ПолеТипОписание
locationIdобяз.string
customerNamestring
contactstringEmail или телефон — только для вашей отчётности

Ответ 201Ссылка создана

ПолеТипОписание
idstring
tokenstring
urlstring
statusstring

Ошибки

  • 400 Некорректный запрос
  • 401 Ключ не передан или недействителен
  • 403 Ключу не выдано нужное право
  • 404 Объект не найден
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

Каналы

2

Методы отправки по конкретному каналу

post
/api/v1/channels/email/sendправо cascades:write

Отправить запрос отзыва: Email

Письмо со ссылкой на форму отзыва. Тема и текст берутся из шаблона организации, вёрстка и ссылка отписки — наши. Метод сгенерирован из реестра каналов — появляется автоматически при подключении нового канала.

Заголовки

  • Idempotency-Key (необязательный) — Повтор запроса с тем же ключом вернёт сохранённый ответ и НЕ отправит сообщения повторно. Обязателен, если запрос инициирует вебхук вашей CRM с ретраями.

Тело запроса

JSON, заголовок Content-Type: application/json.

ПолеТипОписание
locationIdобяз.stringИдентификатор точки; список — в GET /api/v1/locations
namestringНазвание рассылки для истории в кабинете
externalIdstringВаш идентификатор (номер заказа, ID сделки) — вернётся в ответах
recipientsобяз.object[](от 1 до 500)
recipients[].namestringИмя клиента для подстановки {{name}}
recipients[].emailобяз.stringEmail получателя

Ответ 202Рассылка принята в работу

ПолеТипОписание
idstring
statusstring
channel"EMAIL"
queuedinteger
skippedinteger

Ошибки

  • 400 Некорректный запрос
  • 401 Ключ не передан или недействителен
  • 402 Тариф не позволяет операцию
  • 403 Ключу не выдано нужное право
  • 404 Объект не найден
  • 409 Конфликт: повтор Idempotency-Key с другим телом или канал не настроен
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.

post
/api/v1/channels/sms/sendправо cascades:write

Отправить запрос отзыва: SMS

Короткое сообщение со ссылкой на форму отзыва. Текст — первая строка шаблона организации, обрезанная до одной SMS-части. Метод сгенерирован из реестра каналов — появляется автоматически при подключении нового канала.

Заголовки

  • Idempotency-Key (необязательный) — Повтор запроса с тем же ключом вернёт сохранённый ответ и НЕ отправит сообщения повторно. Обязателен, если запрос инициирует вебхук вашей CRM с ретраями.

Тело запроса

JSON, заголовок Content-Type: application/json.

ПолеТипОписание
locationIdобяз.stringИдентификатор точки; список — в GET /api/v1/locations
namestringНазвание рассылки для истории в кабинете
externalIdstringВаш идентификатор (номер заказа, ID сделки) — вернётся в ответах
recipientsобяз.object[](от 1 до 500)
recipients[].namestringИмя клиента для подстановки {{name}}
recipients[].phoneобяз.stringТелефон получателя в любом формате — нормализуем сами

Ответ 202Рассылка принята в работу

ПолеТипОписание
idstring
statusstring
channel"SMS"
queuedinteger
skippedinteger

Ошибки

  • 400 Некорректный запрос
  • 401 Ключ не передан или недействителен
  • 402 Тариф не позволяет операцию
  • 403 Ключу не выдано нужное право
  • 404 Объект не найден
  • 409 Конфликт: повтор Idempotency-Key с другим телом или канал не настроен
  • 429 Превышен лимит запросов

Формат тела ошибки — в разделе «Ошибки» обзора.