/conversation/*) la reciben en el
cuerpo del request bajo el objeto conversation.
Identificar una conversación
El objetoconversation acepta uno de cuatro identificadores. El resolver
evalúa en este orden: uuid → whatsapp_user_id → username → phone:
whatsapp_user_id busca por igualdad exacta y username por igualdad
case-insensitive (ignora mayúsculas); phone se normaliza a dígitos.
Cuando el contacto tiene BSUID, phone y
whatsapp_user_id identifican valores distintos (ver Note).
El UUID de un
GET /conversations. El camino más directo y estable (puede
quedar obsoleto si dos conversaciones del mismo contacto se unifican — ver la
nota de unificación más abajo).El BSUID del contacto (identidad opaca de Meta). Resuelve por igualdad exacta
contra el BSUID guardado; si no resuelve, el endpoint responde
404 sin caer a
phone. Identificador recomendado de aquí en adelante.Username público de WhatsApp del contacto, con o sin
@ inicial y sin
distinguir mayúsculas. Resolución best-effort contra el último username
observado por la plataforma (el usuario puede cambiar su handle); si varios
contactos lo comparten, el endpoint responde 409 (USERNAME_AMBIGUOUS).Número en formato E.164 (
+5215512345678). Se normaliza a dígitos antes del
lookup. Útil cuando solo tienes el teléfono.phone y whatsapp_user_id son identificadores distintos: phone es el
teléfono (wa_id sin +) y whatsapp_user_id es el BSUID del contacto. Coinciden
solo mientras el contacto no tiene BSUID. En las respuestas, whatsapp_user_id
devuelve el BSUID real cuando existe, con fallback al teléfono para que siempre
haya un valor resoluble. Cuidado en el round-trip: si el contacto aún no tiene
BSUID, este campo trae el teléfono; reenvíalo entonces como phone, no como
whatsapp_user_id — el resolver matchea whatsapp_user_id por igualdad exacta y
daría 404.Cuando un mismo contacto quedó registrado dos veces por identidad (por ejemplo,
primero solo con su teléfono y luego con su BSUID), las dos conversaciones se
unifican automáticamente en una sola: todo el historial pasa a la
sobreviviente. El
uuid de la conversación absorbida deja de resolver y responde
404; el teléfono y el BSUID migran a la sobreviviente. Si guardaste un uuid y
empieza a dar 404, vuelve a resolver la conversación por phone o
whatsapp_user_id.La ventana de 24h
Es el concepto central de WhatsApp y decide qué puedes enviar.1
El contacto te escribe
WhatsApp abre una ventana de 24 horas. Cada nuevo mensaje del contacto
reinicia el contador.
2
Ventana abierta
Puedes enviar mensajes libres: texto, media y quick replies.
3
Pasan 24h sin respuesta
La ventana se cierra. El único mensaje permitido es una plantilla
aprobada por Meta.
4
Enviar una plantilla reabre la ventana
Vuelves a poder enviar mensajes libres.
Consultar el estado de la ventana
Antes de enviar un mensaje libre, puedes verificar si la ventana está abierta conPOST /conversation/status:
window.status (open o closed) y
window.hours_remaining, además del estado de asignación, buzón, tags e
inbox_status de la conversación. Úsalo para decidir entre un mensaje libre y
una plantilla.
Próximos pasos
Enviar mensajes
Texto, media, quick replies y plantillas.
Plantillas
Cómo enviar plantillas con la ventana de 24h cerrada.