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.
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" } ] } ] } } }'import { Kirim } from '@kirimdev/sdk'
const kirim = new Kirim({ apiKey: process.env.KIRIM_KEY! })const phone = kirim.phoneNumbers(process.env.PHONE_ID!)
await phone.messages.send({ 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' }, ], }, ], }, },})Limits
Section titled “Limits”| Field | Limit |
|---|---|
body.text | 1–1024 chars |
header.text (optional, text-only) | 1–60 chars |
footer.text (optional) | 1–60 chars |
action.button | 1–20 chars |
sections[].title | ≤ 24 chars |
sections[].rows[].title | 1–24 chars |
sections[].rows[].id | 1–200 chars |
sections[].rows[].description (optional) | ≤ 72 chars |
| Total rows across all sections | ≤ 10 |
Handling replies
Section titled “Handling replies”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.
See also
Section titled “See also”- Send interactive buttons
- API Reference — Send a WhatsApp message (see the Interactive request-body tab)
- Webhook events — inbound interactive replies