Skip to main content
POST
Send List
Auth: TokenAccount or TokenInstanceRate-limit: Global (100/min) • Idempotent: no

Description

Sends an interactive list with up to 10 sections and 10 rows per section (overall limit of 100 rows across all sections). The recipient taps the button (buttonText) to open the menu and pick one of the options, and WhatsApp returns the id of the selected row as a reply message. Ideal for menus, short catalogs, guided FAQs and structured support.

Examples

Simple list (1 section)

A lean menu with a single “Dishes” section and two rows. The recipient taps “See options” to open the menu and select one of the options, which comes back as a reply carrying the id (p1 or p2).

Multi-section menu (categories)

A list with multiple categories grouped into sections. Each section is rendered with its own header inside the menu, visually separating the groups.
Adds headerText (title above the body) and footerText (text in gray below the button), useful for branding and short disclaimers.

Success response

The returned content is the contentText you sent, and messageType is fixed at list. Store the messageId to correlate with the selection events that arrive via webhook.
200 OK
When the recipient picks an option, WhatsApp sends a reply message containing the id of the selected row, capture that response via webhook/websocket of events to continue the flow.

Path parameters

string
required
Instance name (e.g., $Instance_Name).

Headers

string
required
TokenAccount or TokenInstance.
string
required
application/json

Request body

string
required
Destination: phone (5511999999999) or JID (@s.whatsapp.net, @lid, @g.us, @newsletter).
string
required
Main body of the message (description). Appears above the button that opens the list.
string
required
Text of the button that opens the list (e.g., "See options", "Open menu"). Limited by WhatsApp to a few characters.
ListSection[]
required
Array of 1 to 10 sections. The total number of rows across all sections cannot exceed 100.
string
Title displayed above contentText. Optional.
Light gray text below the button. Optional, ideal for short disclaimers.
int
default:"0"
Time in seconds to wait before sending. During the interval, the server sends the “typing…” indicator to the recipient and fires “paused” before the actual send.
string
ID of the message to be quoted (reply). The original message must belong to the same instance and have been saved in the database.
boolean
default:"false"
When true and replyTo points to a message originating from a group, the reply is redirected to the original author’s private chat (keeping the quote).
string
default:"api"
Origin identifier for traceability (e.g., crm, bot-suporte, n8n). Saved on the message record in the database and propagated to webhooks.

Notes

  • WhatsApp limits: maximum of 10 sections, 10 rows per section and 100 rows in total. Exceeded? The server responds with 400 before attempting to send.
  • The row selected by the user is returned through the message event as a reply carrying the original id, capture this via webhook to map the choice.
  • Lists work well in DMs, groups and channels, but the UX may vary between WhatsApp Business and personal WhatsApp.
  • description is optional per row, but greatly improves readability when the title alone is ambiguous.

Errors

Error envelope: