Introducción

¡Novedad! La versión 2.1 de la API incluye soporte para mensajes efímeros y reacciones.

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.

Descripción General
Características
Requisitos

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
Importante: Para usar esta API necesitas una cuenta de WhatsApp Business aprobada. El acceso a la API está restringido a socios oficiales de WhatsApp.

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
Políticas estrictas: WhatsApp aplica políticas estrictas sobre el uso de su API. El incumplimiento puede resultar en la suspensión permanente de tu cuenta.

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ámetros
Respuesta
Ejemplos
ParámetroTipoRequeridoDescripción
phone_number string Número de teléfono en formato internacional (ej. +14155552671)
message string 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ámetros
Tipos de Media
Ejemplos
ParámetroTipoRequeridoDescripción
phone_number string Número de teléfono en formato internacional
media_type string Tipo de media (image, video, document, audio, sticker)
media_url string URL pública del archivo multimedia (HTTPS requerido)
caption string No Descripción para imágenes/videos/documentos (hasta 1024 caracteres)

Formatos Soportados

TipoFormatosTamañ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ámetros
Estados
Ejemplos
ParámetroTipoRequeridoDescripción
message_id string ID del mensaje obtenido en la respuesta de envío

Posibles Estados

EstadoDescripció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.

Configuración
Eventos
Seguridad

Pasos para Configurar

  1. Crea un endpoint HTTPS en tu servidor que acepte solicitudes POST
  2. Registra la URL en el Panel de Desarrollo de WhatsApp
  3. Verifica el webhook respondiendo al desafío de verificación
  4. 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

EventoDescripciónEjemplo 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
Aprobación
Ejemplos

Tipos de Plantillas

TipoDescripciónComponentes
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

ComponenteDescripciónEjemplo
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.

  1. Crea la plantilla en el Panel de WhatsApp Business
  2. Espera la revisión y aprobación
  3. Recibe notificación por email
  4. Usa el nombre de plantilla aprobado en tus llamadas API
Políticas de Contenido: WhatsApp rechazará plantillas con contenido promocional no solicitado, lenguaje inapropiado o que violen sus políticas comerciales.

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ódigos
Solución
Límites
CódigoTipoDescripciónSolució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

  1. Verifica el código de error en la respuesta
  2. Consulta la documentación oficial
  3. Revisa los logs de tu servidor
  4. Prueba con datos mínimos para aislar el problema
  5. 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

RecursoLímiteNotas
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
Consejo: Implementa retirada exponencial (exponential backoff) cuando encuentres errores 429 (Too Many Requests) para manejar límites de tasa.

Preguntas Frecuentes

Respuestas a las preguntas más comunes sobre WhatsApp Business API.

¿Cómo obtengo acceso a 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.

¿Puedo enviar mensajes promocionales a través de la API?

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.

¿Qué diferencia hay entre WhatsApp Business API y WhatsApp Business App?

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.

¿Hay algún costo asociado con WhatsApp Business API?

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.

¿Cómo manejo la privacidad y cumplimiento con GDPR?

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.

v2.1 (Actual)
Versiones Anteriores
Próximas Funciones

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
Nota de Migración: La versión 2.1 es compatible con versiones anteriores. No se requieren cambios urgentes, pero se recomienda actualizar para acceder a las nuevas funciones.

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
Nota: El roadmap está sujeto a cambios. Las fechas son estimaciones y pueden variar.