Skip to content

Interactive messages

Interactive messages show tappable choices. They can be sent inside the 24-hour window. Set type to interactive and pass an interactive object in Meta’s format.

Up to 3 buttons; titles up to 20 characters; ids unique, up to 256 characters.

Terminal window
curl https://login.meapi.in/api/v1/messages \
-H "Authorization: Bearer $MEAPI_KEY" -H "Content-Type: application/json" \
-d '{
"to": "+919812345678",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Your order #10245 is ready. When should we deliver?" },
"footer": { "text": "Radha Fashions" },
"action": { "buttons": [
{ "type": "reply", "reply": { "id": "deliver_today", "title": "Today" } },
{ "type": "reply", "reply": { "id": "deliver_tomorrow", "title": "Tomorrow" } },
{ "type": "reply", "reply": { "id": "call_me", "title": "Call me" } }
] }
}
}'

An optional header can be text ({ "type": "text", "text": "…" }, up to 60 characters) or media ({ "type": "image", "image": { "link": "https://…" } }).

Up to 10 rows in total across up to 10 sections. action.button is the label of the button that opens the list (max 20 characters). Row titles max 24 characters, descriptions max 72. With more than one section, each needs a title.

{
"to": "+919812345678",
"type": "interactive",
"interactive": {
"type": "list",
"body": { "text": "What are you shopping for today?" },
"action": {
"button": "Categories",
"sections": [
{ "title": "Clothing", "rows": [
{ "id": "men", "title": "Men", "description": "Shirts, kurtas, jeans" },
{ "id": "women", "title": "Women", "description": "Sarees, kurtis, dresses" }
] },
{ "title": "Other", "rows": [ { "id": "kids", "title": "Kids" } ] }
]
}
}
}

A body that breaks these limits returns 400 BAD_INTERACTIVE with the exact problem.

When the customer taps a button or a row, you receive a message.received webhook. Its message.type is interactive and message.reply holds the choice — { "id": "deliver_today", "title": "Today" } — so you can branch on the id you set. Quick-reply buttons on templates arrive as type button with the button’s payload as reply.id. The reply also appears in the panel’s inbox.

© 2026 MeAPI by TheWebStore028 · RADHAMADHAV WEBSTORE LLP · GSTIN 27ABJFR6148J1ZO · Contact us ·Cookie settings