API: Webhooks
El webhook te permite recibir notificaciones HTTP en tu servidor cuando ocurran eventos relacionados con tu cuenta (mensajes recibidos, cambios de status, conexion/desconexion).
Aplica a toda la cuenta del cliente, no a un celular especifico. Si tienes varios celulares, todos usan el mismo webhook.
Eventos disponibles
| Evento | Cuando se dispara |
|---|---|
messages.received | Cuando llega un mensaje a CUALQUIER celular de tu cuenta |
message.status | Cuando un mensaje enviado cambia de estado (enviado, entregado, leido, error) |
session.status | Cuando un celular se conecta o desconecta de WhatsApp |
all | Atajo para los 3 eventos anteriores |
GET /api/webhook.php
Lee la configuracion actual del webhook. URL completa: https://api.multimensajes.com/api/webhook.php
Ejemplo cURL
curl -X GET 'https://api.multimensajes.com/api/webhook.php' \
-H 'Authorization: Bearer WA_69_2e5ded25cd94d7b4'
Respuesta (200)
{
"ok": true,
"configurado": true,
"cliente_id": 55,
"url": "https://mi-app.example.com/webhook/multimensajes",
"has_secret": true,
"eventos": ["messages.received", "message.status", "session.status"],
"activo": true,
"updated_at": "2026-08-09 20:30:00"
}
Si el webhook no esta configurado, devuelve configurado: false.
POST /api/webhook.php
Crea o actualiza el webhook. URL completa: https://api.multimensajes.com/api/webhook.php
Body (JSON)
{
"url": "https://mi-app.example.com/webhook/multimensajes",
"secret": "mi_secret_para_firma_hmac",
"eventos": ["messages.received", "message.status", "session.status"],
"activo": true
}
Ejemplo cURL
curl -X POST 'https://api.multimensajes.com/api/webhook.php' \
-H 'Authorization: Bearer WA_69_2e5ded25cd94d7b4' \
-H 'Content-Type: application/json' \
-d '{"url":"https://mi-app.com/wh","secret":"s3cr3t","eventos":["all"],"activo":true}'
Como verificar la firma HMAC
Si configuraste un secret, cada POST que te enviamos incluye el header X-MultiMensajes-Signature: sha256=<hmac>. En tu servidor:
// PHP
$expected = 'sha256=' . hash_hmac('sha256', file_get_contents('php://input'), $secret);
if (!hash_equals($expected, $_SERVER['HTTP_X_MULTIMENSAJES_SIGNATURE'] ?? '')) {
http_response_code(401);
exit('firma invalida');
}
// Node.js
const expected = 'sha256=' + crypto.createHmac('sha256', secret)
.update(rawBody).digest('hex');
if (expected !== req.headers['x-multimensajes-signature']) {
return res.status(401).send('firma invalida');
}
DELETE /api/webhook.php
Elimina el webhook. Los eventos dejaran de enviarse a tu servidor. URL completa: https://api.multimensajes.com/api/webhook.php
Ejemplo cURL
curl -X DELETE 'https://api.multimensajes.com/api/webhook.php' \
-H 'Authorization: Bearer WA_69_2e5ded25cd94d7b4'
Payload que recibirás
El body es JSON con esta estructura:
{
"evento": "messages.received",
"timestamp": "2026-08-09T20:30:00-06:00",
"cliente_id": 55,
"celular_id": 69,
"data": {
"from": "5218711281619",
"message": "Hola!",
"type": "text",
"wasenderapi_msg_id": "..."
}
}