Авторизация аккаунта
Создать сессию авторизации провайдера
Создаёт публичную сессию авторизации WhatsApp для дополнительного шага Passkey в QR-потоке. Используйте размещённый authorize_url или auth_payload.public_key для прямого WebAuthn-вызова. Не записывайте URL, challenge или учётные данные в публичные логи и не передавайте их другим лицам.
https://api.unifyport.ai/v1/accounts/{account_id}/auth-sessionsПоддерживаемые каналы
Перед вызовом
Используйте X-Api-Key нужного рабочего пространства на сервере. Перед запуском замените все заполнители.
Откуда взять параметры
- account_id
- Возьмите data.id из создания или запроса аккаунта. Идентификатор относится к рабочему пространству X-Api-Key. Получить аккаунт
Параметры запроса
Заголовки
X-Api-KeyAPI-ключ рабочей области. Рабочая область определяется по этому заголовку.
Параметры пути
account_idИдентификатор для маршрута раздела authentication.
Тело запроса
Этот эндпоинт не требует JSON-тела запроса.
Как понять результат
Прочитайте status/auth_status и возвращённый auth_payload для запрошенного действия авторизации. Если нужны действия пользователя, следуйте руководству канала. authorized означает завершение авторизации; перед отправкой проверьте также runtime_status.
Ответ 201 Created
{
"request_id": "<REQUEST_ID>",
"data": {
"account_id": "acc_example",
"provider": "whatsapp",
"auth_mode": "qrcode",
"status": "passkey_required",
"auth_payload": {
"type": "passkey",
"public_key": {
"challenge": "<BASE64URL_CHALLENGE>"
}
},
"authorize_url": "https://auth.example.com/authorize/whatsapp/<SESSION_TOKEN>",
"expires_at": "2026-08-12T08:10:00Z",
"switchable": false,
"available_auth_modes": [
"qrcode"
]
}
}
Тело ответа
account_idАккаунт провайдера, к которому относится этот ответ.
providerИдентификатор канала. Используйте значение API без изменений; возвращаемые этим API значения указаны в enum ниже.
enum: whatsapp
auth_modeРежим авторизации сессии. Passkey является дополнительной веткой WhatsApp qrcode.
statusТекущий статус потока авторизации, например pending_auth, awaiting_qr_scan, awaiting_code, pending, passkey_required, passkey_pending, passkey_confirmation, passkey_confirmation_sent, authorized или failed.
auth_payloadСтандартная полезная нагрузка для текущего шага. QR использует qr_code; шаг проверки кода использует type=code; Passkey может вернуть type=passkey и public_key либо type=passkey_confirmation с запросом подтверждения. Полезные нагрузки взаимоисключающих шагов не появляются вместе. TikTok session может вернуть запрос сканирования QR или ввода кода подтверждения, если требуется взаимодействие; HTTP 200 не означает успешную авторизацию.
authorize_urlВременный размещённый URL для завершения шага Passkey. Не записывайте и не передавайте это значение.
format: uri
expires_atМетка времени RFC3339, после которой текущий auth_payload становится недействительным.
format: date-time
switchableУказывает, может ли пользователь переключиться на другой доступный режим авторизации.
available_auth_modes[]Режимы авторизации, на которые можно безопасно переключиться из текущей сессии.
Ответы
201201 Created
Запрос выполнен. См. пример тела ответа.
400Bad Request
Тело запроса, путь или параметры некорректны.
401Unauthorized
Заголовок X-Api-Key отсутствует или недействителен.
403Forbidden
Запрос распознан, но операция запрещена.
404Not Found
Запрошенный ресурс не найден. Сверьте error.code с текущей операцией.
409Conflict
Запрошенная операция конфликтует с существующим аккаунтом провайдера или ресурсом.
500Internal Server Error
Сервис столкнулся с неожиданной ошибкой.
503Service Unavailable
Необходимая серверная служба временно недоступна.
При ошибке запроса
Проверьте HTTP и error.code/numeric_code, сохраните request_id. Исправьте параметры, завершите авторизацию или проверьте runtime. До повторной отправки или записи выясните результат предыдущей попытки. Справочник ошибок
Сопоставляйте HTTP-статус, error.code и error.numeric_code с текущей операцией. Числовой код — строка. Сохраняйте request_id для диагностики: это не ключ идемпотентности и не идентификатор задачи.
- invalid_request · 10000 · 400
Проверьте JSON и обязательные поля.
Условие: Применяется, если тело запроса непустое, а Content-Type отличается от application/json.
Действия и повторы: Исправьте параметры с учётом операции и канала. Повтор неизменённого неверного запроса не устранит ошибку.
Пример JSON; message зависит от фактической причины · 400 · 10000
{ "request_id": "req_example", "error": { "code": "invalid_request", "numeric_code": "10000", "message": "Content-Type must be application/json" } }- invalid_target_workspace · 11003 · 400
Целевое рабочее пространство в заголовке переопределения пусто или задано неверно. Удалите этот заголовок и используйте API-ключ нужного пространства.
Условие: Применяется к запросам с заголовком переопределения рабочего пространства X-Workspace-Id.
Действия и повторы: Исправьте параметры с учётом операции и канала. Повтор неизменённого неверного запроса не устранит ошибку.
Пример JSON; message зависит от фактической причины · 400 · 11003
{ "request_id": "req_example", "error": { "code": "invalid_target_workspace", "numeric_code": "11003", "message": "Invalid target workspace" } }- unsupported_provider_auth_mode · 20018 · 400
Используйте поддерживаемый каналом auth_mode.
Действия и повторы: Выберите поддерживаемые канал и действие. Повтор запроса не добавит возможностей и не откроет доступ к бета-функциям.
Пример JSON; message зависит от фактической причины · 400 · 20018
{ "request_id": "req_example", "error": { "code": "unsupported_provider_auth_mode", "numeric_code": "20018", "message": "Auth mode not supported by this provider" } }- invalid_api_key · 11001 · 401
Проверьте правильность и активность ключа API.
Действия и повторы: Сохраните request_id и структурированные коды; выясните причину текущего сбоя перед следующим действием.
Пример JSON; message зависит от фактической причины · 401 · 11001
{ "request_id": "req_example", "error": { "code": "invalid_api_key", "numeric_code": "11001", "message": "Invalid API key" } }- missing_api_key · 11000 · 401
Добавьте заголовок X-Api-Key.
Действия и повторы: Сохраните request_id и структурированные коды; выясните причину текущего сбоя перед следующим действием.
Пример · 401 · 11000
{ "request_id": "req_xxx", "error": { "code": "missing_api_key", "numeric_code": "11000", "message": "Missing X-Api-Key header" } }- workspace_override_forbidden · 11002 · 403
Запрос пытается переопределить рабочее пространство без необходимых прав. Удалите заголовок переопределения и используйте API-ключ нужного рабочего пространства.
Условие: Применяется к запросам с заголовком переопределения рабочего пространства X-Workspace-Id.
Действия и повторы: Сохраните request_id и структурированные коды; выясните причину текущего сбоя перед следующим действием.
Пример JSON; message зависит от фактической причины · 403 · 11002
{ "request_id": "req_example", "error": { "code": "workspace_override_forbidden", "numeric_code": "11002", "message": "Workspace override is not allowed" } }- target_workspace_not_found · 11004 · 404
Переопределённое рабочее пространство не найдено или недоступно. Проверьте его принадлежность, удалите заголовок переопределения и используйте нужный API-ключ; повторы не дадут доступ.
Условие: Применяется к запросам с заголовком переопределения рабочего пространства X-Workspace-Id.
Действия и повторы: Проверьте идентификатор, принадлежность ресурса и текущее рабочее пространство. Не повторяйте запрос автоматически, считая подтверждённое отсутствие или недоступность временным сбоем сервиса.
Пример JSON; message зависит от фактической причины · 404 · 11004
{ "request_id": "req_example", "error": { "code": "target_workspace_not_found", "numeric_code": "11004", "message": "Target workspace not found" } }- egress_configuration_pending · 20032 · 409
Сейчас невозможно подтвердить или загрузить сетевую конфигурацию платформы по умолчанию. Это не означает выход аккаунта из системы.
Условие: Операция использует выделяемую платформой сетевую ёмкость или закреплённую за аккаунтом конфигурацию сети по умолчанию.
Действия и повторы: Сохраните request_id и проверьте аккаунт или результат создания перед повторной записью. Дождитесь восстановления ёмкости или конфигурации либо обратитесь в поддержку. Не создавайте аккаунты, не меняйте сеть и не перезапускайте их автоматически снова и снова.
Пример JSON; message зависит от фактической причины · 409 · 20032
{ "request_id": "req_example", "error": { "code": "egress_configuration_pending", "numeric_code": "20032", "message": "Account network configuration is pending verification" } }- provider_not_ready · 30009 · 409
Подключение не готово. Перед повтором проверьте авторизацию и runtime_status.
Действия и повторы: Проверьте авторизацию и runtime-статус, затем выберите refresh, start или reconnect с учётом нужного состояния и возможностей канала. Сбой соединения сам по себе не означает выход из аккаунта. Перед зависимыми операциями подтвердите running.
Пример JSON; message зависит от фактической причины · 409 · 30009
{ "request_id": "req_example", "error": { "code": "provider_not_ready", "numeric_code": "30009", "message": "Provider client is not ready" } }- run_auth_action_failed · 20010 · 500
Действие авторизации: действие авторизации не выполнено; проверьте текущий процесс, не предполагая необходимость начать заново.
Действия и повторы: Проверьте текущий процесс авторизации и необходимость действий пользователя. Не начинайте новую авторизацию только из-за этого сбоя и не отправляйте действия в истёкшую или завершённую сессию.
Пример JSON; message зависит от фактической причины · 500 · 20010
{ "request_id": "req_example", "error": { "code": "run_auth_action_failed", "numeric_code": "20010", "message": "Failed to run auth action" } }- run_auth_action_failed · 20020 · 500
Проверьте account_id и используйте X-Api-Key рабочего пространства владельца аккаунта. Текущий ключ не даёт доступа к аккаунту, которого нет в этом пространстве.
Условие: Применяется, когда аккаунт не найден: прежние HTTP-статус и код операции сохраняются, а numeric_code уточняет отсутствие аккаунта.
Действия и повторы: Проверьте идентификатор, принадлежность ресурса и текущее рабочее пространство. Не повторяйте запрос автоматически, считая подтверждённое отсутствие или недоступность временным сбоем сервиса.
Пример JSON; message зависит от фактической причины · 500 · 20020
{ "request_id": "req_example", "error": { "code": "run_auth_action_failed", "numeric_code": "20020", "message": "Account not found" } }- internal_auth_not_configured · 11006 · 503
Сервис сессий авторизации недоступен или не настроен для этого запроса. Обратитесь к оператору сервиса для проверки.
Действия и повторы: Сохраните request_id и структурированные коды; выясните причину текущего сбоя перед следующим действием.
Пример JSON; message зависит от фактической причины · 503 · 11006
{ "request_id": "req_example", "error": { "code": "internal_auth_not_configured", "numeric_code": "11006", "message": "Internal endpoint authentication is not configured" } }