メッセージングAPI
WhatsAppグループへのメッセージ送信API
接続済みの番号がメンバーになっているWhatsAppグループに、WhatsAppのテキスト、画像、ドキュメントを送信します。チームへのお知らせ、コミュニティの最新情報、一斉通知などに利用できます。
https://wbiztool.com/api/v1/send_msg/group/リクエストボディ: JSON、フォームフィールド、またはファイルをアップロードする場合はmultipart/form-data
メッセージはキューに登録され、あなたのWhatsApp番号からグループに送信されます。レスポンスにはmsg_idが含まれ、これを使ってステータスを確認できます。
クイック例#
curl -X POST https://wbiztool.com/api/v1/send_msg/group/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"group_name": "Sales Team Mumbai",
"msg": "Reminder: *weekly review* starts at 4 PM today."
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/group/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"group_name": "Sales Team Mumbai",
"msg": "Reminder: *weekly review* starts at 4 PM today.",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Queued with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/group/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_client: 678,
msg_type: 0,
group_name: "Sales Team Mumbai",
msg: "Reminder: *weekly review* starts at 4 PM today.",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
console.log("Queued with msg_id", result.msg_id);
} else {
console.error("Failed:", result.message);
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 0,
'group_name' => 'Sales Team Mumbai',
'msg' => 'Reminder: *weekly review* starts at 4 PM today.',
];
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/group/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Queued with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}12345、YOUR_API_KEY、678はご自身の値に置き換えてください。値の確認場所は認証をご覧ください。
リクエストパラメータ#
認証
client_idinteger必須設定 → APIキーに表示されるAPIクライアントIDです。
api_keystring必須同じページにあるAPIキーです。
whatsapp_clientintegerオーナーに接続済みの番号が複数ある場合は必須送信に使うWhatsApp番号のIDです。WhatsApp設定で確認できます。ワークスペースのオーナーに属する番号である必要があります。省略した場合、オーナーの接続済みの番号がちょうど1つであれば、その番号が使われます。
グループとメッセージ
group_namestring必須WhatsAppグループの名前で、WhatsAppに表示されているとおりに正確に記述します。文字列で送信してください。
2024のようなJSONの数値を送ると、HTMLエラーページ(HTTP500)が返されます。グループの検索方法を参照してください。msg_typeinteger任意0テキスト(デフォルト)、1画像、2ファイルまたはドキュメント。msgstringmsg_typeが0の場合は必須メッセージ本文です。画像やファイルの場合はキャプションになり、空でもかまいません。WhatsAppの書式(
*bold*、_italic_、~strikethrough~)が使えます。エイリアスとしてmessageも受け付けます。
画像とファイル
img_urlstringmsg_typeが1でファイルをアップロードしない場合は必須画像の公開
httpまたはhttpsURLです。file_urlstringmsg_typeが2でファイルをアップロードしない場合は必須ファイルを直接ダウンロードできる公開
httpまたはhttpsURLです。filefile任意URLを指定する代わりに、画像やファイルをアップロードします。リクエストを
multipart/form-dataとして送信し、フィールド名はfileにしてください。file_namestring任意グループに表示されるファイル名です(例:
price-list.pdf)。拡張子によってファイルの送信方法が決まるため、必ず拡張子を含めてください。小文字で送信され、& : ? * $ ;などの文字は_に置き換えられ、150文字に切り詰められます。省略した場合は、URLまたはアップロードされたファイルから名前が取得されます。
配信オプション
expire_after_secondsinteger任意この秒数以内に送信されなかった場合、メッセージを期限切れ(ステータス
4)にします。例:1時間なら3600。この処理は期限から少なくとも30秒後にバックグラウンドジョブで行われるため、1分未満の期限には頼らないでください。webhookstring任意メッセージが送信されたとき、または失敗したときに
POSTを受け取るURLです。ペイロードはメッセージ送信と同じです。
画像とファイルにはメッセージ送信APIと同じルールが適用されます。URLはAPIを呼び出した時点でダウンロードされます(最大100 MB)。メッセージの送信時には、16 MBを超える画像と64 MBを超える動画は失敗し、WAVとOGGの音声はサポートされず、対応する拡張子のないファイル(msg_type 2)には、アップロードしたファイルも含めて.pdfが付加されます。ファイル名は小文字で送信されます。拡張子とエラーの一覧は画像とファイルの送信をご覧ください。
ファイルをアップロードするには、メッセージ送信のmultipartの例を使い、URLを/api/v1/send_msg/group/に、phone/country_codeをgroup_nameに置き換えてください。
curl -X POST https://wbiztool.com/api/v1/send_msg/group/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 1,
"group_name": "Sales Team Mumbai",
"img_url": "https://example.com/reports/weekly-sales.png",
"msg": "This week'\''s sales summary"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/group/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 1,
"group_name": "Sales Team Mumbai",
"img_url": "https://example.com/reports/weekly-sales.png",
"msg": "This week's sales summary",
},
timeout=60,
)
print(response.json())// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/group/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_client: 678,
msg_type: 1,
group_name: "Sales Team Mumbai",
img_url: "https://example.com/reports/weekly-sales.png",
msg: "This week's sales summary",
}),
});
console.log(await response.json());<?php
$ch = curl_init('https://wbiztool.com/api/v1/send_msg/group/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_client' => 678,
'msg_type' => 1,
'group_name' => 'Sales Team Mumbai',
'img_url' => 'https://example.com/reports/weekly-sales.png',
'msg' => "This week's sales summary",
]),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);グループの検索方法#
WbiztoolはAPIの呼び出し時にはグループ名を確認しません。メッセージの送信時に、WbiztoolがWhatsAppのチャットからgroup_nameを検索し、最初の検索結果を開きます。そのため、次の点に注意してください。
- 接続済みのWhatsApp番号がグループのメンバーである必要があります。
- 絵文字や記号も含め、WhatsAppに表示されているとおりの完全なグループ名を使用してください。先頭と末尾のスペースは無視されます。
- 名前は一意にしてください。短い名前や一部だけの名前は、検索で先に表示される別のチャットに一致する可能性があります。
- 一致するものがない場合、グループで管理者のみがメッセージを送信でき、あなたの番号が管理者でない場合、またはコミュニティの管理者のみが投稿できる場合、メッセージは
Group not foundエラーで失敗します。 - あなたの番号がグループから退出している場合、メッセージは
Group member blockedエラーで失敗します。
グループに関する問題はAPIのレスポンスには表示されません。メッセージが送信されたかどうかは、Webhookまたはメッセージのステータスで確認してください。
公式クライアントを使う#
Pythonクライアントは、このエンドポイントを代わりに呼び出します。
from wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)
result = client.send_message_to_group(
group_name="Sales Team Mumbai",
msg="Reminder: weekly review starts at 4 PM today.",
whatsapp_client=678,
)
print(result)エラーではrequests.HTTPErrorが発生します。理由はe.response.json()["message"]で確認してください。
レスポンス#
リクエストが成功すると、HTTP 200が返ります。
{
"status": 1,
"message": "Created",
"msg_id": 9817263
}
| フィールド | 型 | 説明 |
|---|---|---|
status | integer | メッセージがキューに登録された場合は1、リクエストが失敗した場合は0。 |
message | string | 成功時はCreated、それ以外はエラー内容。 |
msg_id | integer | キューに登録されたメッセージのID。後でステータスを確認するために保存してください。成功時のみ含まれます。 |
"status": 1はメッセージがキューに登録されたことを意味し、グループに届いたことを意味するわけではありません。送信されたことを確認するには、Webhookまたはメッセージのステータスを使用してください。
エラー#
エラーはHTTP 400で返り、statusは0になります。
{ "status": 0, "message": "Group Name cant be null" }
| メッセージ | 対処方法 |
|---|---|
Auth Error - Please send correct API key and Client id | 空でないapi_keyを送信してください。 |
Invalid client id. | client_idを数値で送信してください。 |
Auth Error: invalid api key | キーが存在し、削除されておらず、このclient_idに属していることを確認してください。 |
Group Name cant be null | group_nameを追加してください。 |
Msg cant be null | テキストメッセージ(msg_type 0)にはmsgが必要です。 |
Image Url Can't be null | msg_type 1の場合は、img_urlを送信するかfileをアップロードしてください。 |
File Url Can't be null | msg_type 2の場合は、file_urlを送信するかfileをアップロードしてください。 |
Invalid file url, Can't download / Invalid file url | URLが公開されていない、タイムアウトした、またはファイルが100 MBを超えています。 |
Invalid whatsapp client None | そのwhatsapp_client IDはワークスペースのオーナーに属していません。上記の注意事項をご覧ください。 |
Invalid whatsapp client id. | whatsapp_clientを送信してください。オーナーの接続済みの番号がちょうど1つである場合を除き、必須です。 |
Not enough credits | プランの残りメッセージ数がありません。 |
Demo Account can not access apis | 通常のアカウントを使用してください。 |
Account Disabled | アカウントが無効化されています。サポートにお問い合わせください。 |
Invalid JSON format: … | JSONボディが無効です。末尾のカンマや、msg内のエスケープされていない改行が原因であることがよくあります。改行には\nを使用してください。 |
ヒント#
- まず名前をテストする:自動化する前に、グループに短いテキストを送信し、メッセージのステータスを確認してください。
- グループ名が変更された場合:WhatsAppで誰かがグループ名を変更した場合は、連携側の
group_nameも更新してください。 - メッセージタイプ:
msg_typeに指定できる値は0、1、2のみです。整数でない値を指定すると、JSONではなくHTMLのエラーページ(HTTP500)が返ります。 - 複数のグループに一度に送信:複数の番号に送信では、1回のリクエストでグループ名と電話番号を混在させて指定できます。
