Qué es
La API de mensajes de WhatsApp envía mensajes de plantilla, texto, imagen, video, audio, documento, sticker, ubicación, interactivos, contactos y reacciones desde un número de teléfono comercial de WhatsApp conectado.Antes de comenzar
- Guarda tu clave de API de YCloud en
YCLOUD_API_KEY. - Conecta una cuenta de WhatsApp Business y un número de teléfono a YCloud.
- Obtén el número de teléfono del remitente en formato E.164 y el número de teléfono del destinatario, su BSUID o su BSUID principal.
- Usa una plantilla
APPROVEDpara envíos de plantillas habituales. - Sube los archivos multimedia primero cuando el mensaje haga referencia a un ID de contenido multimedia de YCloud.
Cómo funciona
Elige el endpoint en función de cuándo debe YCloud enviar el mensaje a la WhatsApp Business API.
Ambos endpoints devuelven un objeto de mensaje de YCloud. La respuesta inicial no confirma la entrega final. Los cambios de estado posteriores llegan a través de
whatsapp.message.updated Webhooks.
Envía tu primer mensaje
Elige una plantilla aprobada que pertenezca a tu WABA conectada. Reemplaza el remitente, el destinatario, el nombre de la plantilla y el idioma con tus propios valores, y luego envía:id devuelto y sigue sus eventos whatsapp.message.updated. Una respuesta accepted significa que la solicitud entró en procesamiento, no que el cliente la haya recibido. Configura tanto whatsapp.message.updated como whatsapp.inbound_message.received cuando necesites seguimiento de entrega y respuestas.
Elegir un mensaje de plantilla o de sesión
Usa una plantilla aprobada para mensajes habituales iniciados por la empresa fuera de la ventana de servicio al cliente. Dentro de una ventana abierta, usa tipos de mensajes de formato libre admitidos, como texto, contenido multimedia o respuestas interactivas. Consulta las reglas de la ventana de servicio al cliente al momento del envío. Una ventana de precios no reemplaza la idoneidad para enviar mensajes. Consulta los precios de WhatsApp para conocer las tarifas actuales y las condiciones de los puntos de entrada.Direct Send para contenido de utilidad
Direct Send puede enviar contenido de utilidad elegible o convertir una plantilla de utilidad existente. Funciona con cualquiera de los endpoints de envío. El endpointsendDirectly controla el envío sincrónico; no habilita Direct Send por sí solo.
Sigue las mejores prácticas de Direct Send para requisitos de elegibilidad, solicitudes, conversión de plantillas, límites y eventos de cuenta.
Elegir el mejor momento de envío
Haz coincidir el momento de envío con el propósito del mensaje y la hora local del destinatario.- Envía contraseñas de un solo uso (OTP) y otros mensajes urgentes de inmediato. Usa
POST /whatsapp/messages/sendDirectlycuando tu flujo de trabajo necesite el resultado del envío antes de continuar. - Envía actualizaciones transaccionales cuando ocurra el evento correspondiente, como un pago, un envío o un cambio de cita.
- Programa los mensajes de marketing en horarios razonables en la zona horaria del destinatario. Utiliza tus propios datos de entrega, lectura y conversión para probar diferentes intervalos de tiempo para cada audiencia en lugar de asumir una única mejor hora universal.
- Inicia una campaña programada con un grupo pequeño de destinatarios. Comprueba los resultados de entrega, respuesta y cancelaciones de suscripción antes de enviar al resto de la audiencia.
- Evita envíos repetidos cuando un mensaje se retrase. Guarda
externalIdy procesa los Webhooks dewhatsapp.message.updatedantes de decidir si reintentar.
Solicitud
Elige cualquiera de los endpoints anteriores y, luego, usa el cuerpo de la solicitud que coincida con el tipo de mensaje. El valor defrom es tu número de teléfono comercial de WhatsApp conectado. Dirige el mensaje al destinatario con to en formato E.164 o con recipient configurado como un BSUID o BSUID principal.
Campos habituales de la solicitud
Proporciona al menos uno entre
to o recipient. Si incluyes ambos, YCloud usa
to e ignora recipient.
Las plantillas de autenticación con un solo toque (one-tap), sin toques (zero-tap) y de copiar código requieren un número
de teléfono. Usa
to para estos tipos de plantilla.Ejemplos de solicitud
Mensaje de plantilla
Mensaje de plantilla
Mensaje de texto
Mensaje de texto
Mensaje de imagen
Mensaje de imagen
Mensaje de video
Mensaje de video
Mensaje de audio
Mensaje de audio
Mensaje de documento
Mensaje de documento
Mensaje de sticker
Mensaje de sticker
Mensaje de ubicación
Mensaje de ubicación
Mensaje interactivo
Mensaje interactivo
Mensaje de contactos
Mensaje de contactos
Mensaje de reacción
Mensaje de reacción
Agregar variables a la plantilla
Haz coincidir el nombre de la plantilla, el idioma y el orden de los parámetros con tu plantilla aprobada. Para un cuerpo con parámetros de nombre del cliente y referencia de pedido, envía:Responder a un mensaje específico
Establececontext.message_id con el ID del mensaje original de WhatsApp (wamid) para crear
una respuesta citada. Continúa verificando que la ventana de atención al cliente esté abierta.
Aplicar filtros de cancelación de suscripción y bloqueo
ParaPOST /whatsapp/messages, establece filterUnsubscribed: true y
filterBlocked: true cuando necesites aplicar tus listas de supresión de YCloud.
Ambos tienen como valor predeterminado false y no se aplican a sendDirectly.
Inspecciona whatsappMessage.errorCode en los webhooks de estado para
RECIPIENT_UNSUBSCRIBED o RECIPIENT_IN_BLOCK_LIST. No esperes un estado separado de
filtered. Aplica la supresión en tu aplicación antes de usar
sendDirectly.
Usa externalId para asociar mensajes con un pedido u otro registro interno.
Es un campo de correlación, no una clave de idempotencia del lado del servidor.
Respuesta
Una respuesta correcta devuelve el objeto de mensaje de YCloud. Un estado inicialstatus: accepted significa que YCloud aceptó la solicitud de envío. No significa que el
mensaje haya sido enviado por Meta o entregado al usuario de WhatsApp.
Ejemplo de respuesta
Campos de respuesta
Estado de entrega
Suscríbete a los Webhooks dewhatsapp.message.updated para recibir cambios de estado posteriores
como sent, failed, delivered o read.
Usa GET /whatsapp/messages/{id} cuando necesites recuperar un mensaje directamente.
Límites y solución de problemas
- Los envíos de plantillas ordinarios requieren una plantilla
APPROVED; las plantillasARCHIVEDno se pueden enviar como mensajes de plantilla ordinarios. - No reintentes una solicitud aceptada sin una estrategia de idempotencia. Una solicitud repetida puede enviar un mensaje duplicado.
- Usa el estado de YCloud
id,wamid,externalIdy del Webhook cuando investigues la entrega. - Inspecciona
whatsappApiErrorcuando una solicitud directa llegue a Meta y Meta la rechace.
Prácticas recomendadas para Direct Send
Envía contenido de utilidad, convierte plantillas y supervisa los eventos de categoría y restricción.
Prácticas recomendadas para producción
Diseña sincronización de estados, reintentos delimitados, comprobaciones de consentimiento, reutilización de archivos multimedia
y controles de rendimiento para una integración en producción.
Usa ID de usuario con ámbito empresarial
Envía mensajes y llamadas mediante BSUID, solicita números de teléfono, gestiona entradas de la libreta
de contactos de Meta y procesa campos de webhook de BSUID.

