Справочник API
Начало работы

Жизненный цикл аккаунта

Аккаунт несёт три независимых состояния: status (бизнес-переключатель, который задаёте вы), состояние аутентификации, возвращаемое GET /v1/accounts/{id}/auth, и runtime_status (живое соединение). В полезной нагрузке webhook последние два представлены как auth_status и runtime_status — обратите внимание: у самого REST-объекта аккаунта поля с именем auth_status нет.

Машина состояний аутентификации

  • pending_auth

    Начальное состояние после создания аккаунта; поток ещё не запущен.

  • awaiting_qr_scan

    Активен QR-поток; auth_payload содержит содержимое QR для отрисовки.

  • awaiting_code

    Активен поток с кодом; для WhatsApp verify_code из auth_payload вводится на телефоне.

  • awaiting_password

    Провайдер требует двухфакторный пароль после шага с кодом.

  • authorized

    Аутентификация завершена. Runtime запускается автоматически.

  • failed

    Поток завершился ошибкой; причина — в last_error. Для повтора запустите новый поток.

Переходы
1
pending_authawaiting_qr_scan

POST /auth/qr/start начинает QR-поток.

2
pending_authawaiting_code

POST /auth/start начинает поток с кодом подтверждения.

3
awaiting_codeawaiting_password

Провайдер требует двухфакторный пароль.

4
awaiting_qr_scanauthorized

Провайдер подтверждает сканирование QR.

5
awaiting_codeauthorized

Код (или сопряжение WhatsApp) принят.

6
awaiting_passwordauthorized

Пароль принят.

7
authorizedpending_auth

Провайдер аннулирует сессию — приходит событие account.auth.required, и нужен новый поток.

8
awaiting_*failed

Провайдер сообщает об ошибке на любом шаге ожидания (событие account.auth.failed).

9
awaiting_*pending_auth

POST /auth/cancel прерывает активный поток.

Подсостояния авторизации Passkey в WhatsApp

  • passkey_required

    QR-поток требует дополнительного credential Passkey. Создайте публичную сессию авторизации.

  • passkey_pending

    Challenge Passkey выдан; ожидается завершение размещённого authorize_url или отправка ответа WebAuthn.

  • passkey_confirmation

    Провайдер требует явного подтверждения после проверки credential.

  • passkey_confirmation_sent

    Запрос подтверждения отправлен; продолжайте опрашивать состояние аутентификации.

  • authorized

    Аутентификация завершена. Runtime запускается автоматически.

  • failed

    Поток завершился ошибкой; причина — в last_error. Для повтора запустите новый поток.

Переходы
1
passkey_requiredpasskey_pending

Отправьте сериализованный credential WebAuthn через размещённую страницу или POST /auth/passkey-response.

2
passkey_pendingpasskey_confirmation

Провайдер просит пользователя подтвердить операцию Passkey.

3
passkey_confirmationpasskey_confirmation_sent

POST /auth/passkey-confirm отправляет подтверждение пользователя.

4
passkey_pendingauthorized

Провайдер принимает credential без дополнительного подтверждения.

5
passkey_confirmation_sentauthorized

Провайдер принимает подтверждённый credential.

6
passkey_*failed

Провайдер отклоняет или не может завершить поток Passkey.

Машина состояний runtime

  • unknown

    Начальное состояние после создания аккаунта, а также когда у платформы нет свежего отчёта от провайдера — вызовите /runtime/refresh для ресинхронизации.

  • starting

    Идёт запуск; провайдер выводит сессию в онлайн.

  • running

    Подключено; можно отправлять и получать сообщения.

  • reconnecting

    Соединение оборвалось, идёт автоматическое или ручное переподключение.

  • disconnected

    Провайдер сообщил, что сессия офлайн; для восстановления выполните reconnect или start.

  • stopping

    Идёт остановка.

  • stopped

    Не подключено. Состояние после остановки.

  • error

    Runtime столкнулся с неустранимой ошибкой; причина — в last_error.

Переходы
1
unknownstarting

Автоматический запуск после успешной авторизации.

2
stoppedstarting

Явный POST /runtime/start.

3
startingrunning

Сессия провайдера выходит в онлайн (событие account.started).

4
runningreconnecting

Соединение обрывается либо вызван POST /runtime/reconnect.

5
reconnectingrunning

Соединение восстановлено.

6
runningdisconnected

Провайдер сообщает, что сессия офлайн (событие account.status.updated).

7
disconnectedrunning

POST /runtime/reconnect или /runtime/start возвращает её в онлайн.

8
runningstopping

POST /runtime/stop начинает плавную остановку.

9
stoppingstopped

Остановка завершена.

10
*error

Неустранимая ошибка провайдера в любой момент.

11
*unknown

Нет свежего отчёта провайдера; POST /runtime/refresh ресинхронизирует значение.

Примечания

  • Account.status — ваш собственный (бизнес-переключатель, задаваемый при создании или через PATCH). Два других принадлежат платформе и доступны только для чтения: состояние аутентификации — через GET /v1/accounts/{id}/auth (его поле status), runtime_status — на объекте аккаунта.
  • Успешная авторизация обычно запускает runtime автоматически. POST /runtime/start явно запрашивает запуск; вызывайте его только если фактический runtime_status этого требует, и обрабатывайте operation_status из ответа.
  • Пока аккаунт авторизован, POST /auth/start, /auth/qr/start и /auth/session отклоняются с 409 account_already_authorized. Если новый поток действительно нужен, сначала вызовите POST /auth/cancel.
  • Событие account.auth.required означает, что провайдер аннулировал сессию: состояние аутентификации выходит из authorized, а auth_payload несёт материал (например, новый QR) для повторной аутентификации.
  • account.status.updated сообщает наблюдаемые провайдером изменения авторизации или runtime, но не гарантируется для каждого запрошенного перехода. После действий и переподключений сверяйте webhook-состояние через GET /v1/accounts/{account_id} или POST /runtime/refresh.