Skip to content
Send messages

Send interactive buttons

Kirimdev exposes WhatsApp’s interactive button surface as type: "interactive" with one of four nested subtypes: cta_url (this page), reply_buttons (Send reply buttons), list (Send lists), and carousel (a horizontally scrollable strip of cards — see the API reference for the full schema).

A CTA URL button replaces a raw URL in the message body with a labelled tap target — better click-through and no exposed link. For in-conversation choices (Confirm / Cancel / etc.) that route back to your webhook instead of opening a browser, use reply buttons instead.

Terminal window
curl -X POST \
https://api.kirimdev.com/v1/$PHONE_ID/messages \
-H "Authorization: Bearer $KIRIM_KEY" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "+628123456789",
"type": "interactive",
"interactive": {
"type": "cta_url",
"body": { "text": "Pesananmu siap diambil." },
"action": {
"name": "cta_url",
"parameters": {
"display_text": "Lihat detail",
"url": "https://example.com/orders/42"
}
}
}
}'

Add a header (text / image / video / document) and/or a short footer line to give the button context. Mirrors Meta’s interactive CTA URL message shape 1:1.

Terminal window
curl -X POST \
https://api.kirimdev.com/v1/$PHONE_ID/messages \
-H "Authorization: Bearer $KIRIM_KEY" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "+628123456789",
"type": "interactive",
"interactive": {
"type": "cta_url",
"header": {
"type": "image",
"image": { "link": "https://cdn.example.com/order-banner.png" }
},
"body": { "text": "Pesananmu siap diambil." },
"footer": { "text": "Pickup sebelum 20:00 WIB" },
"action": {
"name": "cta_url",
"parameters": {
"display_text": "Lihat detail",
"url": "https://example.com/orders/42"
}
}
}
}'

Header variants:

header.typeExtra fieldNotes
texttext (≤60 chars)Bold headline above the body
imageimage.link (public HTTPS URL)Rendered inline above the body
videovideo.link (public HTTPS URL)Inline playable preview
documentdocument.link (public HTTPS URL)Inline attachment tile
FieldLimit
header.text1–60 chars (text header only)
body.text1–1024 chars
footer.text1–60 chars
parameters.display_text1–20 chars
parameters.urlValid HTTPS URL