WaConnect|API Documentation Dashboard Swagger UI

Interactive Messages

Send messages with interactive elements such as quick-reply buttons and scrollable list menus. These provide a guided experience for your customers.

Reply Buttons

POST /api/messages/reply-buttons

Send a message with up to 3 quick-reply buttons. Each button has a unique ID and a title (max 20 characters).

FieldTypeRequiredDescription
tostringYesRecipient phone number with country code
bodyTextstringYesMain message body (max 1,024 chars)
buttonsarrayYesArray of 1-3 button objects
buttons[].idstringYesUnique button identifier (max 256 chars)
buttons[].titlestringYesButton label shown to user (max 20 chars)
headerTextstringNoHeader text (max 60 chars)
footerTextstringNoFooter text (max 60 chars)
phoneNumberIdstringNoSend from a specific number

Example

{
  "to": "15551234567",
  "headerText": "Appointment Confirmation",
  "bodyText": "Would you like to confirm your appointment for tomorrow at 2:00 PM?",
  "footerText": "Please select an option",
  "buttons": [
    { "id": "btn_yes", "title": "Yes, confirm" },
    { "id": "btn_no", "title": "No, cancel" },
    { "id": "btn_reschedule", "title": "Reschedule" }
  ]
}JSON

C# Example

var payload = new
{
    to = "15551234567",
    headerText = "Appointment Confirmation",
    bodyText = "Would you like to confirm your appointment?",
    footerText = "Please select an option",
    buttons = new[]
    {
        new { id = "btn_yes", title = "Yes, confirm" },
        new { id = "btn_no", title = "No, cancel" },
        new { id = "btn_reschedule", title = "Reschedule" }
    }
};

var json = JsonSerializer.Serialize(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync(
    "https://app.waconnect.me/api/messages/reply-buttons", content);C#

List Messages

POST /api/messages/list

Send a message with a scrollable list menu containing up to 10 items organized into sections. The user taps a button to open the list.

FieldTypeRequiredDescription
tostringYesRecipient phone number with country code
bodyTextstringYesMain message body
buttonTextstringYesText on the button that opens the list (max 20 chars)
sectionsarrayYesArray of section objects
sections[].titlestringYesSection heading
sections[].rowsarrayYesArray of row items in this section
sections[].rows[].idstringYesUnique row identifier
sections[].rows[].titlestringYesRow title (max 24 chars)
sections[].rows[].descriptionstringNoRow description (max 72 chars)
headerTextstringNoHeader text
footerTextstringNoFooter text
phoneNumberIdstringNoSend from a specific number

Example

{
  "to": "15551234567",
  "headerText": "Service Menu",
  "bodyText": "Please select a service from the menu below:",
  "buttonText": "View Services",
  "sections": [
    {
      "title": "Consulting",
      "rows": [
        { "id": "svc_1", "title": "Strategy", "description": "Business strategy session" },
        { "id": "svc_2", "title": "Technical", "description": "Architecture review" }
      ]
    },
    {
      "title": "Support",
      "rows": [
        { "id": "svc_3", "title": "General Help", "description": "Get help with any issue" },
        { "id": "svc_4", "title": "Billing", "description": "Payment and invoice questions" }
      ]
    }
  ]
}JSON

When a user selects a button or list item, their response is delivered to your webhook as an interactive message type containing the selected id and title.