Справочник API

Каналы

Авторизация WhatsApp

WhatsApp поддерживает QR-сопряжение и сопряжение по номеру телефона через стандартные эндпоинты аутентификации. QR-поток также может перейти в дополнительную авторизацию Passkey через три публичных эндпоинта с X-Api-Key.

Выберите способ авторизации

qrcode

WhatsApp QR-сопряжение: вызовите /auth/qr/start, чтобы начать сессию устройства. QR-токен приходит через account.auth.required и также доступен для опроса через /auth/qr/check.

  1. 1. POST /v1/accounts с provider=whatsapp, auth_mode=qrcode. device_os / device_platform задаются в provider_data, постоянная маршрутизация — верхнеуровневым proxy.
  2. 2. POST /v1/accounts/{account_id}/auth/qr/start запускает устройство. Возвращается status=awaiting_qr_scan, но сама строка QR приходит асинхронно.
  3. 3. Слушайте событие account.auth.required на webhook — auth_payload.qr_code содержит строку, которую UI должен отрисовать как сканируемый QR. Альтернатива — опрос /auth/qr/check.
  4. 4. После сканирования приходит account.auth.succeeded с provider_account_ref, обычно затем account.started. Проверьте runtime_status, прежде чем решать, нужен ли POST /v1/accounts/{account_id}/runtime/start.
  • provider_data.device_os — Метка ОС устройства, отображаемая на экране «Связанные устройства». По умолчанию MacOS. Нужно задавать вместе с device_platform — допустимые комбинации см. в таблице платформ выше по потоку.
  • provider_data.device_platform — Числовой код платформы устройства (1=CHROME, 2=FIREFOX, 5=SAFARI, 14=IOS_PHONE, 16=ANDROID_PHONE, ...). Действует только в паре с device_os.
  • proxy — Постоянный proxy верхнего уровня аккаунта; это не provider_data.proxy_config.

code

Отправьте {} в POST /auth/start с сохранённым номером. Покажите data.verify_code для ввода в WhatsApp на телефоне. Не отправляйте его в /auth/code. Перед отправкой сообщений проверьте авторизацию и подключение.

  1. 1. POST /v1/accounts с provider=whatsapp, auth_mode=code и provider_data.phone в формате E.164 (только цифры). Номер сохраняется на аккаунте и автоматически переиспользуется последующими действиями аутентификации.
  2. 2. Отправьте {} в POST /auth/start с сохранённым номером. Покажите data.verify_code для ввода в WhatsApp на телефоне. Не отправляйте его в /auth/code. Перед отправкой сообщений проверьте авторизацию и подключение.
  3. 3. Покажите data.verify_code пользователю. Время истечения кода не гарантируется в ответе; если код истёк, начните сопряжение заново.
  4. 4. Проверяйте GET /auth до status=authorized, затем убедитесь, что runtime_status=running, прежде чем отправлять сообщения.
  • provider_data.phone — Номер телефона в E.164 (только цифры, например 15551234567). Указывается в provider_data.phone при создании аккаунта; последующие действия аутентификации автоматически переиспользуют его.

Passkey (ветвь QR)

Дополнительная ветка Passkey в WhatsApp: после начала QR-потока состояние может потребовать WebAuthn credential и, при необходимости, явного подтверждения.

  1. 1. Сначала запустите обычный WhatsApp QR-поток. Когда GET /v1/accounts/{account_id}/auth вернёт status=passkey_required, создайте POST /v1/accounts/{account_id}/auth-sessions.
  2. 2. Завершите размещённый authorize_url либо используйте auth_payload.public_key в WebAuthn API и отправьте сериализованный credential через POST /auth/passkey-response.
  3. 3. Если состояние станет passkey_confirmation, вызовите POST /v1/accounts/{account_id}/auth/passkey-confirm без JSON-тела.
  4. 4. Опрашивайте GET /v1/accounts/{account_id}/auth после каждого действия. passkey_pending и passkey_confirmation_sent являются промежуточными состояниями.
  5. 5. Завершите поток при status=authorized или обработайте last_error при status=failed. Для повтора начните новый QR-поток.
  • auth_payload.public_key — Публичные параметры WebAuthn challenge из auth_payload.public_key. Передавайте их только WebAuthn API в доверенном origin.
  • authorize_url — Временная размещённая страница авторизации для завершения Passkey без собственной реализации WebAuthn UI.
  • webauthn_response — Сериализованный credential WebAuthn. Передавайте его как строку без изменений; не записывайте и не публикуйте значение.

Примечания

  • QR приходит через webhook-событие account.auth.required, а не синхронно в ответе на /auth/qr/start. Подключите webhook-приёмник до запуска потока.
  • authorize_url, challenge и credential WebAuthn являются временными чувствительными данными. В документации используйте только плейсхолдеры; не записывайте значения в публичные логи и не передавайте их другим лицам.
  • Отправьте {} в POST /auth/start с сохранённым номером. Покажите data.verify_code для ввода в WhatsApp на телефоне. Не отправляйте его в /auth/code. Перед отправкой сообщений проверьте авторизацию и подключение. Покажите data.verify_code пользователю. Время истечения кода не гарантируется в ответе; если код истёк, начните сопряжение заново.
  • Кэшированный provider client не переключает proxy на лету. Во время авторизации выполните stop и перезапуск; для работающего аккаунта — runtime/reconnect.
  • Реакции приходят в виде events.Message + Message.reactionMessage, но платформа отображает их как message.reaction (эмодзи в data.event.reaction, id исходного сообщения в data.message.target_message_id).
  • Медиа, превышающее лимиты вышестоящего сервиса (аудио 50 MB / видео 60 MB / документы 50 MB), отдаётся с пустым url и metadata.is_big_file=true.