Mensajes
Enviar lista
Envía un menú interactivo con secciones y opciones seleccionables
POST
Enviar lista
Auth:
Envoltorio de error:
TokenAccount o TokenInstance • Rate-limit: Global (100/min) • Idempotente: no
Descripción
Envía una lista interactiva con hasta 10 secciones y 10 filas por sección (límite global de 100 filas entre todas las secciones). El destinatario toca el botón (buttonText) para abrir el menú y elegir una de las opciones, y WhatsApp retorna el id de la fila seleccionada como un mensaje de respuesta. Ideal para menús, catálogos cortos, FAQs guiadas y soporte estructurado.
Ejemplos
Lista simple (1 sección)
Un menú lean con una única sección “Dishes” y dos filas. El destinatario toca “See options” para abrir el menú y seleccionar una de las opciones, que regresa como una respuesta cargando elid (p1 o p2).
Menú multi-sección (categorías)
Una lista con múltiples categorías agrupadas en secciones. Cada sección se renderiza con su propio encabezado dentro del menú, separando visualmente los grupos.Lista con encabezado y pie
AgregaheaderText (título sobre el cuerpo) y footerText (texto en gris debajo del botón), útil para branding y disclaimers cortos.
Respuesta exitosa
Elcontent retornado es el contentText que enviaste, y messageType es fijo en list. Guarda el messageId para correlacionar con los eventos de selección que llegan vía webhook.
200 OK
Cuando el destinatario elige una opción, WhatsApp envía un mensaje de respuesta que contiene el
id de la fila seleccionada, captura esa respuesta vía webhook/websocket de eventos para continuar el flujo.Parámetros de ruta
Nombre de la instancia (p. ej.,
$Instance_Name).Cabeceras
TokenAccount o TokenInstance.application/jsonCuerpo de la solicitud
Destino: teléfono (
5511999999999) o JID (@s.whatsapp.net, @lid, @g.us, @newsletter).Cuerpo principal del mensaje (descripción). Aparece sobre el botón que abre la lista.
Texto del botón que abre la lista (p. ej.,
"See options", "Open menu"). Limitado por WhatsApp a unos pocos caracteres.Array de 1 a 10 secciones. El número total de filas entre todas las secciones no puede exceder 100.
Título mostrado sobre
contentText. Opcional.Texto en gris claro debajo del botón. Opcional, ideal para disclaimers cortos.
Tiempo en segundos a esperar antes de enviar. Durante el intervalo, el servidor envía el indicador “escribiendo…” al destinatario y dispara “pausado” antes del envío real.
ID del mensaje a citar (respuesta). El mensaje original debe pertenecer a la misma instancia y haber sido guardado en la base de datos.
Cuando es
true y replyTo apunta a un mensaje originado en un grupo, la respuesta se redirige al chat privado del autor original (manteniendo la cita).Identificador de origen para trazabilidad (p. ej.,
crm, bot-suporte, n8n). Guardado en el registro del mensaje en la base de datos y propagado a los webhooks.Notas
- Límites de WhatsApp: máximo de 10 secciones, 10 filas por sección y 100 filas en total. ¿Excediste? El servidor responde con
400antes de intentar enviar. - La fila seleccionada por el usuario regresa a través del evento de mensaje como una respuesta cargando el
idoriginal, captura esto vía webhook para mapear la elección. - Las listas funcionan bien en DMs, grupos y canales, pero la UX puede variar entre WhatsApp Business y WhatsApp personal.
descriptiones opcional por fila, pero mejora mucho la legibilidad cuando el título por sí solo es ambiguo.
Errores
| HTTP | Status interno | Mensaje |
|---|---|---|
| 400 | , | Instance name is required |
| 400 | , | Invalid request body: <detail> |
| 400 | , | Number is required |
| 400 | , | ContentText is required |
| 400 | , | ButtonText is required |
| 400 | , | At least one section is required |
| 400 | , | Maximum of 10 sections allowed |
| 400 | , | Section N: Title is required |
| 400 | , | Section N: At least one row is required |
| 400 | , | Section N: Maximum of 10 rows allowed |
| 400 | , | Section N, Row M: ID is required |
| 400 | , | Section N, Row M: Title is required |
| 400 | , | Total number of rows across all sections cannot exceed 100 |
| 400 | invalid_number | Invalid phone number format: <detail> |
| 404 | , | Instance not found |
| 500 | send_failed | Failed to send message: <reason> |
| 503 | disconnected | Instance is not connected to WhatsApp |