Аккаунты
Обновить аккаунт
Частично обновляет аккаунт. Пропущенные поля сохраняются; null недопустим; пустые массивы и объекты очищают соответствующие поля. Дубликат идентичности возвращает 409 duplicate_provider_account.
https://api.unifyport.ai/v1/accounts/{account_id}Поддерживаемые каналы
Перед вызовом
Используйте X-Api-Key нужного рабочего пространства на сервере. Перед запуском замените все заполнители.
Откуда взять параметры
- account_id
- Возьмите data.id из создания или запроса аккаунта. Идентификатор относится к рабочему пространству X-Api-Key. Получить аккаунт
Параметры запроса
Заголовки
X-Api-KeyAPI-ключ рабочей области. Рабочая область определяется по этому заголовку.
Content-TypeИспользуйте application/json при отправке JSON-тела запроса.
Параметры пути
account_idИдентификатор для маршрута раздела accounts.
Тело запроса
nameПонятное человеку имя аккаунта.
providerКлиентский идентификатор провайдера: telegram, whatsapp, whatsapp-protocol, line, twitter, zalo или tiktok.
enum: telegram, whatsapp, line, twitter, facebook, zalo, tiktok, whatsapp-protocol, x, x_client, twitter_client
regionРегион провайдера, используемый для выделения. Выберите регион со значением allocatable: true из Список регионов провайдера.
minLength: 1
statusБизнес-состояние аккаунта, например active или inactive.
runtime_statusЗапрашиваемое состояние runtime, если провайдер позволяет менять его через настройки аккаунта.
enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error
auth_modeОбязателен при создании аккаунта: qrcode, code или session.
enum: qrcode, code, session
capabilities[]В PATCH пропустите для сохранения, передайте [] для очистки; null недопустим.
metadataВ PATCH пропустите для сохранения, передайте {} для очистки; null недопустим.
provider_account_refИдентификатор аккаунта на стороне провайдера, обычно заполняемый после авторизации.
provider_dataНастройки провайдера. В PATCH отсутствие сохраняет значение; {} очищает без добавления учётных данных по умолчанию; null недопустим. TikTok provider_data.enable_comment принимает только Boolean, по умолчанию false; строки, числа и null дают 400 invalid_request. Изменения онлайн требуют reconnect; успех start не подтверждает применение, отключение не отзывает события из очереди. Telegram api_id и api_hash необязательны для code, qrcode и session; собственные данные передаются парой строк одного приложения. При создании без собственных данных и пропуске полей учётных данных в непустой замене используются значения платформы по умолчанию; если нужные значения недоступны, запрос завершается ошибкой. Смена значений по умолчанию не заменяет данные существующих аккаунтов. Не записывайте секреты в журнал.
proxyНеобязательная конфигурация исходящего прокси для аккаунта. При PATCH приоритет имеет пользовательский прокси; очистка восстанавливает конфигурацию по умолчанию на момент создания аккаунта. Для старых аккаунтов сохраняется прежнее поведение очистки.
Как понять результат
Оцените результат по полям ответа и HTTP-статусу этого API, затем выберите следующий шаг в связанных операциях.
Ответ 200 OK
{
"request_id": "<REQUEST_ID>",
"data": {
"id": "acc_example",
"name": "Telegram Production",
"provider": "telegram",
"status": "active",
"auth_mode": "code"
}
}
Тело ответа
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 с текущей операцией.
409Conflict
Запрошенная операция конфликтует с существующим аккаунтом провайдера или ресурсом.
422Unprocessable Entity
Запрос корректен, но целевую беседу провайдера разрешить не удалось.
500Internal Server Error
Сервис столкнулся с неожиданной ошибкой.
502Bad Gateway
Адаптер или вышестоящий провайдер не смог завершить операцию.
При ошибке запроса
Проверьте HTTP и error.code/numeric_code, сохраните request_id. Исправьте параметры, завершите авторизацию или проверьте runtime. До повторной отправки или записи выясните результат предыдущей попытки. Справочник ошибок
Сопоставляйте HTTP-статус, error.code и error.numeric_code с текущей операцией. Числовой код — строка. Сохраняйте request_id для диагностики: это не ключ идемпотентности и не идентификатор задачи.
- auth_mode_phone_required · 20019 · 400
При создании аккаунта этот способ требует provider_data.phone.
Действия и повторы: Исправьте параметры с учётом операции и канала. Повтор неизменённого неверного запроса не устранит ошибку.
Пример JSON; message зависит от фактической причины · 400 · 20019
{ "request_id": "req_example", "error": { "code": "auth_mode_phone_required", "numeric_code": "20019", "message": "Phone number is required for this auth mode" } }- invalid_request · 10000 · 400
Проверьте JSON и обязательные поля.
Действия и повторы: Исправьте параметры с учётом операции и канала. Повтор неизменённого неверного запроса не устранит ошибку.
Пример JSON; message зависит от фактической причины · 400 · 10000
{ "request_id": "req_example", "error": { "code": "invalid_request", "numeric_code": "10000", "message": "Invalid request parameters" } }- 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" } }- duplicate_provider_account · 20015 · 409
Эта учётная запись канала уже привязана к другому аккаунту пространства.
Действия и повторы: Сохраните request_id и структурированные коды; выясните причину текущего сбоя перед следующим действием.
Пример JSON; message зависит от фактической причины · 409 · 20015
{ "request_id": "req_example", "error": { "code": "duplicate_provider_account", "numeric_code": "20015", "message": "A provider account with the same identity already exists in this workspace" } }- 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" } }- provider_not_ready · 30015 · 409
Среда выполнения провайдера остановлена. Перед запуском выясните, не было ли это намеренным; остановка сама по себе не означает выход из аккаунта.
Действия и повторы: Проверьте авторизацию и runtime-статус, затем выберите refresh, start или reconnect с учётом нужного состояния и возможностей канала. Сбой соединения сам по себе не означает выход из аккаунта. Перед зависимыми операциями подтвердите running.
Каналы: WhatsApp
Пример JSON; message зависит от фактической причины · 409 · 30015
{ "request_id": "req_example", "error": { "code": "provider_not_ready", "numeric_code": "30015", "message": "Provider runtime is stopped" } }- egress_change_not_supported · 20034 · 422
Аккаунт использует закреплённую сеть по умолчанию; обычное обновление аккаунта не поддерживает изменение его региона или канала.
Условие: Операция использует выделяемую платформой сетевую ёмкость или закреплённую за аккаунтом конфигурацию сети по умолчанию.
Действия и повторы: Выберите поддерживаемые канал и действие. Повтор запроса не добавит возможностей и не откроет доступ к бета-функциям.
Пример JSON; message зависит от фактической причины · 422 · 20034
{ "request_id": "req_example", "error": { "code": "egress_change_not_supported", "numeric_code": "20034", "message": "The requested network change is not supported" } }- update_account_failed · 20003 · 500
Обновить аккаунт: изменение прервано неклассифицированной ошибкой; итоговое состояние нужно проверить.
Действия и повторы: Перед повторным изменением прочитайте текущее состояние ресурса и выясните результат предыдущей попытки. Сохраните request_id; не повторяйте запись автоматически при неизвестном результате.
Пример JSON; message зависит от фактической причины · 500 · 20003
{ "request_id": "req_example", "error": { "code": "update_account_failed", "numeric_code": "20003", "message": "Failed to update account" } }- update_account_failed · 20020 · 500
Проверьте account_id и используйте X-Api-Key рабочего пространства владельца аккаунта. Текущий ключ не даёт доступа к аккаунту, которого нет в этом пространстве.
Условие: Применяется, когда аккаунт не найден: прежние HTTP-статус и код операции сохраняются, а numeric_code уточняет отсутствие аккаунта.
Действия и повторы: Проверьте идентификатор, принадлежность ресурса и текущее рабочее пространство. Не повторяйте запрос автоматически, считая подтверждённое отсутствие или недоступность временным сбоем сервиса.
Пример JSON; message зависит от фактической причины · 500 · 20020
{ "request_id": "req_example", "error": { "code": "update_account_failed", "numeric_code": "20020", "message": "Account not found" } }- update_account_failed · 30010 · 500
Провайдер не выполнил операцию. message может содержать исходную причину после «Provider operation failed:»; текст меняется и не является стабильным программным интерфейсом.
Условие: Применяется только при фактической смене режима авторизации с выходом из WhatsApp. Обычное обновление данных аккаунта не вызывает это числовое уточнение.
Действия и повторы: Перед повторным изменением прочитайте текущее состояние ресурса и выясните результат предыдущей попытки. Сохраните request_id; не повторяйте запись автоматически при неизвестном результате.
Каналы: WhatsApp
Пример JSON; message зависит от фактической причины · 500 · 30010
{ "request_id": "req_example", "error": { "code": "update_account_failed", "numeric_code": "30010", "message": "Provider operation failed" } }- update_account_failed · 30021 · 500
Во время этого запроса аккаунт не был подключён к платформе обмена сообщениями. При добавлении контакта WhatsApp возможен ответ 500 / create_contact_failed / 30021. Это не доказывает выход из аккаунта или сохранение текущего состояния disconnected. Сначала запросите текущее состояние, затем выберите способ восстановления.
Условие: Применяется только при фактической смене режима авторизации с выходом из WhatsApp. Обычное обновление данных аккаунта не вызывает это числовое уточнение.
Действия и повторы: Приостановите операции, которым нужно соединение. Сначала вызовите POST /v1/accounts/{account_id}/runtime/refresh, восстановите соединение по актуальному состоянию и подтвердите runtime_status=running перед бизнес-запросами. Перед повторной отправкой выясните результат предыдущей записи.
Каналы: WhatsApp
Пример JSON; message зависит от фактической причины · 500 · 30021
{ "request_id": "req_example", "error": { "code": "update_account_failed", "numeric_code": "30021", "message": "Account is not connected to the messaging platform" } }- provider_unavailable · 30002 · 502
Сервис канала недоступен. Проверьте состояние или повторите позже; перед повтором записи проверьте предыдущий результат.
Действия и повторы: Перед повторным изменением прочитайте текущее состояние ресурса и выясните результат предыдущей попытки. Сохраните request_id; не повторяйте запись автоматически при неизвестном результате.
Пример · 502 · 30002
{ "request_id": "req_example_provider_unavailable", "error": { "code": "provider_unavailable", "numeric_code": "30002", "message": "Provider service unavailable" } }