API de messagerie
API d'annulation de messages
Annulez un message WhatsApp qui n'a pas encore été envoyé. Utilisez-la pour arrêter un rappel planifié après l'annulation d'un rendez-vous, ou pour retirer un message mis en file d'attente par erreur.
https://wbiztool.com/api/v1/cancel_msg/Corps: JSON ou champs de formulaire
Vous pouvez annuler tout message encore en attente d'envoi (statut 0, Created) : les messages planifiés, ainsi que les messages mis en file d'attente par Envoyer un message, Envoyer à un groupe ou Envoyer à plusieurs numéros. Un message déjà envoyé ne peut pas être rappelé. Si un bot est déjà en train d'envoyer le message à ce moment-là, il peut quand même partir : pour les annulations critiques, vérifiez avec Statut du message.
Exemple rapide#
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');
}Remplacez 12345 et YOUR_API_KEY par vos propres valeurs, et 9817263 par le msg_id obtenu lors de l'envoi ou de la planification du message.
Paramètres de la requête#
client_idintegerobligatoireVotre ID client API, dans Paramètres → Clés API.
api_keystringobligatoireVotre clé API, sur cette même page.
msg_idintegerobligatoireLe
msg_idrenvoyé par la requête d'envoi ou de planification. Il doit appartenir à l'espace de travail de votre clé API.
Cet endpoint ne nécessite pas whatsapp_client.
Utiliser les clients officiels#
Les clients Python et Node.js appellent cet endpoint pour vous.
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);Les deux clients lèvent une exception en cas d'erreur d'authentification (HTTP 400/403) : Python lève requests.HTTPError, et Node.js lève API error: 400 - {…}. Une réponse Msg has been … est renvoyée comme un résultat normal avec status: 0.
Réponse#
Une requête réussie renvoie le code HTTP 200 :
{
"message": "Cancelled",
"status": 1
}
| Champ | Type | Description |
|---|---|---|
status | integer | 1 si le message a été annulé, 0 sinon. |
message | string | Cancelled en cas de succès, sinon la raison. |
Après l'annulation, Statut du message indique le message comme 3 (Cancelled). Un message annulé n'est pas envoyé, ne déclenche pas son webhook et n'est plus déduit de vos crédits restants.
Erreurs#
La plupart des erreurs renvoient le code HTTP 200 avec status à 0 : vérifiez donc toujours status dans le corps.
{ "message": "Msg has been Sent", "status": 0 }
| Message | Comment corriger |
|---|---|
Msg has been Sent | Le message a déjà été envoyé. Il ne peut pas être annulé. |
Msg has been Failed | Le message a déjà échoué : il n'y a rien à annuler. |
Msg has been Cancelled | Le message a déjà été annulé auparavant. |
Msg has been Expired | Le message a expiré avant d'être envoyé : il n'y a rien à annuler. |
No msg found for given msg_id | Vérifiez le msg_id. Il doit être un nombre et appartenir au même espace de travail que votre clé API. |
Msg_id cant be null | Ajoutez msg_id. |
Auth Error | Envoyez à la fois client_id et api_key. |
Invalid Client Id | Envoyez client_id sous forme de nombre. Renvoyé avec le code HTTP 403. |
Auth Error: invalid api key | Vérifiez que la clé existe, n'a pas été supprimée et appartient à ce client_id. Renvoyé avec le code HTTP 400. |
Invalid JSON format: … | Le corps JSON n'est pas valide, souvent à cause d'une virgule finale, ou vous avez envoyé des champs de formulaire sans client_id. |
Objet vide {} | Un corps JSON a été envoyé avec une méthode autre que POST. |
Conseils#
- Enregistrez chaque
msg_id: vous en avez besoin pour annuler. Pour Envoyer à plusieurs numéros, annulez séparément chaquemsg_idde la réponse. - Annulez tôt : une fois envoyé, un message le reste ; annulez donc les messages planifiés dès que vous savez qu'ils ne sont plus nécessaires.
- Replanification : aucun endpoint ne permet de modifier une heure planifiée. Annulez le message et planifiez un nouveau message.
- Considérez les messages déjà finalisés comme traités : une réponse
Msg has been …signifie que le message n'est plus dans la file d'attente ; inutile de réessayer.
