Skip to content
Send messages

Send interactive lists

Interactive lists open a modal with up to 10 selectable rows grouped into labeled sections. Use them for menus, time-slot pickers, or short product catalogs where users pick exactly one item.

Terminal window
curl -X POST \
https://api.kirim.chat/v1/$PHONE_ID/messages \
-H "Authorization: Bearer $KIRIM_KEY" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "+628123456789",
"type": "interactive",
"interactive": {
"type": "list",
"body": { "text": "Pilih jadwal kunjungan:" },
"action": {
"button": "Lihat jadwal",
"sections": [
{
"title": "Hari ini",
"rows": [
{ "id": "slot_10", "title": "10:00 WIB" },
{ "id": "slot_14", "title": "14:00 WIB" }
]
},
{
"title": "Besok",
"rows": [
{ "id": "slot_t10", "title": "10:00 WIB", "description": "Sisa 2 slot" }
]
}
]
}
}
}'
FieldLimit
body.text1–1024 chars
header.text (optional, text-only)1–60 chars
footer.text (optional)1–60 chars
action.button1–20 chars
sections[].title≤ 24 chars
sections[].rows[].title1–24 chars
sections[].rows[].id1–200 chars
sections[].rows[].description (optional)≤ 72 chars
Total rows across all sections≤ 10

When a user taps a row WhatsApp delivers an inbound webhook with interactive.list_reply. The id you set above is echoed back so your handler can route on stable identifiers:

{
"interactive": {
"type": "list_reply",
"list_reply": { "id": "slot_10", "title": "10:00 WIB" }
}
}

See Receive messages for the full inbound webhook payload.