Sending Interactive Lists
🔒 WhatsApp 24-Hour Session Rule
Before sending interactive lists, make sure the WhatsApp session with the user is active.
If the user has not messaged your business within the last 24 hours, WhatsApp requires the first message to be a template message.
After the customer replies, the 24-hour session opens and you may send interactive lists using this API. For sandbox testing, send your join code to the sandbox number to activate your session. Learn more
WhatsApp offers an API to send lists.

POST https://gateway.lipachat.com/api/v1/whatsapp/interactive/list
Headers
Content-Type
application/json
apiKey
Get apiKey from App portal settings tabhttps://app.lipachat.com/app/settings
Body
messageId
string
A unique identifier for the message. This will be used to track the message status and for deduplication purposes.
message
string
The message being sent.
from
string
Sandbox number +254110090747 or your own WABA phone number.
to
string
Receiver phone number. It should start with a country code.
buttons[0].sectionTitle
string
buttons[0].sectionItems[0].id
string
Unique identifier of button in your app. eg 1 or YES_BTN
buttons[0].sectionItems[0].title
string
Text to be displayed to user.
buttons[0].sectionItems[0].description
string
Optional description
curl --location 'https://gateway.lipachat.com/api/v1/whatsapp/interactive/list' \
--header 'apiKey: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"headerText": "Welcome to Lipachat",
"body": "Please choose a product you would like below",
"buttonText": "Click Here",
"buttons": [
{
"sectionTitle": "Airtime",
"sectionItems": [
{
"id": "SAFARICOM_AIRTIME",
"title": "Safaricom",
"description": "mpesa network"
},
{
"id": "AIRTEL_AIRTIME",
"title": "Airtel",
"description": "airtel money"
}
]
},
{
"sectionTitle": "Bill Payment",
"sectionItems": [
{
"id": "KPLC",
"title": "KPLC",
"description": "electricity"
},
{
"id": "NAIROBI_WATER",
"title": "Nairobi Water",
"description": "county gov water"
}
]
}
],
"messageId": "ca739107-4b0d-4581-acb1-4c4af70555de",
"to": "2547XXXX",
"from": "254110090747"
}'// Create an instance of OkHttpClient
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
// Define the media type for the request
MediaType mediaType = MediaType.parse("application/json");
// Create the request body with the necessary JSON payload using a text block
RequestBody body = RequestBody.create(mediaType, """
{
"headerText": "Welcome to Lipachat",
"body": "Please choose a product you would like below",
"buttonText": "Click Here",
"buttons": [
{
"sectionTitle": "Airtime",
"sectionItems": [
{
"id": "SAFARICOM_AIRTIME",
"title": "Safaricom",
"description": "mpesa network"
},
{
"id": "AIRTEL_AIRTIME",
"title": "Airtel",
"description": "airtel money"
}
]
},
{
"sectionTitle": "Bill Payment",
"sectionItems": [
{
"id": "KPLC",
"title": "KPLC",
"description": "electricity"
},
{
"id": "NAIROBI_WATER",
"title": "Nairobi Water",
"description": "county gov water"
}
]
}
],
"messageId": "ca739107-4b0d-4581-acb1-4c4af70555de",
"to": "254XXXXX",
"from": "254110090747"
}
""");
// Build the request with the required headers
Request request = new Request.Builder()
.url("https://gateway.lipachat.com/api/v1/whatsapp/interactive/list")
.method("POST", body)
.addHeader("apiKey", "YOUR_API_KEY")
.addHeader("Content-Type", "application/json")
.build();
// Execute the request and get the response
Response response = client.newCall(request).execute();
const axios = require('axios');
let data = JSON.stringify({
"headerText": "Welcome to Lipachat",
"body": "Please choose a product you would like below",
"buttonText": "Click Here",
"buttons": [
{
"sectionTitle": "Airtime",
"sectionItems": [
{
"id": "SAFARICOM_AIRTIME",
"title": "Safaricom",
"description": "mpesa network"
},
{
"id": "AIRTEL_AIRTIME",
"title": "Airtel",
"description": "airtel money"
}
]
},
{
"sectionTitle": "Bill Payment",
"sectionItems": [
{
"id": "KPLC",
"title": "KPLC",
"description": "electricity"
},
{
"id": "NAIROBI_WATER",
"title": "Nairobi Water",
"description": "county gov water"
}
]
}
],
"messageId": "ca739107-4b0d-4581-acb1-4c4af70555de",
"to": "254XXXXX",
"from": "254110090747"
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://gateway.lipachat.com/api/v1/whatsapp/interactive/list',
headers: {
'apiKey': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Response
{
"timestamp": "2023-08-06T01:27:56.825898971",
"data": {
"messageId": "7addc006-07db-4fae-aac5-b285903b41d4",
"waId": "wamid.HBgMMjU0NzE3NzQ2NTY1FQIAEnRgSRjJGRkMzNkQ0QUVENTIxQ0NBAA==",
"status": "SENT",
"statusDesc": "Message sent successfully"
},
"status": "success",
"message": "",
"errors": null
}{
"timestamp": "2023-08-06T17:50:35.701+00:00",
"status": 400,
"error": "Bad Request",
"path": "/api/v1/whatsapp/message/text"
}{
"timestamp": "2023-08-06T20:49:48.455464058",
"data": null,
"status": "success",
"message": "Invalid credentials",
"errors": null
}Last updated