Справочник API

Аккаунты

Удалить аккаунт

Удаление по квоте сохраняет 204. Ответ 202 и data.operation_id для кошелька означает только принятие: следите за исходной операцией. Возврат рассчитывается по текущему тарифу для оставшихся действующих оплаченных аккаунтов, включая ещё не авторизованные. Текущий онлайн-статус не используется. 204 подтверждает расчёт.

DELETEhttps://api.unifyport.ai/v1/accounts/{account_id}

Поддерживаемые каналы

all

Перед вызовом

Используйте X-Api-Key нужного рабочего пространства на сервере. Перед запуском замените все заполнители.

Откуда взять параметры
account_id
Возьмите data.id из создания или запроса аккаунта. Идентификатор относится к рабочему пространству X-Api-Key. Получить аккаунт

Параметры запроса

Заголовки

X-Api-Key
stringобязательно

API-ключ рабочей области. Рабочая область определяется по этому заголовку.

Параметры пути

account_id
stringобязательно

Идентификатор для маршрута раздела accounts.

Тело запроса

Этот эндпоинт не требует JSON-тела запроса.

Как понять результат

Удаление по квоте сохраняет 204. Ответ 202 и data.operation_id для кошелька означает только принятие: следите за исходной операцией. Возврат рассчитывается по текущему тарифу для оставшихся действующих оплаченных аккаунтов, включая ещё не авторизованные. Текущий онлайн-статус не используется. 204 подтверждает расчёт.

Ответ 204

Тело ответа отсутствует.

Ответ 202 · ACCOUNT_WALLET_30D

{
  "request_id": "<REQUEST_ID>",
  "data": {
    "operation_id": "op_example",
    "kind": "DELETE",
    "state": "PENDING",
    "account_id": "acc_example"
  }
}

Тело ответа

operation_id
string

Публичный ID из billing.operation_id или ответа удаления; используйте неизменным в исходном пространстве.

kind
string

Публичный тип: QUOTE / CREATE, DELETE или COMPENSATE.

enum: QUOTE, CREATE, DELETE, COMPENSATE

state
string

Состояние оплаты или операции не доказывает авторизацию, подключение или зачисление возврата.

enum: QUOTED, CONSUMED, EXPIRED, PENDING, PROCESSING, SUCCEEDED, FAILED, REVIEW

account_id
string

Публичный ID аккаунта сообщений этого пространства.

last_error_code
string

Безопасный публичный код результата; отсутствие не доказывает успех.

Ответы

202

204 No Content

Запрос выполнен, тело ответа отсутствует.

204

HTTP 204

The request failed with the documented HTTP status.

400

Bad Request

Тело запроса, путь или параметры некорректны.

401

Unauthorized

Заголовок X-Api-Key отсутствует или недействителен.

403

Forbidden

Запрос распознан, но операция запрещена.

404

Not Found

Запрошенный ресурс не найден. Сверьте error.code с текущей операцией.

409

Conflict

Запрошенная операция конфликтует с существующим аккаунтом провайдера или ресурсом.

500

Internal Server Error

Сервис столкнулся с неожиданной ошибкой.

502

Bad Gateway

Адаптер или вышестоящий провайдер не смог завершить операцию.

503

Service 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"
  }
}
provider_invalid_request · 30001 · 400

Проверьте поля и форматы, специфичные для канала.

Действия и повторы: Исправьте параметры с учётом операции и канала. Повтор неизменённого неверного запроса не устранит ошибку.

Пример JSON; message зависит от фактической причины · 400 · 30001
{
  "request_id": "req_example",
  "error": {
    "code": "provider_invalid_request",
    "numeric_code": "30001",
    "message": "Provider rejected the request"
  }
}
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"
  }
}
account_not_found · 20020 · 404

Проверьте account_id и используйте X-Api-Key рабочего пространства владельца аккаунта. Текущий ключ не даёт доступа к аккаунту, которого нет в этом пространстве.

Действия и повторы: Проверьте идентификатор, принадлежность ресурса и текущее рабочее пространство. Не повторяйте запрос автоматически, считая подтверждённое отсутствие или недоступность временным сбоем сервиса.

Пример JSON; message зависит от фактической причины · 404 · 20020
{
  "request_id": "req_example",
  "error": {
    "code": "account_not_found",
    "numeric_code": "20020",
    "message": "Account not found"
  }
}
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"
  }
}
account_binding_not_found · 30006 · 409

Нет активной привязки к подключению канала; проверьте состояние аккаунта.

Действия и повторы: Проверьте авторизацию и runtime-статус, затем выберите refresh, start или reconnect с учётом нужного состояния и возможностей канала. Сбой соединения сам по себе не означает выход из аккаунта. Перед зависимыми операциями подтвердите running.

Пример JSON; message зависит от фактической причины · 409 · 30006
{
  "request_id": "req_example",
  "error": {
    "code": "account_binding_not_found",
    "numeric_code": "30006",
    "message": "Account is not bound to an available server"
  }
}
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"
  }
}
delete_account_failed · 20004 · 500

