API de mensajería
API de cancelación de mensajes
Cancela un mensaje de WhatsApp que aún no se ha enviado. Úsala para detener un recordatorio programado cuando se cancela una cita, o para retirar un mensaje en cola que se envió por error.
https://wbiztool.com/api/v1/cancel_msg/Cuerpo: JSON o campos de formulario
Puedes cancelar cualquier mensaje que siga esperando a enviarse (estado 0, Created): mensajes programados y mensajes puestos en cola por Enviar mensaje, Enviar a un grupo o Enviar a varios números. Un mensaje que ya se envió no se puede recuperar. Si un bot ya está enviando el mensaje en ese momento, puede que igualmente salga, así que para cancelaciones críticas confírmalo con Estado del mensaje.
Ejemplo rápido#
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');
}Sustituye 12345 y YOUR_API_KEY por tus propios valores, y 9817263 por el msg_id que recibiste al enviar o programar el mensaje.
Parámetros de la solicitud#
client_idintegerobligatorioTu ID de cliente de la API, de Configuración → Claves API.
api_keystringobligatorioTu clave API, de esa misma página.
msg_idintegerobligatorioEl
msg_idque devolvió la solicitud de envío o de programación. Debe pertenecer al espacio de trabajo de tu clave API.
Este endpoint no necesita whatsapp_client.
Usar los clientes oficiales#
Los clientes de Python y Node.js llaman a este endpoint por ti.
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);Ambos clientes lanzan una excepción ante errores de autenticación (HTTP 400/403): Python lanza requests.HTTPError y Node.js lanza API error: 400 - {…}. Una respuesta Msg has been … llega como un resultado normal con status: 0.
Respuesta#
Una solicitud correcta devuelve HTTP 200:
{
"message": "Cancelled",
"status": 1
}
| Campo | Tipo | Descripción |
|---|---|---|
status | integer | 1 si el mensaje se canceló, 0 si no. |
message | string | Cancelled si todo va bien; en caso contrario, el motivo. |
Tras la cancelación, Estado del mensaje indica el mensaje como 3 (Cancelled). Un mensaje cancelado no se envía, no activa su webhook y deja de contar contra tus créditos restantes.
Errores#
La mayoría de los errores devuelven HTTP 200 con status con valor 0, así que revisa siempre status en el cuerpo:
{ "message": "Msg has been Sent", "status": 0 }
| Mensaje | Cómo solucionarlo |
|---|---|
Msg has been Sent | El mensaje ya se envió. No se puede cancelar. |
Msg has been Failed | El mensaje ya falló, así que no hay nada que cancelar. |
Msg has been Cancelled | El mensaje ya se había cancelado antes. |
Msg has been Expired | El mensaje caducó antes de enviarse, así que no hay nada que cancelar. |
No msg found for given msg_id | Revisa el msg_id. Debe ser un número y pertenecer al mismo espacio de trabajo que tu clave API. |
Msg_id cant be null | Añade msg_id. |
Auth Error | Envía client_id y api_key. |
Invalid Client Id | Envía client_id como número. Se devuelve con HTTP 403. |
Auth Error: invalid api key | Comprueba que la clave existe, que no se ha eliminado y que pertenece a este client_id. Se devuelve con HTTP 400. |
Invalid JSON format: … | El cuerpo JSON no es válido, a menudo por una coma final, o enviaste campos de formulario sin client_id. |
Objeto vacío {} | Se envió un cuerpo JSON con un método distinto de POST. |
Consejos#
- Guarda cada
msg_id: lo necesitas para cancelar. En Enviar a varios números, cancela por separado cadamsg_idde la respuesta. - Cancela pronto: una vez enviado, un mensaje no se puede deshacer, así que cancela los mensajes programados en cuanto sepas que ya no hacen falta.
- Reprogramar: no hay ningún endpoint para cambiar la hora programada. Cancela el mensaje y programa uno nuevo.
- Da por terminados los mensajes que ya tienen un estado final: una respuesta
Msg has been …significa que el mensaje ya no está en la cola, así que no necesitas reintentar.
