Аккаунты
Получить аккаунт
Возвращает конфигурацию одного аккаунта. Чувствительные учётные данные провайдера в provider_data намеренно исключены из этого ответа из соображений безопасности. Состояние аутентификации — включая ожидающие QR-коды и коды подтверждения — доступно отдельно через эндпоинты Authentication.
https://api.unifyport.ai/v1/accounts/{account_id}Поддерживаемые каналы
Перед вызовом
Используйте X-Api-Key нужного рабочего пространства на сервере. Перед запуском замените все заполнители.
Откуда взять параметры
- account_id
- Возьмите data.id из создания или запроса аккаунта. Идентификатор относится к рабочему пространству X-Api-Key. Получить аккаунт
Параметры запроса
Заголовки
X-Api-KeyAPI-ключ рабочей области. Рабочая область определяется по этому заголовку.
Параметры пути
account_idИдентификатор для маршрута раздела accounts.
Тело запроса
Этот эндпоинт не требует JSON-тела запроса.
Как понять результат
Оцените результат по полям ответа и HTTP-статусу этого API, затем выберите следующий шаг в связанных операциях.
Ответ 200 OK
{
"request_id": "<REQUEST_ID>",
"data": {
"id": "acc_example",
"name": "Telegram Production",
"provider": "telegram",
"region": "global",
"status": "active",
"runtime_status": "running",
"auth_mode": "qrcode",
"capabilities": [
"send_message",
"receive_message"
],
"metadata": {
"env": "production"
},
"provider_account_ref": "provider-side-identifier",
"provider_profile": {
"id": "778899",
"phone": "8600000000000",
"username": "production_bot",
"display_name": "Production Bot",
"first_name": "Production",
"last_name": "Bot",
"avatar_url": "https://example.com/avatar.jpg",
"bio": "Customer support"
}
}
}
Тело ответа
provider_profileobjectПрофиль, сообщённый провайдером, например display_name. Не возвращается до аутентификации аккаунта.
provider_profileПрофиль, сообщённый провайдером, например display_name. Не возвращается до аутентификации аккаунта.
idНепрозрачный идентификатор аккаунта в подключённом канале. Для WhatsApp это может быть canonical LID без суффикса устройства.
device_idНеобязательный номер устройства входа в сведениях аккаунта WhatsApp, если текущую сессию можно определить. Может измениться после повторной авторизации и не является постоянным идентификатором.
minimum: 0 · maximum: 65535
phoneНормализованный телефон без пробелов, дефисов и начального плюса.
usernameИмя пользователя у провайдера, если доступно.
display_nameОтображаемое имя аккаунта; для WhatsApp оно формируется с приоритетом BusinessName и резервным переходом на PushName.
push_namePushName, сейчас заданный в аккаунте WhatsApp; другие провайдеры не определяют семантику этого поля.
business_nameWhatsApp BusinessName; поле отсутствует, если provider не возвращает значение.
first_nameИмя, сообщённое провайдером.
last_nameФамилия, сообщённая провайдером.
avatar_urlURL аватара аккаунта у провайдера.
bioОписание или статус аккаунта у провайдера.
platformИдентификатор платформы входа, который WhatsApp сообщает при сопряжении. Считайте его непрозрачной строкой и поддерживайте неизвестные значения; для других провайдеров смысл поля не определён. Это не поле device_platform.
billingobjectОплаченный период только аккаунтов кошелька; баланс не доказывает покупку.
billingОплаченный период только аккаунтов кошелька; баланс не доказывает покупку.
period_start_atНачало оплаченного периода с сервера.
format: date-time
period_end_atКонец оплаченного периода с сервера.
format: date-time
amount_minorНеизменяемая сумма сервера в центах USD; точное целое число.
minimum: 1 · format: int64
currencyТолько USD.
operation_idПубличный ID из billing.operation_id или ответа удаления; используйте неизменным в исходном пространстве.
stateСостояние оплаты или операции не доказывает авторизацию, подключение или зачисление возврата.
enum: ACTIVE, DELETING, DELETED, COMPENSATED, REVIEW
idУникальный идентификатор аккаунта (acc_...). Используйте его в маршрутах уровня аккаунта.
nameПонятное человеку имя аккаунта.
providerИдентификатор канала. Используйте значение API без изменений; возвращаемые этим API значения указаны в enum ниже.
enum: telegram, whatsapp, line, twitter, facebook, zalo, tiktok, whatsapp-protocol
regionРегион выхода в сеть по умолчанию, выбранный для аккаунта.
statusСостояние жизненного цикла аккаунта, например active.
runtime_statusНормализованное состояние runtime: одно из unknown, starting, running, stopping, stopped, reconnecting, disconnected или error.
enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error
auth_modeПоток аутентификации, используемый аккаунтом: code, qrcode или session. TikTok поддерживает qrcode и session, но переключение между ними в существующем аккаунте не поддерживается.
capabilities[]Возможности, включённые для аккаунта, например send_message и receive_message.
metadataВаши собственные метки окружения, сохранённые в аккаунте.
provider_account_refИдентификатор на стороне провайдера, который можно привязать для сопоставления аккаунта с вашей собственной системой.
proxyПрокси, явно настроенный клиентом; учётные данные выхода в сеть по умолчанию платформы не возвращаются.
Ответы
200200 OK
Запрос выполнен. См. пример тела ответа.
400Bad Request
Тело запроса, путь или параметры некорректны.
401Unauthorized
Заголовок X-Api-Key отсутствует или недействителен.
403Forbidden
Запрос распознан, но операция запрещена.
404Not Found
Запрошенный ресурс не найден. Сверьте error.code с текущей операцией.
500Internal Server Error
Сервис столкнулся с неожиданной ошибкой.
При ошибке запроса
Проверьте 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" } }- 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" } }- get_account_failed · 20001 · 500
Получить аккаунт: сервис не смог получить достоверный результат запроса.
Действия и повторы: Сохраните request_id, проверьте идентификаторы и доступ аккаунта. Повторяйте чтение после проверки причины; неудачный запрос не доказывает отсутствие ресурса или пустой результат.
Пример JSON; message зависит от фактической причины · 500 · 20001
{ "request_id": "req_example", "error": { "code": "get_account_failed", "numeric_code": "20001", "message": "Failed to get account" } }- get_account_failed · 20020 · 500
Проверьте account_id и используйте X-Api-Key рабочего пространства владельца аккаунта. Текущий ключ не даёт доступа к аккаунту, которого нет в этом пространстве.
Условие: Применяется, когда аккаунт не найден: прежние HTTP-статус и код операции сохраняются, а numeric_code уточняет отсутствие аккаунта.
Действия и повторы: Проверьте идентификатор, принадлежность ресурса и текущее рабочее пространство. Не повторяйте запрос автоматически, считая подтверждённое отсутствие или недоступность временным сбоем сервиса.
Пример JSON; message зависит от фактической причины · 500 · 20020
{ "request_id": "req_example", "error": { "code": "get_account_failed", "numeric_code": "20020", "message": "Account not found" } }