API Reference
WonderChat REST API позволяет управлять диалогами, каналами, контактами и шаблонами программно. Все запросы возвращают JSON.
Аутентификация: JWT Bearer Token. Передавайте токен в заголовке Authorization: Bearer <token>. Токен получается через POST /auth/login.
Коды ответов: 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Server Error.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| req | Email адрес | |
| password | req | Пароль (min 8 символов) |
| name | req | Имя пользователя |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| req | ||
| password | req | Пароль |
| Поле | Тип | Описание |
|---|---|---|
| refreshToken | req | refresh токен из login |
Отозвание текущей сессии. Используйте /auth/logout-all для выхода со всех устройств.
| Поле | Тип | Описание |
|---|---|---|
| name | opt | Название аккаунта |
| Поле | Тип | Описание |
|---|---|---|
| req | Email нового пользователя | |
| name | req | Имя |
| password | req | Пароль |
| role | opt | admin | operator (деф. operator) |
| Поле | Тип | Описание |
|---|---|---|
| name | req | Название канала |
| type | req | telegram | telegram_bot | whatsapp | waba | vk | instagram | max | max_personal |
| credentials | req | Объект с параметрами канала |
| Поле | Тип | Описание |
|---|---|---|
| name | opt | Новое название |
| credentials | opt | Обновить креденшиалы (мержится с существующими) |
| healthCheckInterval | opt | Автопереподключение в минутах: 0..1440 |
ВКонтакте: credentials мержатся с существующими (токен не теряется), а при передаче confirmationCode/secretKey адаптер перезапускается автоматически через Redis.
Отключает канал и удаляет его. Ответ 204 No Content.
Для Telegram запускает auth flow (code/2FA), для остальных каналов публикует команду подключения в Redis. Для WhatsApp отдельный QR запрашивается через POST /channels/:id/qr, для MAX Personal — через POST /channels/:id/max-qr/start.
Только для WhatsApp. Генерирует новый QR-код.
Только для каналов max_personal. Запускает QR-авторизацию и возвращает QR URL.
Проверяет прогресс QR-авторизации: pending, connected, expired, failed.
Query параметры
| Параметр | Тип | Описание |
|---|---|---|
| channelId | opt | Фильтр по каналу |
| status | opt | open | closed |
| unread | opt | true — только непрочитанные |
| search | opt | Текстовый поиск |
| page | opt | Страница (деф. 1) |
| limit | opt | Диалогов на странице (деф. 30) |
| Поле | Тип | Описание |
|---|---|---|
| status | opt | open | closed |
| assignedTo | opt | ID пользователя |
Query параметры
| Параметр | Тип | Описание |
|---|---|---|
| before | opt | ID сообщения (пагинация назад) |
| limit | opt | Деф. 50 |
| Поле | Тип | Описание |
|---|---|---|
| type | req | text | image | video | document | audio |
| text | opt | Текст сообщения |
| mediaUrl | opt | URL медиа из /conversations/upload |
| replyToId | opt | ID ответного сообщения |
Ьлёт multipart/form-data с полем file. Юакже принимает JSON с полем url (если файл уже в сети).
Отмечает все сообщения диалога прочитанными, обнуляет unreadCount. Ответ 200.
Query
| Параметр | Тип | Описание |
|---|---|---|
| search | opt | Поиск по имени/телефону |
| tag | opt | Фильтр по тегу |
| page / limit | opt | Пагинация |
| Поле | Тип | Описание |
|---|---|---|
| name | req | Имя |
| phone | opt | Юелефон |
| opt | ||
| tags | opt | Массив строк |
| externalId | opt | ID во внешней системе |
Юе же поля, что при создании, все опциональны.
| Поле | Тип | Описание |
|---|---|---|
| primaryId | req | Главная запись |
| mergeIds | req | Массив ID для объединения |
| Поле | Тип | Описание |
|---|---|---|
| name | req | Название для поиска |
| content | req | Текст (поддерживает {{var}}) |
204 No Content.
Возвращает все рассылки аккаунта.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| name | req | Название (1-200 символов) |
| channelId | req | ID канала отправки |
| message | req | Объект: { type, text, media } |
| message.type | req | text | image | video | document |
| message.text | opt | Текст сообщения (до 4096 символов) |
| message.media | opt | { url, contentType } — медиа-вложение |
| recipients | req | Объект: { mode, tags?, contactIds? } |
| recipients.mode | req | all | tags | contacts |
| recipients.tags | opt | Массив тегов (при mode=tags) |
| recipients.contactIds | opt | Массив ID контактов (при mode=contacts) |
| throttle | opt | Задержка между отправками, мс (200-60000, по умолч. 1000) |
| tagOnSend | opt | Тег, присваиваемый контакту при отправке |
Обновляет draft-рассылку. Те же поля, что и при создании.
Запускает асинхронную отправку. Статус рассылки меняется на sending. Прогресс доступен через GET /broadcasts/:id/stats.
Останавливает активную рассылку. Статус → cancelled.
Удаляет рассылку (только draft или completed). 204 No Content.
Возвращает все правила, отсортированные по приоритету (DESC).
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| name | req | Название (1-200) |
| trigger.type | req | keyword | contains | regex | any |
| trigger.value | opt | Значение триггера (до 500 символов) |
| actions | req | Массив действий (1-10) |
| actions[].type | req | reply | assign | tag | close |
| actions[].text | opt | Текст ответа (для reply) |
| actions[].assignTo | opt | ID оператора (для assign) |
| actions[].tag | opt | Тег (для tag) |
| channelId | opt | Ограничить конкретным каналом |
| priority | opt | Приоритет 0-1000 (по умолч. 0) |
| oncePerContact | opt | Сработать не более 1 раза на контакт |
Частичное обновление. Те же поля, что и при создании.
Переключает isActive. Возвращает обновлённый объект.
204 No Content.
Возвращает все каскады аккаунта (без подробных sends).
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| name | req | Название (1-200) |
| steps | req | Массив шагов (2-10) |
| steps[].channelId | req | ID канала для шага |
| steps[].timeout | opt | Таймаут в секундах (5-86400, по умолч. 300) |
Частичное обновление. Те же поля, что и при создании.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| contactId | req | ID контакта-получателя |
| message | req | Объект: { type, text, media } |
Каскад отправляет сообщение через первый канал. Если не доставлено за timeout — переходит к следующему шагу.
204 No Content.
Возвращает все flows, отсортированные по дате обновления.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
| name | req | Название (1-200) |
| nodes | opt | Массив блоков: { id, type, position, data } |
| nodes[].type | req | trigger | condition | action | delay |
| nodes[].position | req | { x, y } — позиция на canvas |
| edges | opt | Массив связей: { id, source, target, label? } |
| isActive | opt | Активен ли (по умолч. false) |
Сохраняет обновлённый граф (nodes + edges). Те же поля, что и при создании.
Переключает isActive. Возвращает обновлённый объект.
204 No Content.
| Поле | Тип | Описание |
|---|---|---|
| url | req | HTTPS URL приёмника |
| events | req | Массив событий: ["new_message","message_status"] |
| secret | opt | Секрет для подписи HMAC-SHA256 |
Отправляет тестовое событие на Webhook и возвращает HTTP-код ответа.
204 No Content.
Управление интеграциями с amoCRM, Bitrix24, YCLIENTS и comka.ru (тип comkacrm). Креденшиалы хранятся в зашифрованном виде.
Возвращает все настроенные CRM-интеграции аккаунта. Поля credentials замаскированы (****).
| Параметр | Тип | Описание |
|---|---|---|
| type | string | amocrm | bitrix24 | yclients | comkacrm required |
| credentials | object | Объект с учётными данными (зависит от типа) required |
Credentials по типам:
amoCRM: domain, clientId, clientSecret, authCode
Bitrix24: webhookUrl или domain + clientId + clientSecret + authCode
YCLIENTS: обычно подключается через Marketplace. Для API-подключения достаточно companyId (токены берутся из server config при необходимости).
comka.ru: см. раздел comkacrm в панели интеграций (embed + webhooks + auto-create lead).
Обновляет credentials и/или isActive. Новые credentials мержатся с существующими.
Делает тестовый запрос к CRM API. Возвращает {"ok": true} или ошибку.
Удаляет интеграцию. Синхронизация прекращается немедленно.
Создаёт YCLIENTS-интеграцию из маркетплейс-события. Используется при установке приложения из YCLIENTS.
| Параметр | Тип | Описание |
|---|---|---|
| salonId | string | ID филиала в YCLIENTS required |
| salonName | string | Название филиала opt |
| userData | string | Base64 payload из Marketplace opt |
| userDataSign | string | HMAC подпись payload opt |
Импортирует пресеты шаблонов YCLIENTS (новая запись, подтверждение, перенос, отмена, напоминание, отзыв, день рождения).
Подключитесь по URL: wss://panel.wonderchat.ru?token=<jwt>. События приходят в формате {"type":"event_name","data":{...}}.
new_message
Новое входящее или исходящее сообщение.
message_status
Ютатус сообщения изменился: sent → delivered → read.
channel_status
Ютатус канала изменился: online | offline | connecting.
qr_code
Новый QR-код сгенерирован для WhatsApp.
typing
Пользователь пишет в выбранном диалоге.