Enviar mensajes de WhatsApp con una API REST: ejemplos en Node.js y Python
Enviar mensajes de WhatsApp desde tu aplicación no tiene por qué ser complicado. Con una API REST y tu API key, mandas un texto, una imagen o un audio con una sola petición HTTP. Aquí tienes ejemplos listos para copiar en cURL, Node.js y Python.
Antes de empezar
Necesitas dos cosas:
- Un número de WhatsApp conectado (en LoroAPI se hace escaneando un QR, en minutos).
- Tu API key, que va en la cabecera
x-api-keyde cada petición.
La URL base de la API es https://loroapi.com/api/v1. El número de destino se escribe con el código de país, sin el + (por ejemplo, 5215555555555).
Enviar un mensaje de texto
cURL
curl -X POST https://loroapi.com/api/v1/send \
-H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "number": "5215555555555", "type": "text", "text": "Hola desde la API 👋" }'
Node.js (fetch nativo)
const res = await fetch("https://loroapi.com/api/v1/send", {
method: "POST",
headers: {
"x-api-key": process.env.LOROAPI_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
number: "5215555555555",
type: "text",
text: "Hola desde Node.js 👋",
}),
});
const data = await res.json();
console.log(data);
Python (requests)
import requests
resp = requests.post(
"https://loroapi.com/api/v1/send",
headers={"x-api-key": "TU_API_KEY"},
json={"number": "5215555555555", "type": "text", "text": "Hola desde Python 👋"},
)
print(resp.json())
Enviar una imagen
Adjunta la imagen por URL y un pie de foto opcional:
curl -X POST https://loroapi.com/api/v1/send \
-H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": "5215555555555",
"type": "image",
"media": "https://tu-servidor.com/foto.jpg",
"caption": "Mira esto 👀"
}'
Enviar una nota de voz / audio
curl -X POST https://loroapi.com/api/v1/send \
-H "x-api-key: TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "number": "5215555555555", "type": "audio", "media": "https://tu-servidor.com/nota.mp3" }'
Cómo interpretar la respuesta
La API devuelve códigos HTTP estándar:
- 200 — Mensaje enviado; el cuerpo trae la respuesta del envío.
- 400 — Falta un campo (
number,textomedia). - 401 — API key ausente o inválida.
- 402 — Suscripción inactiva o sin créditos.
- 409 — Aún no has conectado un número de WhatsApp.
Buenas prácticas
- Guarda tu API key como variable de entorno, nunca en el código fuente.
- Cada mensaje saliente consume 1 crédito; recibir es gratis.
- Respeta las políticas de WhatsApp: nada de spam ni envíos masivos no solicitados (puede provocar el bloqueo del número).
Siguiente paso: recibir mensajes
Enviar es la mitad. Para recibir los mensajes entrantes en tu servidor (y, por ejemplo, responder con IA), configura un webhook: LoroAPI hará un POST firmado a tu URL con cada mensaje que llegue.