curl -X POST https://api.whaapy.com/messages/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+5215512345678",
"content": "¡Hola! Gracias por tu mensaje. Te responderemos pronto."
}'
const response = await fetch('https://api.whaapy.com/messages/v1', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: '+5215512345678',
content: '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.whaapy.com/messages/v1',
headers={
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
json={
'to': '+5215512345678',
'content': '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
}
)
print(response.json())
$ch = curl_init('https://api.whaapy.com/messages/v1');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'to' => '+5215512345678',
'content' => '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;
{
"messaging_product": "whatsapp",
"contacts": [
{ "input": "+5215512345678", "wa_id": "5215512345678" }
],
"messages": [
{ "id": "550e8400-e29b-41d4-a716-446655440000", "wamid": "wamid.HBgLNTIxNTUx..." }
],
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"conversationId": "660e8400-e29b-41d4-a716-446655440001",
"content": "¡Hola! Gracias por tu mensaje.",
"messageType": "text",
"direction": "outbound",
"status": "sent",
"createdAt": "2026-01-22T10:30:00Z"
}
}
Mensajes
Enviar Mensaje de Texto
Envía mensajes de texto simple a WhatsApp
POST
/
messages
/
v1
curl -X POST https://api.whaapy.com/messages/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+5215512345678",
"content": "¡Hola! Gracias por tu mensaje. Te responderemos pronto."
}'
const response = await fetch('https://api.whaapy.com/messages/v1', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: '+5215512345678',
content: '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.whaapy.com/messages/v1',
headers={
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
json={
'to': '+5215512345678',
'content': '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
}
)
print(response.json())
$ch = curl_init('https://api.whaapy.com/messages/v1');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'to' => '+5215512345678',
'content' => '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;
{
"messaging_product": "whatsapp",
"contacts": [
{ "input": "+5215512345678", "wa_id": "5215512345678" }
],
"messages": [
{ "id": "550e8400-e29b-41d4-a716-446655440000", "wamid": "wamid.HBgLNTIxNTUx..." }
],
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"conversationId": "660e8400-e29b-41d4-a716-446655440001",
"content": "¡Hola! Gracias por tu mensaje.",
"messageType": "text",
"direction": "outbound",
"status": "sent",
"createdAt": "2026-01-22T10:30:00Z"
}
}
El endpoint principal para enviar mensajes. Esta página cubre mensajes de texto. Para otros tipos, consulta:
Ver Códigos de Error para la lista completa de errores.
Media
Imágenes, videos, audio, documentos, stickers
Templates
Templates pre-aprobados por Meta
Interactive
Botones y listas interactivas
Ubicación
Coordenadas GPS y direcciones
Formato Híbrido
Whaapy acepta dos estilos de request, dándote flexibilidad:- Estilo Whaapy (Simplificado)
- Estilo Meta (Compatible)
Formato minimalista para casos comunes:
{
"to": "+5215512345678",
"content": "¡Hola! Gracias por contactarnos."
}
100% compatible con WhatsApp Cloud API:
{
"messaging_product": "whatsapp",
"to": "+5215512345678",
"type": "text",
"text": {
"body": "¡Hola! Gracias por contactarnos.",
"preview_url": true
}
}
El estilo Whaapy es más corto y fácil de usar. El estilo Meta es útil si ya tienes código funcionando con la API oficial de WhatsApp.
Campos de Destino
Debes proporcionar al menos uno de estos campos para identificar el destinatario:string
Número de teléfono con código de país. Ejemplo:
+5215512345678string
Alias de
to. Mismo formato.string
UUID de una conversación existente en Whaapy. Útil para responder en conversaciones activas.
Si proporcionas
conversationId, Whaapy obtiene automáticamente el número de teléfono de esa conversación.Campos de Contenido (Texto)
string
Estilo Whaapy. El texto del mensaje a enviar.
object
Estilo Meta. Objeto con las siguientes propiedades:
body(string, requerido): El texto del mensajepreview_url(boolean, opcional): Si mostrar vista previa de URLs
Ejemplos
Texto Simple (Estilo Whaapy)
curl -X POST https://api.whaapy.com/messages/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+5215512345678",
"content": "¡Hola! Gracias por tu mensaje. Te responderemos pronto."
}'
const response = await fetch('https://api.whaapy.com/messages/v1', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: '+5215512345678',
content: '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.whaapy.com/messages/v1',
headers={
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
json={
'to': '+5215512345678',
'content': '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
}
)
print(response.json())
$ch = curl_init('https://api.whaapy.com/messages/v1');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'to' => '+5215512345678',
'content' => '¡Hola! Gracias por tu mensaje. Te responderemos pronto.'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;
Texto con Vista Previa de URL (Estilo Meta)
{
"to": "+5215512345678",
"type": "text",
"text": {
"body": "Mira nuestro catálogo: https://whaapy.com/productos",
"preview_url": true
}
}
Con
preview_url: true, WhatsApp mostrará una vista previa enriquecida del enlace (imagen, título, descripción) si la URL lo soporta.Responder a Conversación Existente
{
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"content": "Gracias por tu paciencia. Ya tenemos tu pedido listo."
}
Respuesta Exitosa
{
"messaging_product": "whatsapp",
"contacts": [
{ "input": "+5215512345678", "wa_id": "5215512345678" }
],
"messages": [
{ "id": "550e8400-e29b-41d4-a716-446655440000", "wamid": "wamid.HBgLNTIxNTUx..." }
],
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"conversationId": "660e8400-e29b-41d4-a716-446655440001",
"content": "¡Hola! Gracias por tu mensaje.",
"messageType": "text",
"direction": "outbound",
"status": "sent",
"createdAt": "2026-01-22T10:30:00Z"
}
}
Campos de Respuesta
| Campo | Descripción |
|---|---|
messaging_product | Siempre "whatsapp" |
contacts | Array con info del contacto (wa_id es el ID de WhatsApp) |
messages | Array con IDs del mensaje (id de Whaapy, wamid de Meta) |
data.id | UUID del mensaje en Whaapy (usar para retry) |
data.conversationId | UUID de la conversación |
data.status | Estado: sent, delivered, read, failed |
Errores Comunes
Ventana de 24 Horas Expirada
{
"error": "message_delivery_failed",
"message": "La ventana de conversación de 24 horas ha expirado",
"code": "131047",
"action_required": "Usar template message",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed"
}
}
WhatsApp solo permite enviar mensajes de texto libre dentro de las 24 horas posteriores al último mensaje del usuario. Fuera de esta ventana, debes usar un template message.
Control de IA (Opcional)
Puedes controlar el comportamiento del agente IA al enviar mensajes usando el campoai:
boolean
Pausar la IA después de enviar este mensaje
number
Duración de la pausa en minutos (default: 5, máximo: 1440)
boolean
Desactivar la IA permanentemente en esta conversación
Ejemplo: Enviar y Pausar IA
{
"to": "+5215512345678",
"content": "Te atiendo personalmente",
"ai": { "pause": true, "pauseDuration": 30 }
}
Esto es útil cuando integras con sistemas externos (n8n, Zapier, CRMs) y necesitas evitar que la IA responda automáticamente. Ver Agente IA para más opciones.
Próximos Pasos
Enviar Media
Imágenes, videos, audio, documentos
Templates
Mensajes fuera de ventana de 24h
Reintentar Mensaje
Reenviar mensajes fallidos
Subir Media
Subir archivos grandes
Was this page helpful?