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必須

JSON のリクエストボディを送る場合は application/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 は調査用で、冪等性キーやタスク 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 Key を使用してください。

発生条件: ワークスペースを上書きする 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 Key が正しく有効か確認してください。

対処と再試行: 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 Key に許可されていないワークスペースの上書きを要求しています。上書き用ヘッダーを削除し、対象ワークスペースの API Key を使用してください。

発生条件: ワークスペースを上書きする 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 Key を使用します。再試行で権限は増えません。

発生条件: ワークスペースを上書きする 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

有効なチャネル接続への紐付けがありません。アカウントの状態を確認してください。

対処と再試行: 認証と実行状態を照会し、目的の状態とチャネルの対応範囲に応じて更新・起動・再接続を選びます。接続の問題だけではログアウトしたとは判断できません。接続が必要な業務操作の前に 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 を確認してから再試行を判断してください。

対処と再試行: 認証と実行状態を照会し、目的の状態とチャネルの対応範囲に応じて更新・起動・再接続を選びます。接続の問題だけではログアウトしたとは判断できません。接続が必要な業務操作の前に 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"
  }
}