Skip to main content
Los dos endpoints de WhatsApp son de solo lectura: permiten listar conversaciones con sus transcripciones y entrar al historial completo de una conversación — para reportes, revisión de calidad o para guardar una copia en tu CRM.
  • List WhatsApp conversationsGET /api/v2/public/whatsapp/conversations
  • List messages in a WhatsApp conversationGET /api/v2/public/whatsapp/conversations/{session_id}/messages
Las páginas de cada endpoint documentan todos los parámetros y campos; esta guía trata de cómo usarlos bien.

Conceptos

  • Una conversación (una sesión) es una ventana de conversación de WhatsApp acotada con un único número de cliente. Un cliente acumula varias conversaciones con el tiempo, a medida que las ventanas se abren y se cierran.
  • Cada conversación pertenece a un cliente (cuando el número coincide con un contacto) y contiene una lista ordenada de mensajes.
  • Las conversaciones tienen un estado (new, ai_handling, human_handling, resolved, expired), una dirección (inbound / outbound), una etiqueta de disposición opcional y un sentimiento opcional.

Quién envió qué

Tres campos responden a tres preguntas distintas; no los confundas: Una misma conversación suele mezclar varias personas y uno o más agentes de IA (un bot abre, una persona toma el control, otra cierra), y por eso participants existe aparte de assigned_users. participants siempre está completo: cubre toda la conversación aunque pidas include_messages=false o la transcripción venga recortada. Solo aparecen remitentes identificados; los mensajes sincronizados desde la app de WhatsApp Business no tienen remitente atribuible y no aportan ninguna entrada.

Solicitudes habituales

La forma más rápida de ver qué hay. participants viene completo igualmente.

Sincronización incremental

No vuelvas a descargar todo en cada ejecución:
1

Guarda el updated_at más reciente que hayas visto

Cada conversación trae updated_at, que avanza cuando llega un mensaje o cambian el estado, la disposición o el resumen.
2

Pide solo lo que cambió

En la siguiente ejecución envía esa marca como updated_after y ordena con sort_by=updated_at para un orden predecible:
3

Recorre las páginas

Mantén los mismos filtros y aumenta offset en limit hasta leer count elementos.

Conversaciones largas

Cada conversación incluye como máximo max_messages_per_session mensajes (500 por defecto, los más antiguos primero). Una transcripción más larga se recorta y se marca con has_more_messages: true: pide el resto con el endpoint de mensajes, paginando con limit / offset:
El endpoint de mensajes también devuelve el participants completo de la conversación, así que nunca necesitas una segunda llamada al listado solo para eso.

Conversación de ejemplo

Notas y límites

  • Solo lectura. Estos endpoints nunca modifican conversaciones.
  • Los archivos multimedia no se descargan: solo se devuelven kind, mime, filename y caption.
  • Los campos internos (modelo, tokens, costo, claves de almacenamiento) nunca se exponen.
  • Cambios aditivos. Pueden añadirse campos nuevos (sender y participants llegaron así, junto a un sender_type sin cambios). Ignora los campos que no reconozcas.
  • Hoy no se aplica límite de solicitudes; pagina con limit ≤ 50 en lugar de pedir cargas máximas en bucle.