> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowapt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Interactive List

> Send an interactive list message with sections and selectable rows.

## Basic Usage

```bash theme={null}
curl -X POST "https://api.flowiq.live/send-whatsapp" \
  -H "Authorization: Bearer fiq_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+27123456789",
    "message_type": "interactive",
    "interactive": {
      "type": "list",
      "header": "Our Menu",
      "body": "Please select from our available options:",
      "footer": "Tap the button below to view options",
      "button": "View Menu",
      "sections": [
        {
          "title": "Main Dishes",
          "rows": [
            { "id": "burger", "title": "Burger", "description": "Beef patty with cheese" },
            { "id": "pizza", "title": "Pizza", "description": "Margherita or Pepperoni" }
          ]
        },
        {
          "title": "Drinks",
          "rows": [
            { "id": "cola", "title": "Cola", "description": "500ml bottle" },
            { "id": "water", "title": "Water", "description": "Still or sparkling" }
          ]
        }
      ]
    }
  }'
```

***

## Request Body

| Field                                       | Type   | Required | Description                              |
| ------------------------------------------- | ------ | -------- | ---------------------------------------- |
| `phone_number`                              | string | Yes      | Recipient phone number with country code |
| `message_type`                              | string | Yes      | Must be `"interactive"`                  |
| `interactive.type`                          | string | Yes      | Must be `"list"`                         |
| `interactive.body`                          | string | Yes      | Main message text (max 1024 chars)       |
| `interactive.button`                        | string | Yes      | Menu button label (max 20 chars)         |
| `interactive.header`                        | string | No       | Header text (max 60 chars)               |
| `interactive.footer`                        | string | No       | Footer text (max 60 chars)               |
| `interactive.sections`                      | array  | Yes      | Array of sections — max 10               |
| `interactive.sections[].title`              | string | No       | Section heading (max 24 chars)           |
| `interactive.sections[].rows`               | array  | Yes      | Rows within the section                  |
| `interactive.sections[].rows[].id`          | string | Yes      | Unique row ID returned on selection      |
| `interactive.sections[].rows[].title`       | string | Yes      | Row label (max 24 chars)                 |
| `interactive.sections[].rows[].description` | string | No       | Row description (max 72 chars)           |
| `context_message_id`                        | string | No       | WhatsApp message ID to reply to          |

<Tip>
  Supports up to 10 sections with up to 10 rows each. Use lists when you have
  more than 3 options — buttons max out at 3.
</Tip>

```json theme={null}
{
  "phone_number": "+27123456789",
  "message_type": "interactive",
  "interactive": {
    "type": "list",
    "body": "Please select a support category:",
    "button": "View Options",
    "sections": [
      {
        "title": "Support",
        "rows": [
          { "id": "billing", "title": "Billing", "description": "Payment and invoice queries" },
          { "id": "technical", "title": "Technical", "description": "App or integration issues" }
        ]
      }
    ]
  }
}
```

***

## Response

### Success (200)

```json theme={null}
{
  "success": true,
  "message": "Message sent successfully",
  "data": {
    "message_id": "wamid.HBgLMjc4MTIzNDU2NzgVAgASGBQzRUI...",
    "recipient": "27123456789",
    "message_type": "interactive"
  }
}
```

### Error: Missing Required Field (400)

```json theme={null}
{
  "error": "Missing required field",
  "message": "interactive.body, interactive.button, and interactive.sections are required for list messages"
}
```

***

## Integration Example

```javascript theme={null}
async function sendInteractiveList(apiKey, phoneNumber, interactive) {
  const response = await fetch(
    `https://api.flowiq.live/send-whatsapp`,
    {
      method: "POST",
      headers: {
        Authorization: `Bearer ${apiKey}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ phone_number: phoneNumber, message_type: "interactive", interactive }),
    }
  );
  const data = await response.json();
  if (!response.ok) throw new Error(data.message);
  return data;
}
```


## OpenAPI

````yaml flowiq-api-reference/openapi-send-interactive-list.json POST /send-whatsapp
openapi: 3.1.0
info:
  title: FlowIQ - Send Interactive List
  version: 1.0.0
servers:
  - url: https://api.flowiq.live
    description: FlowIQ Production API
security:
  - BearerAuth: []
paths:
  /send-whatsapp:
    post:
      tags:
        - Endpoints
      summary: Send Interactive List
      description: Send an interactive list message with sections and selectable rows.
      operationId: sendInteractiveList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_number:
                  type: string
                  description: Recipient phone number with country code
                  example: '+27123456789'
                message_type:
                  type: string
                  enum:
                    - interactive
                  description: Must be "interactive"
                  example: interactive
                interactive:
                  type: object
                  description: Interactive list message configuration
                  properties:
                    type:
                      type: string
                      enum:
                        - list
                      description: Must be "list"
                    body:
                      type: string
                      description: Main message body text (max 1024 chars)
                    header:
                      type: string
                      description: Header text (max 60 chars)
                    footer:
                      type: string
                      description: Footer text (max 60 chars)
                    button:
                      type: string
                      description: Menu button text (max 20 chars)
                    sections:
                      type: array
                      description: Array of sections (max 10)
                      items:
                        type: object
                        properties:
                          title:
                            type: string
                            description: Section title (max 24 chars)
                          rows:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  description: Row identifier
                                title:
                                  type: string
                                  description: Row title (max 24 chars)
                                description:
                                  type: string
                                  description: Row description (max 72 chars)
                  required:
                    - type
                    - body
                    - button
                    - sections
                context_message_id:
                  type: string
                  description: WhatsApp message ID to reply to
                  example: wamid.HBgLMjc4MTIzNDU2NzgVAgASGBQzRUI...
              required:
                - phone_number
                - message_type
                - interactive
      responses:
        '200':
          description: Message sent successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Message sent successfully
                  data:
                    type: object
                    properties:
                      message_id:
                        type: string
                        example: wamid.HBgLMjc4MTIzNDU2NzgVAgASGBQzRUI...
                      recipient:
                        type: string
                        example: '27123456789'
                      message_type:
                        type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Bearer token for authentication. Format: `Bearer YOUR_BEARER_TOKEN`'
      bearerFormat: JWT

````