API de WhatsApp con Node.js
Con fetch, que viene en Node 18 o superior, y Express para el webhook.
Requisitos
- Node.js 18 o superior
- Tu API key y tu número conectado
- Express para el webhook: npm install express
Enviar un mensaje
Guárdalo como enviar.mjs y ejecútalo con node enviar.mjs.
const respuesta = await fetch('https://api.kontacto.pro/send-message', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api_key: process.env.WSP_API_KEY,
sender: '51999888777', // tu número conectado
number: '51987654321', // destino con código de país
message: 'Hola Ana, tu pedido #1024 ya salió a reparto.',
}),
signal: AbortSignal.timeout(30_000),
});
const datos = await respuesta.json();
if (!datos.status) {
throw new Error(`No se envió: ${datos.msg}`);
}
console.log('Enviado');
Enviar una imagen
Con caption, el texto aparece debajo de la imagen.
await fetch('https://api.kontacto.pro/send-media', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api_key: process.env.WSP_API_KEY,
sender: '51999888777',
number: '51987654321',
media_type: 'image',
caption: 'Nueva colección de temporada',
url: 'https://tusistema.com/img/coleccion.jpg',
}),
});
Recibir mensajes con Express
Si respondes un JSON con text, ese mensaje le llega al cliente.
import express from 'express';
const app = express();
app.use(express.json({ limit: '10mb' })); // bufferImage puede pesar
const atendidos = new Set();
app.post('/webhook', (req, res) => {
const { id, message = '', from } = req.body;
if (atendidos.has(id)) return res.end(); // ya respondido
atendidos.add(id);
if (message.includes('precio')) {
return res.json({ text: 'Hola {name}, te envío la lista de precios.', quoted: true });
}
res.end(); // sin respuesta automática
});
app.listen(3000);
Todos los endpoints, parámetros y errores están en la documentación de la API.
¿Puedo usar axios?
Sí: axios.post('https://api.kontacto.pro/send-message', datos) envía el mismo JSON.
¿Necesito una librería de WhatsApp como Baileys?
No. La conexión con WhatsApp ya la mantiene el servidor; tú solo haces peticiones HTTP.
Envía tu primer mensaje hoy
Escríbenos por WhatsApp, conectamos tu número con un QR y te damos tu API key para que pruebes desde tu sistema.