API リファレンス

アカウント

アカウント更新

アカウントを部分更新します。省略フィールドは保持、null は無効、空配列や空オブジェクトは該当フィールドをクリアします。identity 重複時は 409 duplicate_provider_account です。

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

対応チャネル

all

呼び出す前に

対象ワークスペースの 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 ルートで使用される識別子。

リクエストボディ

name
string

人が読みやすいアカウント名。

provider
string

顧客向けプロバイダ識別子: telegram、whatsapp、whatsapp-protocol、line、twitter、zalo、tiktok。

enum: telegram, whatsapp, line, twitter, facebook, zalo, tiktok, whatsapp-protocol, x, x_client, twitter_client

region
string

割り当てに使用するプロバイダのリージョン。プロバイダのリージョン一覧 で allocatable: true と報告されたリージョンを選んでください。

minLength: 1

status
string

active や inactive などのアカウント業務状態。

runtime_status
string

プロバイダがアカウント設定からの変更に対応する場合に指定するランタイム状態。

enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error

auth_mode
string

アカウント作成時に必須: qrcode、code、または session。

enum: qrcode, code, session

capabilities[]
string[]

PATCH では省略で保持、[] でクリアします。null は無効です。

metadata
object

PATCH では省略で保持、{} でクリアします。null は無効です。

provider_account_ref
string

プロバイダ側のアカウント識別子。通常は認証後に設定されます。

provider_data
object

プロバイダ設定。PATCH では省略で保持、{} でクリアしデフォルト認証情報は補充しません。null は無効です。TikTok の provider_data.enable_comment は Boolean のみでデフォルトは false。文字列、数値、null は 400 invalid_request です。オンライン中の変更には reconnect が必要で、start 成功は適用の証明ではありません。無効化しても待機中のイベントは取り消されません。Telegram の code、qrcode、session では api_id と api_hash は任意。独自の認証情報は同じアプリの文字列のペアで指定します。作成時に独自認証情報がない場合と、空でない設定への置換時に認証情報が省略された場合はプラットフォームのデフォルトを使用し、必要なデフォルトが利用できなければ失敗します。デフォルト変更は既存アカウントの認証情報を置換しません。秘密情報をログに出さないでください。

proxy
object

このアカウント用の任意の送信プロキシ設定。PATCH ではカスタムプロキシが優先され、クリアするとアカウント作成時のデフォルト設定に戻ります。旧アカウントでは従来のクリア動作が維持されます。

結果の確認

この API に記載された応答項目と HTTP 状態で結果を判断し、関連操作から次の手順を選びます。

レスポンス 200 OK

{
  "request_id": "<REQUEST_ID>",
  "data": {
    "id": "acc_example",
    "name": "Telegram Production",
    "provider": "telegram",
    "status": "active",
    "auth_mode": "code"
  }
}

レスポンスボディ

provider_profile
object

display_name などプロバイダが報告するプロフィール。アカウントが認証される前は省略されます。

id
string

チャネル側アカウント識別子。WhatsApp は LID を返し、プロフィール同期前は省略されることがあります。

device_id
integer

現在のセッションを識別できる場合に、WhatsApp アカウント詳細で任意に返されるログイン端末番号。再認証で変わる場合があり、恒久的な端末識別子ではありません。

minimum: 0 · maximum: 65535

phone
string

空白、ハイフン、先頭の + を除去した正規化電話番号。

username
string

プロバイダが報告した username(存在する場合)。

display_name
string

アカウントの表示名。WhatsApp では BusinessName を優先し、なければ PushName にフォールバックして生成されます。

push_name
string

WhatsApp アカウントで現在設定されている PushName。他のプロバイダではこのフィールドの意味を定義しません。

business_name
string

WhatsApp BusinessName。プロバイダが返さない場合は省略されます。

first_name
string

プロバイダが報告した名(存在する場合)。

last_name
string

プロバイダが報告した姓(存在する場合)。

avatar_url
string

プロバイダが報告したアカウントのアバター URL。

bio
string

プロバイダが報告した自己紹介またはステータス文。

platform
string

WhatsApp がペアリング時に報告するログインプラットフォーム識別子。不透明な文字列として扱い、未知の値も受け入れてください。他のプロバイダではこのフィールドの意味を定義しません。device_platform とは別のフィールドです。

billing
object

残高アカウントだけの支払済み期間。残高から購入を推測しません。

period_start_at
string

サーバーの支払済み期間開始。

format: date-time

period_end_at
string

サーバーの支払済み期間終了。

format: date-time

amount_minor
integer

サーバーの不変金額、USD セント単位。正確な整数で扱います。

minimum: 1 · format: int64

currency
string

USD のみ。

operation_id
string

billing.operation_id または削除応答の公開 ID。同じワークスペースで原文のまま使います。

state
string

課金・操作状態。認証、接続、返金入金を証明しません。

enum: ACTIVE, DELETING, DELETED, COMPENSATED, REVIEW

id
string

一意のアカウント識別子(acc_...)。アカウントスコープのルートで使用します。

name
string

人が読みやすいアカウント名。

provider
string

チャネルの識別子です。後続の呼び出しでは返された値をそのまま使ってください。この API の値は以下の enum を参照してください。

enum: telegram, whatsapp, line, twitter, facebook, zalo, tiktok, whatsapp-protocol

region
string

アカウントで選択されたデフォルトのネットワーク出口リージョン。

status
string

アカウントのライフサイクル状態(例: active)。

runtime_status
string

正規化されたランタイム状態。unknown、starting、running、stopping、stopped、reconnecting、disconnected、error のいずれか。

enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error

auth_mode
string

アカウントが使用する認証フロー: code、qrcode、または session。TikTok は qrcode と session をサポートしますが、既存アカウントでの両モード間の切り替えはサポートしません。

capabilities[]
string[]

send_message や receive_message など、アカウントで有効化されている機能。

metadata
object

アカウントに保存された自分の環境ラベル。

provider_account_ref
string

自社システムとアカウントを紐付けるために付与できる、プロバイダ側の識別子。

proxy
object

顧客が明示的に設定したプロキシ。プラットフォームのデフォルト出口の認証情報は返されません。

レスポンス

200

200 OK

リクエスト成功。レスポンスボディの例を参照してください。

400

Bad Request

リクエストボディ、パス、またはパラメータが不正です。

401

Unauthorized

X-Api-Key ヘッダが欠落しているか無効です。

403

Forbidden

リクエストは識別されましたが、この操作は許可されていません。

404

Not Found

要求されたリソースが見つかりません。error.code と現在の操作を合わせて確認してください。

409

Conflict

要求された操作が、既存のプロバイダアカウントまたはリソースと競合しています。

422

Unprocessable Entity

リクエストは有効ですが、対象のプロバイダ会話を解決できません。

500

Internal Server Error

サービスで予期しないエラーが発生しました。

502

Bad Gateway

プロバイダアダプタまたは上流サービスが操作を完了できませんでした。

失敗時の対応

HTTP 状態と error.code/numeric_code を確認し、request_id を保存します。原因に応じてパラメーター修正・認証・状態確認を行い、送信や書き込みの再試行前に前回の結果を確認します。 エラーリファレンス

HTTP ステータス、error.code、error.numeric_code を現在の操作と合わせて確認します。数値コードは文字列です。request_id は調査用で、冪等性キーやタスク 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 Key を使用してください。

発生条件: ワークスペースを上書きする 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 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"
  }
}
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 を確認してから再試行を判断してください。

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

チャネルの実行プロセスは停止しています。起動前に意図した停止かを確認してください。実行の停止自体はログアウトを意味しません。

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

対象チャネル: 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"
  }
}