Documentation

Bridge API

whatsapp

WhatsApp QR Bridge

WhatsApp в Bridge подключается как linked device: либо через QR, либо через phone link code. Worker WhatsApp работает через отдельный Bridge VPN gateway, чтобы не смешивать сетевой маршрут с MAX.

provider: whatsappchannel_type: whatsapp_qr_bridgeupdated: 2026-05-06

Connect

Как проходит подключение

Клиент подключает канал в кабинете. После статуса connected входящие события идут в webhook, а outbound API начинает принимать отправку в этот канал.

  1. Шаг 1

    Пользователь создает WhatsApp-канал в /my/channels.

  2. Шаг 2

    Для QR flow Bridge показывает linked-device QR, пользователь сканирует его в WhatsApp на телефоне.

  3. Шаг 3

    Для link-code flow Bridge принимает номер телефона и показывает pairing code, который нужно ввести в WhatsApp в Linked devices.

  4. Шаг 4

    После успешной пары channel session переходит в connected, listener начинает принимать входящие события.

Inbound

Что приходит из канала

Text

Работает

message.type = text, включая emoji-only сообщения и private/group chats.

Photo, video, animation

Работает

Media скачивается через Baileys, сохраняется в Bridge storage и приходит в attachments[].

Audio, voice

Работает

Voice/audio сохраняются как attachments с metadata.is_voice и duration best-effort.

Sticker, document

Работает

Стикеры и документы проходят через общий storage/download flow.

Group metadata

Работает

data.chat.type = group, data.chat.title и sender participant metadata подтягиваются best-effort.

Outbound

Что можно отправлять через API

Для outbound используйте POST /v1/messages, bearer API key со scope messages:send, channel_id подключенного канала и provider chat id из inbound webhook.

Text

Работает

POST /v1/messages с content.type = text отправляет сообщение в WhatsApp JID.

Photo, video, file, audio, voice, GIF, sticker

Работает

content.type = media поддерживает photo, video, file/document, audio, voice note, GIF/animation и sticker.

Multiple attachments

Работает

Если передать несколько вложений в attachments[], Bridge отправит их последовательно в рамках одного API-запроса; content.text уйдет как caption у первого вложения.

Reply to message

Работает

Если передать reply_to.provider_message_id, Bridge отправит quoted reply в тот же чат.

Проверка

Что уже проверено

Проверено

  • QR login и connected-сессия.
  • Inbound text, emoji-only, photo, voice, sticker, animation/GIF и document.
  • Group chat metadata и delivery в webhook с HTTP 200.
  • Outbound reply_to, multiple attachments и расширенные media types для WhatsApp API.
  • Phone link code connect в /my/channels.
  • Bridge VPN watchdog, NordVPN target rotation и WhatsApp listener recovery.
  • Webhook message.deleted для revoke/delete событий WhatsApp.

Что осталось

  • Live-smoke outbound media matrix по photo/video/file.
  • Отдельный публичный contract для group lifecycle events, если он понадобится внешним интеграциям.
  • Финальная классификация unsupported WhatsApp events.

API notes

Практические заметки для интеграции

Пример recipient

79161234567@s.whatsapp.net

Для ответа используйте data.chat.external_id, например 79161234567@s.whatsapp.net или group JID.

Для reply_to используйте reply_to.provider_message_id из входящего webhook-события.

Если в attachments[] несколько элементов, Bridge отправит их последовательно; provider_message_id в /v1/messages/{id} останется первым message id, а внутренний usage считает фактическое количество отправленных provider messages.

Входящие message.reply_to и message.forwarded для WhatsApp извлекаются best-effort из contextInfo и raw message wrapper. Если WhatsApp отдает только marker пересылки без source metadata, Bridge все равно сохраняет forwarded как object с null-полями. На 28 апреля 2026 года это уже подтверждено на prod.

Для whatsapp_qr_bridge revoke/delete теперь приходит отдельным webhook message.deleted; service payload protocolMessage больше не публикуется как обычный message.inbound.

Channels

Сравнить с другими каналами