# List Messages

> Send WhatsApp interactive list messages with up to 10 sections. Let users pick from menus, products or services in a single tap.

List messages present a menu with sections and options, perfect for support menus or product selection.

## Send a List Message

```typescript
const message = await zavu.messages.send({
  to: "+14155551234",
  text: "Choose a support topic:",
  channel: "whatsapp",
  messageType: "list",
  content: {
    listButton: "View Options",
    sections: [
      {
        title: "Account",
        rows: [
          { id: "password", title: "Reset Password", description: "Change or reset your password" },
          { id: "billing", title: "Billing Issue", description: "Questions about charges" }
        ]
      },
      {
        title: "Orders",
        rows: [
          { id: "track", title: "Track Order", description: "Check delivery status" },
          { id: "return", title: "Return Item", description: "Start a return request" }
        ]
      }
    ]
  }
});
```

```bash
curl -X POST https://api.zavu.dev/v1/messages \
  -H "Authorization: Bearer zv_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155551234",
    "text": "Choose a support topic:",
    "channel": "whatsapp",
    "messageType": "list",
    "content": {
      "listButton": "View Options",
      "sections": [
        {
          "title": "Account",
          "rows": [
            { "id": "password", "title": "Reset Password", "description": "Change or reset your password" },
            { "id": "billing", "title": "Billing Issue", "description": "Questions about charges" }
          ]
        },
        {
          "title": "Orders",
          "rows": [
            { "id": "track", "title": "Track Order", "description": "Check delivery status" },
            { "id": "return", "title": "Return Item", "description": "Start a return request" }
          ]
        }
      ]
    }
  }'
```

## Specifications

| Property | Requirement |
|----------|-------------|
| Max sections | 10 |
| Max rows per section | 10 |
| Section title | Max 24 chars |
| Row ID | Max 200 chars, unique per message |
| Row title | Max 24 chars |
| Row description | Optional, max 72 chars |
| List button (`listButton`) | Required, max 20 chars |
| Body text (`text`) | Required |

## Handling List Responses

When a user selects an option, you receive a webhook:

```json
{
  "event": "message.received",
  "data": {
    "from": "+14155551234",
    "type": "list_reply",
    "list": {
      "id": "track",
      "title": "Track Order",
      "description": "Check delivery status"
    }
  }
}
```

## Use Cases

- Support menus
- Product categories
- Service selection
- FAQ navigation
- Multi-step workflows
