メッセージングAPI
メッセージのキャンセルAPI
まだ送信されていないWhatsAppメッセージをキャンセルします。予約がキャンセルになったときに予約済みのリマインダーを止めたり、誤ってキューに登録したメッセージを取り消したりするのに利用できます。
https://wbiztool.com/api/v1/cancel_msg/リクエストボディ: JSONまたはフォームフィールド
送信待ちのメッセージ(ステータス0、Created)であれば、どれでもキャンセルできます。予約メッセージのほか、メッセージ送信、グループに送信、複数の番号に送信でキューに登録されたメッセージが対象です。すでに送信されたメッセージは取り消せません。その時点でボットがすでにメッセージを送信中の場合は、送信されてしまうことがあります。重要なキャンセルではメッセージのステータスで確認してください。
クイック例#
curl -X POST https://wbiztool.com/api/v1/cancel_msg/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"msg_id": 9817263
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/cancel_msg/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"msg_id": 9817263,
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Message cancelled")
else:
print("Not cancelled:", result.get("message", "no message in response"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/cancel_msg/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
msg_id: 9817263,
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
console.log("Message cancelled");
} else {
console.error("Not cancelled:", result.message ?? "no message in response");
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'msg_id' => 9817263,
];
$ch = curl_init('https://wbiztool.com/api/v1/cancel_msg/');
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 'Message cancelled';
} else {
echo 'Not cancelled: ' . ($result['message'] ?? 'no message in response');
}12345とYOUR_API_KEYはご自身の値に、9817263はメッセージの送信時または予約時に受け取ったmsg_idに置き換えてください。
リクエストパラメータ#
client_idinteger必須設定 → APIキーに表示されるAPIクライアントIDです。
api_keystring必須同じページにあるAPIキーです。
msg_idinteger必須送信リクエストまたは予約リクエストで返された
msg_idです。APIキーのワークスペースに属している必要があります。
このエンドポイントではwhatsapp_clientは不要です。
公式クライアントを使う#
PythonとNode.jsのクライアントは、このエンドポイントを代わりに呼び出します。
from wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)
result = client.cancel_message(msg_id=9817263)
print(result)const { WbizToolClient } = require("wbiztool-client");
const client = new WbizToolClient({
clientId: 12345,
apiKey: "YOUR_API_KEY",
whatsappClient: 678, // required by the client's constructor, not used by this endpoint
});
(async () => {
const result = await client.cancelMessage(9817263);
console.log(result);
})().catch(console.error);どちらのクライアントも、認証エラー(HTTP 400/403)では例外を発生させます。Pythonは requests.HTTPError を送出し、Node.jsは API error: 400 - {…} をスローします。Msg has been … の応答は、status: 0 を含む通常の結果として返されます。
レスポンス#
リクエストが成功すると、HTTP 200が返ります。
{
"message": "Cancelled",
"status": 1
}
| フィールド | 型 | 説明 |
|---|---|---|
status | integer | メッセージがキャンセルされた場合は1、キャンセルされなかった場合は0。 |
message | string | 成功時はCancelled、それ以外は理由。 |
キャンセル後、メッセージのステータスではそのメッセージは3(Cancelled)と表示されます。キャンセルされたメッセージは送信されず、Webhookも送信されず、残りクレジットからも差し引かれなくなります。
エラー#
ほとんどのエラーはHTTP 200で返り、statusは0になります。必ずボディのstatusを確認してください。
{ "message": "Msg has been Sent", "status": 0 }
| メッセージ | 対処方法 |
|---|---|
Msg has been Sent | メッセージはすでに送信されています。キャンセルできません。 |
Msg has been Failed | メッセージはすでに失敗しているため、キャンセルするものはありません。 |
Msg has been Cancelled | メッセージは以前にキャンセルされています。 |
Msg has been Expired | メッセージは送信前に期限切れになっているため、キャンセルするものはありません。 |
No msg found for given msg_id | msg_idを確認してください。数値で、APIキーと同じワークスペースに属している必要があります。 |
Msg_id cant be null | msg_idを追加してください。 |
Auth Error | client_idとapi_keyの両方を送信してください。 |
Invalid Client Id | client_idを数値で送信してください。HTTP 403で返ります。 |
Auth Error: invalid api key | キーが存在し、削除されておらず、このclient_idに属していることを確認してください。HTTP 400で返ります。 |
Invalid JSON format: … | JSONボディが無効(末尾のカンマが原因であることがよくあります)か、client_idなしでフォームフィールドを送信しています。 |
空のオブジェクト {} | POST以外のメソッドでJSONボディが送信されました。 |
