アカウント
アカウント作成
プロバイダアカウントを作成します。auth_mode は必須で qrcode、code、session のいずれかです。電話番号が必要な組み合わせでは provider_data.phone を指定し、後続認証でも再利用します。 残高方式は見積もりリクエストなしで直接アカウントを作成します。201 後も認証前に billing.state を確認してください。同じワークスペースで作成中なら 409 wallet_account_creation_in_progress です。Idempotency-Key は任意です。タイムアウト後はまず結果を確認し、重複購入を防ぐ再試行には元のキーを使います。
https://api.unifyport.ai/v1/accounts対応チャネル
呼び出す前に
対象ワークスペースの X-Api-Key をサーバー側で使用します。実行前にすべてのプレースホルダーを置き換えます。
対象ワークスペースの API Key を使います。ウォレット払いのアカウントは USD で 30 日間分が課金されます。残高照会とチャージは Dashboard で行えます。
リクエストパラメータ
ヘッダー
X-Api-Keyワークスペース API キー。このヘッダーからワークスペースを特定します。
Content-TypeJSON のリクエストボディを送る場合は application/json を使用します。
Idempotency-Key残高方式では Idempotency-Key は任意です。不明な結果を再試行する場合は元のキーを使ってください。キーなしで完了後に再送すると新しいアカウントを作成します。
リクエストボディ
name人が読みやすいアカウント名。
provider顧客向けプロバイダ識別子: telegram、whatsapp、whatsapp-protocol、line、twitter、zalo、tiktok。
enum: telegram, whatsapp, line, twitter, zalo, tiktok, whatsapp-protocol, x, x_client, twitter_client
region割り当てに使用するプロバイダのリージョン。プロバイダのリージョン一覧 で allocatable: true と報告されたリージョンを選んでください。
minLength: 1
statusactive や inactive などのアカウント業務状態。
runtime_statusプロバイダがアカウント設定からの変更に対応する場合に指定するランタイム状態。
enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error
auth_modeアカウント作成時に必須: qrcode、code、または session。
enum: qrcode, code, session
capabilities[]PATCH では省略で保持、[] でクリアします。null は無効です。
metadataPATCH では省略で保持、{} でクリアします。null は無効です。
provider_account_refプロバイダ側のアカウント識別子。通常は認証後に設定されます。
provider_dataプロバイダ設定。PATCH では省略で保持、{} でクリアしデフォルト認証情報は補充しません。null は無効です。TikTok の provider_data.enable_comment は Boolean のみでデフォルトは false。文字列、数値、null は 400 invalid_request です。オンライン中の変更には reconnect が必要で、start 成功は適用の証明ではありません。無効化しても待機中のイベントは取り消されません。Telegram の code、qrcode、session では api_id と api_hash は任意。独自の認証情報は同じアプリの文字列のペアで指定します。作成時に独自認証情報がない場合と、空でない設定への置換時に認証情報が省略された場合はプラットフォームのデフォルトを使用し、必要なデフォルトが利用できなければ失敗します。デフォルト変更は既存アカウントの認証情報を置換しません。秘密情報をログに出さないでください。
proxyこのアカウント用の任意の送信プロキシ設定。
結果の確認
残高方式は見積もりリクエストなしで直接アカウントを作成します。201 後も認証前に billing.state を確認してください。同じワークスペースで作成中なら 409 wallet_account_creation_in_progress です。Idempotency-Key は任意です。タイムアウト後はまず結果を確認し、重複購入を防ぐ再試行には元のキーを使います。
レスポンス 201 · PREPAID_QUOTA
{
"request_id": "<REQUEST_ID>",
"data": {
"id": "acc_example",
"name": "Telegram Production",
"provider": "telegram",
"region": "<REGION>",
"status": "active",
"runtime_status": "stopped",
"auth_mode": "qrcode",
"capabilities": [
"send_message",
"receive_message"
]
}
}
レスポンス 201 · ACCOUNT_WALLET_30D
{
"request_id": "<REQUEST_ID>",
"data": {
"id": "acc_example",
"name": "Messaging account",
"provider": "telegram",
"region": "<REGION>",
"status": "active",
"runtime_status": "stopped",
"auth_mode": "qrcode",
"capabilities": [
"send_message",
"receive_message"
],
"billing": {
"period_start_at": "2026-10-19T00:00:00Z",
"period_end_at": "2026-11-18T00:00:00Z",
"amount_minor": 1000,
"currency": "USD",
"operation_id": "op_example",
"state": "ACTIVE"
}
}
}
レスポンスボディ
provider_profileobjectdisplay_name などプロバイダが報告するプロフィール。アカウントが認証される前は省略されます。
provider_profiledisplay_name などプロバイダが報告するプロフィール。アカウントが認証される前は省略されます。
idチャネル側アカウント識別子。WhatsApp は LID を返し、プロフィール同期前は省略されることがあります。
device_id現在のセッションを識別できる場合に、WhatsApp アカウント詳細で任意に返されるログイン端末番号。再認証で変わる場合があり、恒久的な端末識別子ではありません。
minimum: 0 · maximum: 65535
phone空白、ハイフン、先頭の + を除去した正規化電話番号。
usernameプロバイダが報告した username(存在する場合)。
display_nameアカウントの表示名。WhatsApp では BusinessName を優先し、なければ PushName にフォールバックして生成されます。
push_nameWhatsApp アカウントで現在設定されている PushName。他のプロバイダではこのフィールドの意味を定義しません。
business_nameWhatsApp BusinessName。プロバイダが返さない場合は省略されます。
first_nameプロバイダが報告した名(存在する場合)。
last_nameプロバイダが報告した姓(存在する場合)。
avatar_urlプロバイダが報告したアカウントのアバター URL。
bioプロバイダが報告した自己紹介またはステータス文。
platformWhatsApp がペアリング時に報告するログインプラットフォーム識別子。不透明な文字列として扱い、未知の値も受け入れてください。他のプロバイダではこのフィールドの意味を定義しません。device_platform とは別のフィールドです。
billingobject残高アカウントだけの支払済み期間。残高から購入を推測しません。
billing残高アカウントだけの支払済み期間。残高から購入を推測しません。
period_start_atサーバーの支払済み期間開始。
format: date-time
period_end_atサーバーの支払済み期間終了。
format: date-time
amount_minorサーバーの不変金額、USD セント単位。正確な整数で扱います。
minimum: 1 · format: int64
currencyUSD のみ。
operation_idbilling.operation_id または削除応答の公開 ID。同じワークスペースで原文のまま使います。
state課金・操作状態。認証、接続、返金入金を証明しません。
enum: ACTIVE, DELETING, DELETED, COMPENSATED, REVIEW
id一意のアカウント識別子(acc_...)。アカウントスコープのルートで使用します。
name人が読みやすいアカウント名。
providerチャネルの識別子です。後続の呼び出しでは返された値をそのまま使ってください。この API の値は以下の enum を参照してください。
enum: telegram, whatsapp, line, twitter, zalo, tiktok, whatsapp-protocol
regionアカウントが割り当てられているプロバイダリージョン。
statusアカウントのライフサイクル状態(例: active)。
runtime_status正規化されたランタイム状態。unknown、starting、running、stopping、stopped、reconnecting、disconnected、error のいずれか。
enum: unknown, starting, running, stopping, stopped, reconnecting, disconnected, error
auth_modeアカウントが使用する認証フロー: code、qrcode、または session。
capabilities[]send_message や receive_message など、アカウントで有効化されている機能。
metadataアカウントに保存された自分の環境ラベル。
provider_account_ref自社システムとアカウントを紐付けるために付与できる、プロバイダ側の識別子。
proxy設定されている場合に返されるアカウントの送信プロキシ設定。
レスポンス
201201 Created
リクエスト成功。レスポンスボディの例を参照してください。
400Bad Request
リクエストボディ、パス、またはパラメータが不正です。
401Unauthorized
X-Api-Key ヘッダが欠落しているか無効です。
403Forbidden
リクエストは識別されましたが、この操作は許可されていません。
404Not Found
要求されたリソースが見つかりません。error.code と現在の操作を合わせて確認してください。
409Conflict
要求された操作が、既存のプロバイダアカウントまたはリソースと競合しています。
500Internal Server Error
サービスで予期しないエラーが発生しました。
503Service Unavailable
必要なバックエンドサービスが一時的に利用できません。
失敗時の対応
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" } }- wallet_invalid_request · 20021 · 400
残高方式の作成パラメータと、任意の Idempotency-Key ヘッダーを確認してください。
対処と再試行: 操作とチャネルの条件に従ってパラメーターを修正してから再実行します。同じ無効なリクエストを繰り返しても解決しません。
JSON の例です。message は実際の原因によって変わります · 400 · 20021
{ "request_id": "req_example", "error": { "code": "wallet_invalid_request", "numeric_code": "20021", "message": "Invalid wallet account 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" } }- 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_allocation_busy · 20011 · 409
アカウントの割り当て処理中です。少し待って再試行してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20011
{ "request_id": "req_example", "error": { "code": "account_allocation_busy", "numeric_code": "20011", "message": "Allocation is busy in the current region; please retry later" } }- 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" } }- no_allocatable_server · 20013 · 409
このリージョンに空きがありません。割り当て可能な別のリージョンを確認してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20013
{ "request_id": "req_example", "error": { "code": "no_allocatable_server", "numeric_code": "20013", "message": "No allocatable server in the current region" } }- wallet_account_creation_in_progress · 20030 · 409
このワークスペースで別の残高アカウントを作成中です。完了を待ってから再試行してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
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" } }- wallet_idempotency_conflict · 20024 · 409
冪等キーは別の業務パラメータに使用済みです。重複作成前に元の結果を確認してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20024
{ "request_id": "req_example", "error": { "code": "wallet_idempotency_conflict", "numeric_code": "20024", "message": "Idempotency key was used for a different request" } }- wallet_insufficient_funds · 20023 · 409
残高が不足しています。所有者がチャージしてから元のリクエストを確認してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20023
{ "request_id": "req_example", "error": { "code": "wallet_insufficient_funds", "numeric_code": "20023", "message": "Insufficient wallet balance" } }- wallet_workspace_disabled · 20022 · 409
残高による新規購入は無効です。既存の操作が取り消されたことを意味しません。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20022
{ "request_id": "req_example", "error": { "code": "wallet_workspace_disabled", "numeric_code": "20022", "message": "New wallet purchases are disabled" } }- workspace_account_quota_exceeded · 20014 · 409
メッセージングアカウント数が上限に達しています。使用数と上限を確認してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 409 · 20014
{ "request_id": "req_example", "error": { "code": "workspace_account_quota_exceeded", "numeric_code": "20014", "message": "Workspace account quota exceeded" } }- create_account_failed · 20002 · 500
アカウント作成:リソースの作成に失敗したか、作成結果を確認できませんでした。
対処と再試行: 作成を繰り返す前に既存のリソースを一覧・照会し、前回の作成が反映されたか確認します。原因を解消して request_id を保存し、重複リソースを自動作成しないでください。
JSON の例です。message は実際の原因によって変わります · 500 · 20002
{ "request_id": "req_example", "error": { "code": "create_account_failed", "numeric_code": "20002", "message": "Failed to create account" } }- allocation_service_unavailable · 20012 · 503
割り当てサービスを一時的に利用できません。後で再試行してください。
対処と再試行: request_id と構造化されたコードを保存し、現在の操作を調査してから次の対応を決めます。
JSON の例です。message は実際の原因によって変わります · 503 · 20012
{ "request_id": "req_example", "error": { "code": "allocation_service_unavailable", "numeric_code": "20012", "message": "Allocation service is temporarily unavailable" } }- 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" } }