Interactive Messages
1. Call to action url
Interactive message (cta_url) with a single tappable button that opens an external URL.
Method: POST
Endpoint: https://apis.rmlconnect.net/wba/v1/tsp/messages
Sample request body:
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "{{phone_no}}",
"type": "interactive",
"interactive": {
"type": "cta_url",
"header": {
"type": "text",
"text": "Available Dates"
},
"body": {
"text": "Tap the button below to see available dates."
},
"footer": {
"text": "Dates subject to change."
},
"action": {
"name": "cta_url",
"parameters": {
"display_text": "See Dates",
"url": "https://www.luckyshrub.com?clickID=kqDGWd24Q5TRwoEQTICY7W1JKoXvaZOXWAS7h1P76s0R7Paec4"
}
}
}
}Notes:
Header type text is used here; image/video/document headers are also supported per WhatsApp interactive spec.
2. Interactive list
Interactive list message: a button that opens a picker of sectioned, selectable rows.
Method: POST
Endpoint: https://apis.rmlconnect.net/wba/v1/tsp/messages
Sample request body:
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "{{phone_no}}",
"type": "interactive",
"interactive": {
"type": "list",
"header": {
"type": "text",
"text": "Choose Shipping Option"
},
"body": {
"text": "Which shipping option do you prefer?"
},
"footer": {
"text": "Lucky Shrub: Your gateway to succulents™"
},
"action": {
"button": "Shipping Options",
"sections": [
{
"title": "I want it ASAP!",
"rows": [
{
"id": "priority_express",
"title": "Priority Mail Express",
"description": "Next Day to 2 Days"
},
{
"id": "priority_mail",
"title": "Priority Mail",
"description": "1–3 Days"
}
]
},
{
"title": "I can wait a bit",
"rows": [
{
"id": "usps_ground_advantage",
"title": "USPS Ground Advantage",
"description": "2–5 Days"
},
{
"id": "media_mail",
"title": "Media Mail",
"description": "2–8 Days"
}
]
}
]
}
}
}Notes:
Max 10 rows total across all sections (WhatsApp platform limit — not enforced by this sample).
3. Interactive reply
Interactive reply-button message: up to 3 quick-reply buttons under a body/header/footer.
Method: POST
Endpoint: https://apis.rmlconnect.net/wba/v1/tsp/messages
Sample request body:
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "{{phone_no}}",
"type": "interactive",
"interactive": {
"type": "button",
"header": {
"type": "image",
"image": {
"link": "https://www.gstatic.com/webp/gallery/1.jpg"
}
},
"body": {
"text": "Hi Pablo! Your gardening workshop is scheduled for 9am tomorrow. Use the buttons if you need to reschedule. Thank you!"
},
"footer": {
"text": "Lucky Shrub: Your gateway to succulents!™"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "change-button",
"title": "Change"
}
},
{
"type": "reply",
"reply": {
"id": "cancel-button",
"title": "Cancel"
}
}
]
}
}
}Notes:
Max 3 buttons (WhatsApp platform limit).
4. Interactive location request message
Interactive message that prompts the recipient to share their live location.
Method: POST
Endpoint: https://apis.rmlconnect.net/wba/v1/tsp/messages
Sample request body:
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"type": "interactive",
"to": "{{phone_no}}",
"interactive": {
"type": "location_request_message",
"body": {
"text": "hellooooooo"
},
"action": {
"name": "send_location"
}
}
}Notes:
The action.name must be set to send_location, as this type does not support headers or footers.
Updated 10 days ago