Integration API · WhatsApp Unofficial

Integration API経由でWhatsAppを送信

Local API Keyを使用して、アプリケーション/システムからWhatsAppメッセージを送信するためのステートレスエンドポイント — JWTなし、ログインフローなし。バックエンド統合、オートメーション(Zapier/n8n)、またはカスタムWebhookに最適。

概要

cshubのIntegration APIは、バックエンド/自動化ツールからWhatsAppメッセージを送信するための外部経路です。ビジネスごとにLocal API Keyを使用して認証します(whatscrmhub Laravelの動作をミラーします)。このエンドポイントは、cshubのパネルとモバイルアプリで使用される内部エンドポイントとは別です。

Base URL

https://api.cshub.id/api/v1

Content-Type

application/json

認証

リクエストボディにLocal API Keyを使用します(フィールド`api_key`)、HTTPヘッダーではありません。各ビジネスには、ビジネス作成時に自動生成される1つのLocal API Key(UUID)があります。

JWTはありません、トークンヘッダーもありません

パネルの内部エンドポイントとは異なります。ボディに`api_key`を送信するだけで、サーバーがそこからビジネスを解決します。セキュリティのために、Local API Keyをパスワードのように扱ってください — 公開リポジトリにコミットしないでください、フロントエンドに露出しないでください。

Local API Keyの取得方法

  1. /appでcshubのパネルにログインします。
  2. メニュー設定 → API Key(またはプロフィール → 統合)を開きます。
  3. Local API Keyをコピーします。いつでも再生成可能です(古いものはすぐに無効になります)。

エンドポイント

すべての種類のWhatsApp Unofficialメッセージ(whatsmeow)用の1つのエンドポイント。自由なメッセージにはmethod = textを、パネルで作成したテンプレートからのメッセージにはmethod = templateを選択します。

POST https://api.cshub.id/api/v1/integration/whatsapp/send-message

認証

ボディにLocal API Key(`api_key`)

レート制限

デバイスごと(デバイスのdaily_send制限に従う)

ボディフィールド

リクエストボディはJSON形式です。以下のフィールドはwhatscrmhub Laravelと同じです — 古いバージョンから移行する場合、リクエストの形状は同一です。

Field Type Required 説明
api_keystring✅ビジネスのLocal API Key(UUID)。cshubの設定パネルから取得します。
phonestring✅国際フォーマットの宛先番号(例:6281234567890)、または`is_group` = trueの場合はグループJID。
methodstring✅text, template
textstringmethod=textテキストメッセージの内容。method = textの場合は必須です。
templatestringmethod=templatecshubのパネルで作成したメッセージテンプレートのID。method = templateの場合は必須です。
variablesobject—テンプレート内の置換用のオブジェクトリテラル`{placeholder: value}`。例:`{"$name":"Budi"}`は、テンプレートメッセージ内のすべての`$name`を"Budi"に置き換えます。
device_keystring依存する*送信に使用するWhatsAppデバイスのUUID。
is_groupboolean—`phone`がグループJIDの場合はtrueに設定します(例:120363...@g.us)。

リクエストの例

1. シンプルなテキストメッセージを送信

cURL
curl -X POST "https://api.cshub.id/api/v1/integration/whatsapp/send-message" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "<LOCAL_API_KEY>",
    "device_key": "<DEVICE_ID>",
    "phone": "6281234567890",
    "method": "text",
    "text": "Halo, makasih udah order ya!"
  }'

2. 変数置換を伴うテンプレートメッセージを送信

cURL
curl -X POST "https://api.cshub.id/api/v1/integration/whatsapp/send-message" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "<LOCAL_API_KEY>",
    "device_key": "<DEVICE_ID>",
    "phone": "6281234567890",
    "method": "template",
    "template": "<TEMPLATE_ID>",
    "variables": {
      "$name": "Pak Budi",
      "$order_id": "INV-20260602-001"
    }
  }'

3. グループに送信(グループJIDを使用)

cURL
curl -X POST "https://api.cshub.id/api/v1/integration/whatsapp/send-message" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "<LOCAL_API_KEY>",
    "device_key": "<DEVICE_ID>",
    "phone": "120363012345678901@g.us",
    "method": "text",
    "text": "Pengumuman: order minggu ini ditutup pukul 17:00.",
    "is_group": true
  }'

成功レスポンス(200 OK)

200 OK
{
  "status": true,
  "message": "berhasil mengirim pesan"
}

エラーコードと解決策

Status 原因 解決策
401Api Key Cannot be recognizedapi_keyが正しいか(パネルから再コピー)を確認し、ビジネスが一時停止されていないことを確認します。
401Device tidak di temukandevice_keyが有効で、デバイスがアクティブな状態であることを確認します。必要に応じて、パネルでQR/ペアコードを使用してデバイスに再ログインします。
401Template tidak dikenaliテンプレートIDが正しく、あなたのビジネスのものであることを確認します(テンプレート = パネルのリストを参照 → マスターデータ → テンプレート)。
422Daily send limit habis日次リセット(00:00 WIB)を待つか、別のデバイスを使用します。必要に応じて、デバイスのsettingsでlimit_per_dayを上げます。
422Validation gagal (phone/method/text)電話番号が国際フォーマットで「+」なしであること、かつmethodがtext/templateのいずれかであることを確認します。
502WhatsApp service unavailableWhatsAppサービスがダウンしています。数分後に再試行するか、パネルでデバイスの状態を確認してください。

注意事項と制限

  • デバイスごとにdaily_send制限があります。1つのデバイスから10メッセージ/秒を超えるブラスティングは避けて、WhatsAppの禁止を回避してください。
  • ビジネスの設定が`api_device_use = required`に設定されている場合、フィールド`device_key`は必須です。オプションに設定されている場合、サーバーはアクティブなデバイスを戦略に応じて自動選択します(`sequence` / `spin` / `random`は`whatsapp_sender_notif`の設定で)。
  • 変数の置換はリテラル`str_replace`を使用します — プレースホルダーは任意の文字列(例:`$name`、`{name}`、`[NAME]`)で構いません。テンプレートメッセージにあるものと正確に一致することが重要です。
  • 常に「+」なし、スペース/ハイフンなしのフォーマットで。例:6281234567890(インドネシア)、60123456789(マレーシア)。グループの場合:サフィックス`@g.us`を持つ完全なJIDを使用します。
  • MVPのイテレーション:multipart/form-data経由でのバイナリファイルのアップロードはサポートされていません。メディアを送信するには、パネルで設定された画像を持つテンプレートを使用してmethod=templateを使用します。

Integration APIとInternal Panel API

cshubには、意図的に分離された2つのメッセージ送信経路があります。Integration APIはサードパーティの開発者/自動化用、Internal APIはcshubのウェブパネルとモバイルアプリ用です。異なるオーディエンス、異なる認証、異なるレスポンス形状です。

Integration API Internal Panel API
オーディエンスバックエンド開発者、Zapier、n8n、カスタム統合cshub-feのウェブパネル、cshub-mobileのモバイルアプリ
URL/integration/whatsapp/send-message/app/device/{id}/chats/send
認証api_key di bodyJWT Bearer + X-Business-ID + CSRF
レスポンス形状{status, message}{success, message, data}

統合の準備はできましたか?

cshubのパネルにログインし、設定からLocal API Keyを取得して、WhatsAppをシステムに直接統合します。