API de mensagens
API de cancelamento de mensagens
Cancele uma mensagem de WhatsApp que ainda não foi enviada. Use-a para interromper um lembrete agendado depois que uma consulta for cancelada, ou para retirar da fila uma mensagem enviada por engano.
https://wbiztool.com/api/v1/cancel_msg/Corpo: JSON ou campos de formulário
Você pode cancelar qualquer mensagem que ainda esteja aguardando envio (status 0, Criada): mensagens agendadas e mensagens colocadas na fila por Enviar mensagem, Enviar para um grupo ou Enviar para vários números. Uma mensagem que já foi enviada não pode ser recuperada. Se um bot já estiver enviando a mensagem nesse momento, ela ainda pode sair; por isso, em cancelamentos críticos, confirme com Status da mensagem.
Exemplo 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');
}Substitua 12345 e YOUR_API_KEY pelos seus próprios valores, e 9817263 pelo msg_id que você recebeu ao enviar ou agendar a mensagem.
Parâmetros da requisição#
client_idintegerobrigatórioSeu ID do Cliente da API, em Configurações → Chaves API.
api_keystringobrigatórioSua chave de API, na mesma página.
msg_idintegerobrigatórioO
msg_idretornado pela requisição de envio ou agendamento. Ele precisa pertencer ao espaço de trabalho da sua chave de API.
Este endpoint não precisa de whatsapp_client.
Usar os clientes oficiais#
Os clientes para Python e Node.js chamam este endpoint para você.
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);Os dois clientes lançam uma exceção em erros de autenticação (HTTP 400/403): o Python lança requests.HTTPError, e o Node.js lança API error: 400 - {…}. Uma resposta Msg has been … volta como um resultado normal, com status: 0.
Resposta#
Uma requisição bem-sucedida retorna HTTP 200:
{
"message": "Cancelled",
"status": 1
}
| Campo | Tipo | Descrição |
|---|---|---|
status | integer | 1 se a mensagem foi cancelada, 0 se não foi. |
message | string | Cancelled em caso de sucesso; caso contrário, o motivo. |
Depois do cancelamento, Status da mensagem informa a mensagem como 3 (Cancelada). Uma mensagem cancelada não é enviada, não dispara seu webhook e deixa de contar contra seus créditos restantes.
Erros#
A maioria dos erros retorna HTTP 200 com status igual a 0, então sempre verifique status no corpo:
{ "message": "Msg has been Sent", "status": 0 }
| Mensagem | Como corrigir |
|---|---|
Msg has been Sent | A mensagem já foi enviada. Ela não pode ser cancelada. |
Msg has been Failed | A mensagem já falhou, então não há nada para cancelar. |
Msg has been Cancelled | A mensagem já foi cancelada antes. |
Msg has been Expired | A mensagem expirou antes de ser enviada, então não há nada para cancelar. |
No msg found for given msg_id | Verifique o msg_id. Ele precisa ser um número e pertencer ao mesmo espaço de trabalho da sua chave de API. |
Msg_id cant be null | Adicione msg_id. |
Auth Error | Envie client_id e api_key. |
Invalid Client Id | Envie client_id como número. Retornado com HTTP 403. |
Auth Error: invalid api key | Verifique se a chave existe, não foi excluída e pertence a este client_id. Retornado com HTTP 400. |
Invalid JSON format: … | O corpo JSON não é válido, geralmente por causa de uma vírgula sobrando no final, ou você enviou campos de formulário sem client_id. |
Objeto vazio {} | Um corpo JSON foi enviado com um método diferente de POST. |
Dicas#
- Guarde cada
msg_id: você precisa dele para cancelar. Em Enviar para vários números, cancele cadamsg_idda resposta separadamente. - Cancele cedo: depois que uma mensagem é enviada, ela continua enviada, então cancele as mensagens agendadas assim que souber que não são mais necessárias.
- Reagendamento: não há endpoint para alterar um horário agendado. Cancele a mensagem e agende uma nova.
- Considere concluídas as mensagens já finalizadas: uma resposta
Msg has been …significa que a mensagem não está mais na fila, então não é preciso tentar novamente.
