Messaging-API
Nachricht stornieren (Cancel Message API)
Stornieren Sie eine WhatsApp-Nachricht, die noch nicht gesendet wurde. Nutzen Sie die API, um eine geplante Erinnerung nach einer Terminabsage zu stoppen oder eine versehentlich in die Warteschlange gestellte Nachricht zurückzuziehen.
https://wbiztool.com/api/v1/cancel_msg/Body: JSON oder Formularfelder
Sie können jede Nachricht stornieren, die noch auf den Versand wartet (Status 0, Created): geplante Nachrichten sowie Nachrichten, die über Nachricht senden, An Gruppe senden oder An mehrere Nummern senden in die Warteschlange gestellt wurden. Eine bereits gesendete Nachricht kann nicht zurückgerufen werden. Wenn ein Bot die Nachricht in diesem Moment bereits sendet, kann sie trotzdem noch rausgehen. Prüfen Sie bei kritischen Stornierungen daher mit Nachrichtenstatus nach.
Kurzes Beispiel#
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');
}Ersetzen Sie 12345 und YOUR_API_KEY durch Ihre eigenen Werte und 9817263 durch die msg_id, die Sie beim Senden oder Planen der Nachricht erhalten haben.
Request-Parameter#
client_idintegererforderlichIhre API-Client-ID aus Einstellungen → API-Schlüssel.
api_keystringerforderlichIhr API-Schlüssel von derselben Seite.
msg_idintegererforderlichDie
msg_id, die der Sende- oder Planungs-Request zurückgegeben hat. Sie muss zum Arbeitsbereich Ihres API-Schlüssels gehören.
Dieser Endpoint benötigt kein whatsapp_client.
Offizielle Clients verwenden#
Die Clients für Python und Node.js rufen diesen Endpoint für Sie auf.
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);Beide Clients lösen bei Authentifizierungsfehlern (HTTP 400/403) eine Ausnahme aus: Python wirft requests.HTTPError, Node.js wirft API error: 400 - {…}. Eine Antwort Msg has been … kommt dagegen als normales Ergebnis mit status: 0 zurück.
Antwort#
Ein erfolgreicher Request gibt HTTP 200 zurück:
{
"message": "Cancelled",
"status": 1
}
| Feld | Typ | Beschreibung |
|---|---|---|
status | integer | 1, wenn die Nachricht storniert wurde, 0, wenn nicht. |
message | string | Cancelled bei Erfolg, andernfalls der Grund. |
Nach dem Stornieren meldet Nachrichtenstatus die Nachricht als 3 (Cancelled). Eine stornierte Nachricht wird nicht gesendet, löst ihren Webhook nicht aus und wird nicht mehr von Ihren verbleibenden Credits abgezogen.
Fehler#
Die meisten Fehler geben HTTP 200 mit status gleich 0 zurück. Prüfen Sie daher immer status im Body:
{ "message": "Msg has been Sent", "status": 0 }
| Meldung | Lösung |
|---|---|
Msg has been Sent | Die Nachricht wurde bereits gesendet. Sie kann nicht storniert werden. |
Msg has been Failed | Die Nachricht ist bereits fehlgeschlagen, es gibt also nichts zu stornieren. |
Msg has been Cancelled | Die Nachricht wurde bereits früher storniert. |
Msg has been Expired | Die Nachricht ist vor dem Versand abgelaufen, es gibt also nichts zu stornieren. |
No msg found for given msg_id | Prüfen Sie die msg_id. Sie muss eine Zahl sein und zum selben Arbeitsbereich wie Ihr API-Schlüssel gehören. |
Msg_id cant be null | Fügen Sie msg_id hinzu. |
Auth Error | Senden Sie client_id und api_key. |
Invalid Client Id | Senden Sie client_id als Zahl. Wird mit HTTP 403 zurückgegeben. |
Auth Error: invalid api key | Prüfen Sie, ob der Schlüssel existiert, nicht gelöscht wurde und zu dieser client_id gehört. Wird mit HTTP 400 zurückgegeben. |
Invalid JSON format: … | Der JSON-Body ist ungültig, oft wegen eines abschließenden Kommas, oder Sie haben Formularfelder ohne client_id gesendet. |
Leeres Objekt {} | Ein JSON-Body wurde mit einer anderen Methode als POST gesendet. |
Tipps#
- Speichern Sie jede
msg_id: Sie benötigen sie zum Stornieren. Bei An mehrere Nummern senden stornieren Sie jedemsg_idaus der Antwort einzeln. - Frühzeitig stornieren: Eine gesendete Nachricht bleibt gesendet. Stornieren Sie geplante Nachrichten daher, sobald Sie wissen, dass sie nicht mehr benötigt werden.
- Neu planen: Es gibt keinen Endpoint, um eine geplante Uhrzeit zu ändern. Stornieren Sie die Nachricht und planen Sie eine neue.
- Bereits abgeschlossene Nachrichten als erledigt behandeln: Eine Antwort
Msg has been …bedeutet, dass die Nachricht nicht mehr in der Warteschlange ist. Sie müssen es also nicht erneut versuchen.
