Bienvenido a WhatsApp Business API
Esta API te permite integrar WhatsApp Business con tus sistemas para comunicarte con tus clientes de forma automatizada, escalable y segura.
WhatsApp Business API es una solución empresarial que permite:
- Enviar notificaciones importantes a tus clientes
- Brindar soporte al cliente las 24 horas
- Automatizar respuestas frecuentes
- Integrar WhatsApp con tus sistemas CRM y ERP
Principales Funcionalidades
Mensajes de Texto
Envía mensajes de texto con formato (negrita, cursiva, tachado) y emojis.
Multimedia
Envía imágenes, videos, documentos y archivos de audio.
Listas y Botones
Interactúa con usuarios mediante botones de respuesta rápida y mensajes con listas.
Mensajes Efímeros
Envía mensajes que desaparecen después de un tiempo configurable.
Requisitos Técnicos
- Cuenta de WhatsApp Business verificada
- Servidor con HTTPS válido
- Token de acceso proporcionado por WhatsApp
- Límites de tasa configurados según tu plan
POST /send-message
Envía un mensaje de texto a un número de WhatsApp. Soporta formato Markdown básico para negritas, cursivas y tachados.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
phone_number | string | Sí | Número de teléfono en formato internacional (ej. +14155552671) |
message | string | Sí | Contenido del mensaje (hasta 4096 caracteres). Soporta *negritas*, _cursivas_ y ~tachados~ |
preview_url | boolean | No | Si es true, genera una vista previa de los enlaces incluidos (default: false) |
reply_to | string | No | ID del mensaje al que se está respondiendo |
Respuesta Exitosa
{
"status": "success",
"message_id": "wamid.ABGS...",
"timestamp": "2025-04-27T12:00:00Z",
"recipient": "+14155552671"
}
Respuesta de Error
{
"status": "error",
"code": 400,
"message": "Invalid phone number format",
"details": "Phone number must include country code"
}
Ejemplo cURL
curl -X POST \
https://api.whatsapp.com/v2/send-message \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"message": "¡Hola! Este es un *mensaje importante*.",
"preview_url": true
}'
Ejemplo JavaScript
const sendMessage = async () => {
const response = await fetch('https://api.whatsapp.com/v2/send-message', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone_number: '+14155552671',
message: '¡Hola! Este es un *mensaje importante*.',
preview_url: true
})
});
const data = await response.json();
console.log(data);
};
POST /send-media
Envía mensajes multimedia (imágenes, videos, documentos, audio) a través de WhatsApp.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
phone_number | string | Sí | Número de teléfono en formato internacional |
media_type | string | Sí | Tipo de media (image, video, document, audio, sticker) |
media_url | string | Sí | URL pública del archivo multimedia (HTTPS requerido) |
caption | string | No | Descripción para imágenes/videos/documentos (hasta 1024 caracteres) |
Formatos Soportados
Tipo | Formatos | Tamaño Máx. | Notas |
---|---|---|---|
Imagen | JPEG, PNG | 5 MB | Se recomienda 1920x1080px |
Video | MP4, 3GPP | 16 MB | Máx. 30 segundos para autoplay |
Documento | PDF, DOCX, XLSX, PPTX, TXT | 100 MB | Debe incluir extensión |
Audio | MP3, OGG | 16 MB | Máx. 30 segundos para notas de voz |
Ejemplo cURL
curl -X POST \
https://api.whatsapp.com/v2/send-media \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"media_type": "image",
"media_url": "https://example.com/image.jpg",
"caption": "Este es nuestro *nuevo producto*"
}'
GET /message-status
Consulta el estado de entrega de un mensaje previamente enviado.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
message_id | string | Sí | ID del mensaje obtenido en la respuesta de envío |
Posibles Estados
Estado | Descripción |
---|---|
sent | Mensaje enviado al servidor de WhatsApp |
delivered | Mensaje entregado al dispositivo del destinatario |
read | Mensaje fue leído por el destinatario |
failed | Error al enviar el mensaje (ver campo error) |
Respuesta Exitosa
{
"status": "delivered",
"message_id": "wamid.ABGS...",
"timestamp": "2025-04-27T12:05:00Z",
"recipient": "+14155552671"
}
Ejemplo cURL
curl -X GET \
"https://api.whatsapp.com/v2/message-status?message_id=wamid.ABGS..." \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Webhooks
Configura webhooks para recibir notificaciones en tiempo real sobre eventos en tu cuenta de WhatsApp Business.
Pasos para Configurar
- Crea un endpoint HTTPS en tu servidor que acepte solicitudes POST
- Registra la URL en el Panel de Desarrollo de WhatsApp
- Verifica el webhook respondiendo al desafío de verificación
- Suscríbete a los eventos que deseas recibir
Ejemplo de Verificación
WhatsApp enviará una solicitud GET con los siguientes parámetros:
GET /your-webhook-endpoint
?hub.mode=subscribe
&hub.verify_token=YOUR_VERIFY_TOKEN
&hub.challenge=RANDOM_STRING
Tu servidor debe responder con el valor de hub.challenge
para completar la verificación.
Eventos Disponibles
Evento | Descripción | Ejemplo de Datos |
---|---|---|
message | Nuevo mensaje recibido | Contiene ID, remitente, tipo de mensaje y contenido |
message_status | Cambio en estado de mensaje enviado | Contiene ID de mensaje, nuevo estado y timestamp |
contact_update | Información de contacto actualizada | Contiene número y nuevos datos de perfil |
Ejemplo de Webhook
{
"object": "whatsapp_business_account",
"entry": [{
"id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
"changes": [{
"value": {
"messaging_product": "whatsapp",
"metadata": {
"display_phone_number": "15555555555",
"phone_number_id": "PHONE_NUMBER_ID"
},
"contacts": [{
"profile": {
"name": "John Doe"
},
"wa_id": "15555551234"
}],
"messages": [{
"from": "15555551234",
"id": "wamid.ID",
"timestamp": "1520383572",
"text": {
"body": "Hello!"
},
"type": "text"
}]
},
"field": "messages"
}]
}]
}
Mejores Prácticas de Seguridad
- Usa HTTPS con certificados válidos
- Implementa verificación de firma para autenticar solicitudes
- Usa tokens de verificación seguros
- Limita la tasa de solicitudes aceptadas
- Registra y monitorea todas las solicitudes entrantes
Verificación de Firma
WhatsApp incluye un encabezado X-Hub-Signature-256
con firma SHA256 del payload usando tu App Secret.
// Ejemplo de verificación en Node.js
const crypto = require('crypto');
function verifySignature(req, res, next) {
const signature = req.headers['x-hub-signature-256'];
const hmac = crypto.createHmac('sha256', process.env.APP_SECRET);
const digest = `sha256=${hmac.update(JSON.stringify(req.body)).digest('hex')}`;
if (signature !== digest) {
return res.status(401).send('Invalid signature');
}
next();
}
Plantillas de Mensaje
Las plantillas permiten enviar mensajes estructurados para notificaciones y servicio al cliente fuera de una conversación activa.
Tipos de Plantillas
Tipo | Descripción | Componentes |
---|---|---|
Texto | Mensaje de texto con variables | Cuerpo, posiblemente con botones |
Media | Imagen, video o documento con texto | Encabezado (media), cuerpo, botones |
Interactiva | Listas o botones de respuesta rápida | Cuerpo, botones o lista de opciones |
Componentes de Plantilla
Componente | Descripción | Ejemplo |
---|---|---|
Encabezado | Primera parte del mensaje (texto o media) | Imagen de producto o título |
Cuerpo | Contenido principal del mensaje | Descripción con variables |
Botones | Llamadas a acción (hasta 3) | "Comprar ahora", "Hablar con agente" |
Proceso de Aprobación
Todas las plantillas deben ser aprobadas por WhatsApp antes de poder usarse. El proceso tarda típicamente 24-72 horas.
- Crea la plantilla en el Panel de WhatsApp Business
- Espera la revisión y aprobación
- Recibe notificación por email
- Usa el nombre de plantilla aprobado en tus llamadas API
Ejemplo de Plantilla de Texto
{
"name": "order_confirmation",
"language": "es",
"components": [
{
"type": "body",
"text": "Hola {{1}}, tu pedido #{{2}} ha sido confirmado. Será enviado el {{3}}."
},
{
"type": "button",
"sub_type": "quick_reply",
"index": 0,
"parameters": [
{
"type": "payload",
"payload": "track_order_12345"
}
]
}
]
}
Ejemplo de Uso
POST /v2/messages
{
"to": "15555551234",
"type": "template",
"template": {
"name": "order_confirmation",
"language": {
"code": "es"
},
"components": [
{
"type": "body",
"parameters": [
{"type": "text", "text": "Juan"},
{"type": "text", "text": "12345"},
{"type": "text", "text": "28/04/2025"}
]
}
]
}
}
Errores Comunes
Lista de errores frecuentes y cómo solucionarlos al interactuar con la API de WhatsApp Business.
Código | Tipo | Descripción | Solución |
---|---|---|---|
131030 | Autenticación | Token de acceso no válido o expirado | Genera un nuevo token en el panel de desarrolladores |
132000 | Validación | Formato de número telefónico incorrecto | Usa formato internacional (ej. +14155552671) |
133000 | Límite | Límite de tasa excedido | Espera o solicita aumento de límite |
134000 | Plantilla | Plantilla no aprobada o no encontrada | Verifica el nombre o espera aprobación |
Proceso de Solución
- Verifica el código de error en la respuesta
- Consulta la documentación oficial
- Revisa los logs de tu servidor
- Prueba con datos mínimos para aislar el problema
- Si persiste, contacta al soporte con detalles completos
Registro de Errores
Implementa un sistema de registro que capture:
- Timestamp del error
- Código y mensaje de error
- Solicitud que generó el error
- Contexto de la operación
Límites de la API
Recurso | Límite | Notas |
---|---|---|
Mensajes por segundo | 50 | Varía según nivel de cuenta |
Tamaño de mensaje | 4096 caracteres | Para mensajes de texto |
Archivos multimedia | 16MB (videos) | 5MB para imágenes |
Contactos por lista | 256 | Para mensajes interactivos |
Preguntas Frecuentes
Respuestas a las preguntas más comunes sobre WhatsApp Business API.
WhatsApp Business API no está disponible directamente para todos. Debes trabajar con un Proveedor de Soluciones Oficial (BSP) como Twilio, MessageBird o 360dialog. Estos socios autorizados pueden proporcionarte acceso a la API después de completar el proceso de verificación de negocio.
WhatsApp tiene políticas estrictas sobre mensajes promocionales. Solo puedes enviar mensajes promocionales a usuarios que hayan optado por recibirlos explícitamente, y debes usar plantillas aprobadas previamente. Los mensajes transaccionales y de servicio al cliente tienen menos restricciones.
WhatsApp Business App es una aplicación móvil diseñada para pequeñas empresas, con funciones básicas como respuestas automáticas y catálogos. WhatsApp Business API es una solución empresarial escalable que permite integración con sistemas, automatización avanzada y alto volumen de mensajes, pero requiere un proveedor oficial y no tiene interfaz de usuario propia.
Sí, WhatsApp cobra por conversación (sesión de 24 horas con un usuario). Las tarifas varían por región y tipo de mensaje (transaccional vs. promocional). Además, tu proveedor de soluciones (BSP) puede cobrar tarifas adicionales por el servicio. Consulta con tu BSP para detalles específicos.
Debes implementar:
- Consentimiento explícito para contactar a usuarios
- Mecanismos para opt-out (STOP, etc.)
- Política de privacidad clara
- Almacenamiento seguro de datos
- Procesos para eliminar datos cuando sea requerido
WhatsApp proporciona herramientas para ayudar con el cumplimiento, pero la responsabilidad final recae en tu negocio.
Registro de Cambios
Historial de versiones y cambios importantes en WhatsApp Business API.
Versión 2.1 - Abril 2025
- Nuevo: Soporte para mensajes efímeros (desaparecen después de 24h)
- Nuevo: API para reacciones a mensajes (👍, ❤️, etc.)
- Mejora: Límite de caracteres aumentado a 4096 para mensajes de texto
- Mejora: Webhooks para eventos de reacciones y mensajes efímeros
- Fixes: Problemas de sincronización con algunos proveedores BSP
Versión 2.0 - Enero 2025
- Nuevo endpoint para mensajes de encuestas
- Soporte para respuestas a encuestas via webhook
- Mejoras en el sistema de plantillas
Versión 1.9 - Octubre 2024
- Integración con WhatsApp Pay para pagos
- Soporte para múltiples monedas
- Mejoras de seguridad en autenticación
Próximamente (Roadmap 2025)
- Q3 2025: Soporte para chatbots con IA integrada
- Q3 2025: Análisis de sentimientos en mensajes entrantes
- Q4 2025: Integración con WhatsApp Communities
- Q4 2025: Soporte para canales de broadcast avanzados