Справочник API

Публикации и комментарии

Ответить на комментарий верхнего уровня

Только подтверждённые комментарии верхнего уровня собственных публикаций TikTok; другие провайдеры и подтверждённые вложенные цели дают 501 unsupported_by_provider. Полная проверка может дать 404 post_not_found (39000) или comment_not_found (39001); последнее не означает поиск всех ответов. 403 post_inaccessible (39005) не указывает причину или отсутствие; незавершённая проверка останавливает запись. accepted не гарантирует показ, доставку или Webhook. Неподтверждённый результат после записи даёт 502 reply_post_comment_failed (39004), исход неизвестен; не отправляйте повторно автоматически. Отсутствие ответа при последующем чтении не доказывает, что он не был создан.

POSThttps://api.unifyport.ai/v1/accounts/{account_id}/posts/comments/reply

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

TikTok

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

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

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

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

Заголовки

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

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

Content-Type
stringобязательно

Используйте application/json при отправке JSON-тела запроса.

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

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

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

Тело запроса

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

ID публикации провайдера, передаваемый строкой без изменений. TikTok требует строку положительного десятичного целого без ведущих нулей; иначе 400 provider_invalid_request.

minLength: 1 · pattern: \S

comment_id
string

ID подтверждённого комментария верхнего уровня у провайдера; передавайте непустую строку не из одних пробелов без изменений, не преобразуйте в число.

minLength: 1 · pattern: \S

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

Текст ответа должен содержать непробельный символ; сохраняется дословно, включая пробелы по краям.

minLength: 1 · pattern: \S

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

accepted подтверждает только приём, без гарантии отображения, доставки или Webhook. После записи ответ 502 reply_post_comment_failed может означать неизвестный результат; не отправляйте повторно автоматически. Отсутствие ответа при последующем чтении не доказывает, что он не был создан.

Ответ 200 OK

{
  "request_id": "<REQUEST_ID>",
  "data": {
    "status": "accepted"
  }
}

Тело ответа

status
string

accepted означает только принятие, не гарантирует показ, доставку или Webhook.

enum: accepted

comment
object

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

id
string

Идентификатор провайдера; сохраняйте непустую строку не из одних пробелов без изменений, не преобразуйте в число.

minLength: 1 · pattern: \S

post_id
string

Идентификатор провайдера; сохраняйте непустую строку не из одних пробелов без изменений, не преобразуйте в число.

minLength: 1 · pattern: \S

text
string

Достоверно полученный исходный текст, включая пустую строку; опускается, если неизвестен.

author
object

Информация об авторе, если доступна.

id
string

Идентификатор провайдера; сохраняйте непустую строку не из одних пробелов без изменений, не преобразуйте в число.

minLength: 1 · pattern: \S

display_name
string

Достоверно полученный исходный текст, включая пустую строку; опускается, если неизвестен.

avatar_url
string

Достоверно полученный непустой URL аватара; опускается, если неизвестен.

minLength: 1

created_at
string

Достоверное время создания комментария в RFC3339 UTC; опускается, если неизвестно, и не заменяется временем наблюдения.

format: date-time

parent_comment_id
string

Передаётся только при подтверждённой связи с родителем. Отсутствие не доказывает, что это комментарий верхнего уровня, на который можно ответить.

minLength: 1 · pattern: \S

Ответы

200

200 OK

Запрос выполнен. См. пример тела ответа.

400

Bad Request

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

401

Unauthorized

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

403

Forbidden

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

404

Not Found

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

409

Conflict

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

501

Not Implemented

Выбранный провайдер не реализует эту операцию.

502

Bad Gateway

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

При ошибке запроса

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

Сопоставляйте HTTP-статус, error.code и error.numeric_code с текущей операцией. Числовой код — строка. Сохраняйте request_id для диагностики: это не ключ идемпотентности и не идентификатор задачи.

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"
  }
}
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"
  }
}
post_inaccessible · 39005 · 403

Проверьте аккаунт и только те идентификаторы цели, которые требует этот API. post_not_found подтверждает отсутствие публикации. comment_not_found означает, что целевой комментарий верхнего уровня не найден после проверки, а не что проверены все ответы. post_inaccessible означает недоступность, но не доказывает отсутствие и не указывает причину. Сохраните ошибку и выясните результат перед выбором следующего действия.

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

Пример JSON; message зависит от фактической причины · 403 · 39005
{
  "request_id": "req_example",
  "error": {
    "code": "post_inaccessible",
    "numeric_code": "39005",
    "message": "Post is not accessible"
  }
}
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"
  }
}
comment_not_found · 39001 · 404

Проверьте аккаунт и только те идентификаторы цели, которые требует этот API. post_not_found подтверждает отсутствие публикации. comment_not_found означает, что целевой комментарий верхнего уровня не найден после проверки, а не что проверены все ответы. post_inaccessible означает недоступность, но не доказывает отсутствие и не указывает причину. Сохраните ошибку и выясните результат перед выбором следующего действия.

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

Пример JSON; message зависит от фактической причины · 404 · 39001
{
  "request_id": "req_example",
  "error": {
    "code": "comment_not_found",
    "numeric_code": "39001",
    "message": "Comment not found"
  }
}
post_not_found · 39000 · 404

Проверьте аккаунт и только те идентификаторы цели, которые требует этот API. post_not_found подтверждает отсутствие публикации. comment_not_found означает, что целевой комментарий верхнего уровня не найден после проверки, а не что проверены все ответы. post_inaccessible означает недоступность, но не доказывает отсутствие и не указывает причину. Сохраните ошибку и выясните результат перед выбором следующего действия.

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

Пример JSON; message зависит от фактической причины · 404 · 39000
{
  "request_id": "req_example",
  "error": {
    "code": "post_not_found",
    "numeric_code": "39000",
    "message": "Post 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"
  }
}
unsupported_by_provider · 30003 · 501

Канал не поддерживает операцию; выберите доступную в таблице возможностей.

Действия и повторы: Выберите поддерживаемые канал и действие. Повтор запроса не добавит возможностей и не откроет доступ к бета-функциям.

Пример · 501 · 30003
{
  "request_id": "req_xxx",
  "error": {
    "code": "unsupported_by_provider",
    "numeric_code": "30003",
    "message": "Operation not supported by this provider"
  }
}
provider_unavailable · 30002 · 502

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

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

Пример · 502 · 30002
{
  "request_id": "req_example_provider_unavailable",
  "error": {
    "code": "provider_unavailable",
    "numeric_code": "30002",
    "message": "Provider service unavailable"
  }
}
reply_post_comment_failed · 39004 · 502

Проверьте пост, подтверждённый комментарий верхнего уровня и классификацию ошибки. При неизвестном результате записи сохраните request_id и выясните результат до повтора. Отсутствия ответа в последующем чтении недостаточно для повторной записи.

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

Пример JSON; message зависит от фактической причины · 502 · 39004
{
  "request_id": "req_example",
  "error": {
    "code": "reply_post_comment_failed",
    "numeric_code": "39004",
    "message": "Failed to confirm comment reply; result may be unknown, do not automatically retry"
  }
}