プロバイダ比較
WhatsApp 認証
WhatsApp は QR ペアリングと電話番号ペアリングに対応し、どちらも標準の認証エンドポイントで進められます。
qrcode
WhatsApp QR ペアリング: /auth/qr/start を呼び出してデバイスセッションを開始します。QR 文字列は account.auth.required イベントとして webhook に届き、/auth/qr/check でも同期取得できます。
- 1. POST /v1/accounts で provider=whatsapp、auth_mode=qrcode。任意で provider_data.device_os / device_platform / proxy_config を設定して、ペアリング先の端末に表示されるデバイス情報を制御できます。
- 2. POST /v1/accounts/{account_id}/auth/qr/start で端末を起動。status は awaiting_qr_scan を返しますが、QR 文字列は非同期で到着します。
- 3. webhook の account.auth.required イベントを購読 —— auth_payload.qr_code が UI で QR 画像にレンダリングすべき生コードです。あるいは /auth/qr/check をポーリングします。
- 4. スキャン後、account.auth.succeeded イベントが provider_account_ref を伴って webhook に届き、続いて account.started イベントが届きます。これらの後の POST /v1/accounts/{account_id}/runtime/start は no-op です。
provider_data.device_os— 端末の「リンク済みデバイス」画面に表示される OS ラベル。既定値は MacOS。device_platform と組み合わせて指定する必要があります(有効な組み合わせは上流ドキュメントの platform 表を参照)。provider_data.device_platform— デバイス platform の数値コード(1=CHROME、2=FIREFOX、5=SAFARI、14=IOS_PHONE、16=ANDROID_PHONE、...)。device_os と同時に指定したときのみ反映されます。provider_data.proxy_config— エンタープライズ構成向けの任意のネットワークルーティング設定。
code
WhatsApp 電話番号ペアリング:アカウント作成時に電話番号を保存しておき、端末の「リンク済みデバイス → 電話番号でリンク」で 8 桁の verify_code を入力します。
- 1. POST /v1/accounts で provider=whatsapp、auth_mode=code を指定し、provider_data.phone に E.164 純数字(+ なし)の電話番号を設定します。電話番号はアカウントに永続化され、以降の認証アクションで自動的に再利用されます。
- 2. POST /v1/accounts/{account_id}/auth/start を空のボディで呼び出します。保存済みの電話番号が再利用され、レスポンスの auth_payload に 8 桁の verify_code が含まれます。
- 3. verify_code をエンドユーザに表示。端末側の受付時間は約 3 分で、超過した場合は再度フローを起こします。
- 4. ペアリング成功後、account.auth.succeeded と account.started が webhook に届きます (QR フローと同様)。
provider_data.phone— E.164 純数字の電話番号(例:15551234567、+ なし)。アカウント作成時に provider_data.phone に設定してください。以降の認証アクションで自動的に再利用されます。
注記
- QR コードは webhook の account.auth.required イベントとして非同期に届きます。/auth/qr/start の同期レスポンスでは返りません。フローを起動する前に必ず webhook 受信側を設定してください。
- /auth/start から返る verify_code はエンドユーザへ表示するもので、API へ再送する必要はありません。WhatsApp は約 3 分以内に端末側で入力されることを期待します。
- WhatsApp のリアクションは message.reaction イベントとして配信されます —— 絵文字は data.event.reaction、対象メッセージ id は data.message.target_message_id にあります。
- サイズ上限 (音声 50MB / 動画 60MB / ドキュメント 50MB) を超えるメディアは、url が空 + metadata.is_big_file=true の attachment になります。