Удалить аккаунт: результат удаления не подтверждён.

Действия и повторы: Проверьте, не удалён ли ресурс уже, и затем решайте, нужен ли повтор. Сохраните request_id и обрабатывайте успешный ответ согласно документации этого эндпоинта.

Пример JSON; message зависит от фактической причины · 500 · 20004
{
  "request_id": "req_example",
  "error": {
    "code": "delete_account_failed",
    "numeric_code": "20004",
    "message": "Failed to delete account"
  }
}
delete_account_failed · 30010 · 500

Провайдер не выполнил операцию. message может содержать исходную причину после «Provider operation failed:»; текст меняется и не является стабильным программным интерфейсом.

Условие: Применяется, когда канал не сообщает более точную категорию сбоя; сохраняется ошибка текущей операции.

Действия и повторы: Проверьте, не удалён ли ресурс уже, и затем решайте, нужен ли повтор. Сохраните request_id и обрабатывайте успешный ответ согласно документации этого эндпоинта.

Каналы: WhatsApp

Пример JSON; message зависит от фактической причины · 500 · 30010
{
  "request_id": "req_example",
  "error": {
    "code": "delete_account_failed",
    "numeric_code": "30010",
    "message": "Provider operation failed"
  }
}
provider_adapter_not_found · 30004 · 502

Сервис канала недоступен. Проверьте состояние или повторите позже; перед повтором записи проверьте предыдущий результат.

Действия и повторы: Проверьте, не удалён ли ресурс уже, и затем решайте, нужен ли повтор. Сохраните request_id и обрабатывайте успешный ответ согласно документации этого эндпоинта.

Пример JSON; message зависит от фактической причины · 502 · 30004
{
  "request_id": "req_example",
  "error": {
    "code": "provider_adapter_not_found",
    "numeric_code": "30004",
    "message": "Provider adapter unavailable"
  }
}
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"
  }
}
provider_unavailable · 30010 · 502

Провайдер не выполнил операцию. message может содержать исходную причину после «Provider operation failed:»; текст меняется и не является стабильным программным интерфейсом.

Действия и повторы: Проверьте, не удалён ли ресурс уже, и затем решайте, нужен ли повтор. Сохраните request_id и обрабатывайте успешный ответ согласно документации этого эндпоинта.

Каналы: WhatsApp

Пример · 502 · 30010
{
  "request_id": "req_example_operation_failed",
  "error": {
    "code": "provider_unavailable",
    "numeric_code": "30010",
    "message": "Provider operation failed: Example operation could not be completed"
  }
}
provider_unavailable · 30020 · 502

Синхронный запрос whatsapp-protocol выявил ограничение входа с numeric_code=30020. Это может затронуть импорт сессии, runtime, отправку и запросы контактов; HTTP-статус и code текущей операции сохраняются. Не переносите на этот канал контракт событий WhatsApp с 20102.

Действия и повторы: Остановите автоматическую отправку и повторы. Попросите пользователя проверить и устранить ограничение в официальном приложении WhatsApp. Возобновляйте работу после устранения и необходимой повторной авторизации. Прежний running не доказывает снятие ограничения.

Каналы: WhatsApp Protocol

Пример · 502 · 30020
{
  "request_id": "req_example_account_restricted",
  "error": {
    "code": "provider_unavailable",
    "numeric_code": "30020",
    "message": "Account login is restricted. Check the official WhatsApp app for details."
  }
}
provider_unavailable · 30021 · 502

Во время этого запроса аккаунт не был подключён к платформе обмена сообщениями. При добавлении контакта WhatsApp возможен ответ 500 / create_contact_failed / 30021. Это не доказывает выход из аккаунта или сохранение текущего состояния disconnected. Сначала запросите текущее состояние, затем выберите способ восстановления.

Действия и повторы: Приостановите операции, которым нужно соединение. Сначала вызовите POST /v1/accounts/{account_id}/runtime/refresh, восстановите соединение по актуальному состоянию и подтвердите runtime_status=running перед бизнес-запросами. Перед повторной отправкой выясните результат предыдущей записи.

Каналы: WhatsApp

Пример · 502 · 30021
{
  "request_id": "req_example_connection_disconnected",
  "error": {
    "code": "provider_unavailable",
    "numeric_code": "30021",
    "message": "example operation: websocket not connected"
  }
}
wallet_unavailable · 20028 · 503

Данные или настройки кошелька недоступны. Результат записи может быть неизвестен; проверьте исходную операцию.

Действия и повторы: Перед повторным изменением прочитайте текущее состояние ресурса и выясните результат предыдущей попытки. Сохраните request_id; не повторяйте запись автоматически при неизвестном результате.

Пример JSON; message зависит от фактической причины · 503 · 20028
{
  "request_id": "req_example",
  "error": {
    "code": "wallet_unavailable",
    "numeric_code": "20028",
    "message": "Wallet service is unavailable"
  }
}