アカウント認可
認証セッションをインポート
セッション URL またはチャネル固有の認証情報をインポートして認証を開始します。TikTok session は tiktok.cookies を使用します。pending の場合は authorized かつ running になるまで認証状態と実行状態を確認してください。HTTP 200 だけでは認証完了を意味しません。
https://api.unifyport.ai/v1/accounts/{account_id}/auth/session対応チャネル
呼び出す前に
対象ワークスペースの X-Api-Key をサーバー側で使用します。実行前にすべてのプレースホルダーを置き換えます。
チャネルに必要なセッション情報を準備します。Telegram と X は既存セッションの URL または参照を使い、whatsapp-protocol 認証情報オブジェクトは WhatsApp Protocol のみで使います。チャネルガイドを確認し、セッション情報やキーをログに残さないでください。
パラメーターの取得元
- account_id
- アカウント作成・取得応答の data.id を使います。識別子は X-Api-Key のワークスペースに属します。 アカウント取得
リクエストパラメータ
ヘッダー
X-Api-Keyワークスペース API キー。このヘッダーからワークスペースを特定します。
Content-TypeJSON のリクエストボディを送る場合は application/json を使用します。
パスパラメータ
account_idauthentication ルートで使用される識別子。
リクエストボディ
session_url既存のプロバイダセッションアーティファクトの URL または参照。 Facebook では c_user、xs、datr を含む cookies 配列付き JSON を指す session_url が必須です。インポート成功後も実行状態の準備完了を確認してください。
format: uri
whatsapp-protocolobjectWhatsApp Protocol のセッションインポート認証情報。このネストされたオブジェクトで /v1/accounts/{account_id}/auth/session にのみ送信でき、provider_data では送信できません。指定する場合は phone、static_pub_key、static_pri_key、identity_pub_key、identity_pri_key が必須です。レスポンスにプロトコル鍵やその他の機密認証情報は含まれません。phone は本人情報の整合性確認に、プロトコル公開鍵と秘密鍵は上流の起動にのみ使用します。edge_routing はプラットフォームが固定で注入するため送信禁止です。
whatsapp-protocolWhatsApp Protocol のセッションインポート認証情報。このネストされたオブジェクトで /v1/accounts/{account_id}/auth/session にのみ送信でき、provider_data では送信できません。指定する場合は phone、static_pub_key、static_pri_key、identity_pub_key、identity_pri_key が必須です。レスポンスにプロトコル鍵やその他の機密認証情報は含まれません。phone は本人情報の整合性確認に、プロトコル公開鍵と秘密鍵は上流の起動にのみ使用します。edge_routing はプラットフォームが固定で注入するため送信禁止です。
phoneセッションのインポートで whatsapp-protocol を指定する場合、phone は必須の空でない文字列で、本人情報の整合性確認に使われます。整形済み入力には空白、ハイフン、括弧、プラス記号を含められ、サーバーが正の数値文字列に正規化します。
minLength: 1
platformWhatsApp Protocol セッションインポートのプラットフォーム値(int32)。
format: int32
app_versionWhatsApp Protocol セッションインポートのアプリバージョン。
server_addressWhatsApp Protocol セッションインポートのプロバイダサーバーアドレス。
fallback_server_addresses[]WhatsApp Protocol セッションインポートの予備サーバーアドレス一覧。
countryWhatsApp Protocol セッションインポートの国コード。
deviceWhatsApp Protocol セッションインポートのデバイス値(uint32)。
format: uint32
static_pub_keyプロトコル公開鍵。書き込み専用。
minLength: 1
static_pri_keyプロトコル秘密鍵。書き込み専用。
minLength: 1
identity_pub_keyID 公開鍵。書き込み専用。
minLength: 1
identity_pri_keyID 秘密鍵。書き込み専用。
minLength: 1
hash非推奨の互換フィールド。現在は値が無視され、保存されません。省略してください。
peer_kem_public相手側の KEM 公開鍵。書き込み専用。
auth_hex_data現在の認証データ(16 進数)。書き込み専用。
authhexdata非推奨の旧認証データフィールド(16 進数)。書き込み専用。
pq_handshake_modeWhatsApp Protocol セッションインポートの PQ ハンドシェイクモード。
use_xxkem_handshakeWhatsApp Protocol セッションインポートで XXKEM ハンドシェイクを使用するか。
tiktokobjectauth_mode=session の TikTok アカウント専用です。指定する場合、トップレベルのフィールドは tiktok のみとし、内部では cookies と任意の user_id のみを受け付けます。インポート JSON 全体は 65536 バイト以内です。形式検証の通過は認証情報の有効性や認可成功を意味しません。QR スキャンや認証コードが必要な場合は対応する待機状態を返しますが、session モードでは現在、その対話手順を続行できません。再インポートによる既存ログインの上書きや Cookie のホットスワップは保証されません。
tiktokauth_mode=session の TikTok アカウント専用です。指定する場合、トップレベルのフィールドは tiktok のみとし、内部では cookies と任意の user_id のみを受け付けます。インポート JSON 全体は 65536 バイト以内です。形式検証の通過は認証情報の有効性や認可成功を意味しません。QR スキャンや認証コードが必要な場合は対応する待機状態を返しますが、session モードでは現在、その対話手順を続行できません。再インポートによる既存ログインの上書きや Cookie のホットスワップは保証されません。
user_id任意の互換フィールド。本人確認や紐付けには使用せず、実際のユーザーは認可結果で決まります。
cookies[]object[]tiktok を指定する場合に必須の、1–128 個の Cookie を含む書き込み専用配列。同じ名前とドメインの組み合わせは重複できません。他のエクスポート済み Cookie 属性は保持されます。有効性はログイン結果で判断します。
minItems: 1 · maxItems: 128
cookies[]tiktok を指定する場合に必須の、1–128 個の Cookie を含む書き込み専用配列。同じ名前とドメインの組み合わせは重複できません。他のエクスポート済み Cookie 属性は保持されます。有効性はログイン結果で判断します。
minItems: 1 · maxItems: 128
name各 TikTok Cookie に必須の空でない名前。
minLength: 1
value各 TikTok Cookie に必須の空でない値。書き込み専用。
minLength: 1
domain各 TikTok Cookie に必須の空でないドメイン。エクスポートされた値を保持します。
minLength: 1
path各 TikTok Cookie に必須のパス。/ で始まる必要があります。
pattern: ^/
expires任意のエクスポート済み Unix 秒タイムスタンプまたはセッション Cookie マーカー。インポート時には期限切れを判定しません。
secureTikTok Cookie の任意のエクスポート済み Secure フラグ。
http_onlyTikTok Cookie の任意のエクスポート済み HttpOnly フラグ。
same_siteTikTok Cookie の任意のエクスポート済み SameSite 値。
結果の確認
認証結果を確認してから runtime_status を確認します。インポートとオンライン接続は別の段階です。
レスポンス pending · TikTok session
{
"request_id": "<REQUEST_ID>",
"data": {
"account_id": "acc_example",
"provider": "tiktok",
"action": "import_session",
"status": "pending",
"runtime_status": "starting"
}
}
レスポンス authorized
{
"request_id": "<REQUEST_ID>",
"data": {
"account_id": "acc_example",
"status": "authorized"
}
}
レスポンスボディ
account_idこのレスポンスが対象とするプロバイダアカウント。
status現在の認可フロー状態。pending_auth、awaiting_qr_scan、awaiting_code、pending、passkey_required、passkey_pending、passkey_confirmation、passkey_confirmation_sent、authorized、failed など。
レスポンス
200200 OK
リクエスト成功。レスポンスボディの例を参照してください。
400Bad Request
リクエストボディ、パス、またはパラメータが不正です。
401Unauthorized
X-Api-Key ヘッダが欠落しているか無効です。
403Forbidden
リクエストは識別されましたが、この操作は許可されていません。
404Not Found
要求されたリソースが見つかりません。error.code と現在の操作を合わせて確認してください。
409Conflict
要求された操作が、既存のプロバイダアカウントまたはリソースと競合しています。
500Internal Server Error
サービスで予期しないエラーが発生しました。
502Bad Gateway
プロバイダアダプタまたは上流サービスが操作を完了できませんでした。
失敗時の対応
HTTP 状態と error.code/numeric_code を確認し、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" } }- unsupported_action · 30005 · 400
認識できないアカウント操作です。文書化された操作を使ってください。
対処と再試行: ドキュメントで対応しているチャネルと操作を選びます。同じリクエストを繰り返しても機能やベータ権限は追加されません。
JSON の例です。message は実際の原因によって変わります · 400 · 30005
{ "request_id": "req_example", "error": { "code": "unsupported_action", "numeric_code": "30005", "message": "Action not supported" } }- 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" } }- 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" } }- 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_already_authorized · 20016 · 409
アカウントは認証済みのため、この操作では重複する認証を拒否します。認証状態を更新して完了した結果を再利用し、再認証やキャンセルを繰り返さないでください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20016
{ "request_id": "req_example", "error": { "code": "account_already_authorized", "numeric_code": "20016", "message": "Account is already authorized; re-authentication is not required" } }- 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" } }- 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_account_mismatch · 20017 · 409
指定したチャネルの識別情報がアカウントの紐付けと一致しません。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20017
{ "request_id": "req_example", "error": { "code": "provider_account_mismatch", "numeric_code": "20017", "message": "Authenticated provider account does not match the bound account; re-scan with the original account" } }- 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" } }- wallet_account_creation_in_progress · 20030 · 409
同じワークスペースで残高払いのアカウントを作成中か、対象アカウントの初期化が完了していません。
対処と再試行: 作成が競合した場合は Retry-After に従って待機し、元のリクエストで Idempotency-Key を指定した場合は同じキーを使って再試行してください。認証リクエストでこのエラーが返った場合は、作成レスポンスの billing.operation_id を使って GET /v1/account-operations/{operation_id} を照会します。data.state=SUCCEEDED を確認してから、同じアカウントで元の操作を再試行してください。billing.state=ACTIVE は初期化の完了を意味しません。別のアカウントを作成しないでください。
JSON の例です。message は実際の原因によって変わります · 409 · 20030
{ "request_id": "req_example", "error": { "code": "wallet_account_creation_in_progress", "numeric_code": "20030", "message": "Account creation is in progress; please wait" } }- run_auth_action_failed · 20010 · 500
認証操作の実行:認証操作に失敗しました。再認証が必要と決めつけず、既存のフローを確認します。
対処と再試行: 現在の認証フローとユーザー操作の要否を確認します。この失敗だけを理由に認証を開始し直したり、期限切れ・終了済みセッションに再送信しないでください。
JSON の例です。message は実際の原因によって変わります · 500 · 20010
{ "request_id": "req_example", "error": { "code": "run_auth_action_failed", "numeric_code": "20010", "message": "Failed to run auth action" } }- run_auth_action_failed · 20020 · 500
account_id を確認し、アカウントが属するワークスペースの X-Api-Key を使います。このワークスペースにないアカウントには現在のキーでアクセスできません。
発生条件: アカウントが見つからない場合、従来の HTTP ステータスと操作の code を維持し、numeric_code でアカウントの不存在を示します。
対処と再試行: 対象の識別子、所有範囲、現在のワークスペースを確認します。不存在やアクセス不可が確認された対象を、一時的なサービス障害として自動再試行しないでください。
JSON の例です。message は実際の原因によって変わります · 500 · 20020
{ "request_id": "req_example", "error": { "code": "run_auth_action_failed", "numeric_code": "20020", "message": "Account not found" } }- provider_adapter_not_found · 30004 · 502
チャネルサービスを利用できません。状態を確認するか後で再試行してください。書き込みは前回の結果を先に確認してください。
対処と再試行: 現在の認証フローとユーザー操作の要否を確認します。この失敗だけを理由に認証を開始し直したり、期限切れ・終了済みセッションに再送信しないでください。
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
チャネルサービスを利用できません。状態を確認するか後で再試行してください。書き込みは前回の結果を先に確認してください。
対処と再試行: 現在の認証フローとユーザー操作の要否を確認します。この失敗だけを理由に認証を開始し直したり、期限切れ・終了済みセッションに再送信しないでください。
例 · 502 · 30002
{ "request_id": "req_example_provider_unavailable", "error": { "code": "provider_unavailable", "numeric_code": "30002", "message": "Provider service unavailable" } }- provider_unavailable · 30020 · 502
whatsapp-protocol の同期リクエストは numeric_code=30020 でログイン制限を示します。セッションのインポート、実行操作、送信、連絡先照会に影響する場合がありますが、現在の操作の 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." } }