Send an interactive message▾
Send an interactive message
Reply buttons, list pickers and call-to-action URL buttons.
Interactive messages need an open session window, same as text. A tap arrives back on your webhook as a message.received event with interactive.button_reply or interactive.list_reply.
/v1/messagesBody parameters
tostringrequiredRecipient in E.164 format.
typeenumrequiredSet to interactive.
interactive
interactiveobjectrequiredThe interactive payload.
typeenumrequiredInteraction style.
buttonlistcta_url
headerobjectOptional text, image, video or document header.
bodyobjectrequired{ "text": "…" }, up to 1024 characters.
footerobject{ "text": "…" }, up to 60 characters.
actionobjectrequiredUp to 3 reply buttons, or up to 10 list rows across 10 sections.
curl -X POST https://api.sendport.tech/v1/messages \
-H "Authorization: Bearer $SENDPORT_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+201005550123","type":"interactive","interactive":{"type":"button","body":{"text":"Did this solve your problem?"},"action":{"buttons":[{"type":"reply","reply":{"id":"yes","title":"Yes"}},{"type":"reply","reply":{"id":"no","title":"No"}}]}}}'Responses
202Accepted
{
"object": "message",
"id": "msg_01JZQ3F8X2K7N4B6Y0R9M5TCWA",
"wamid": "wamid.SEJnTTIwMTAwNTU1MDEyM0ZRSUFFUmdT",
"conversation_id": "conv_01JZQ3F8X0QG7T2S4N8V1PZAKD",
"from": "+15550100200",
"to": "+201005550123",
"direction": "outbound",
"type": "interactive",
"template": { "name": "order_shipped", "language": "en", "category": "UTILITY" },
"status": "accepted",
"pricing": { "category": "utility", "billable": true, "amount": "0.0286", "currency": "USD" },
"created_at": "2026-09-06T09:14:22.114Z"
}401Unauthorized
{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No API key provided.",
"doc_url": "https://sendport.tech/docs/errors#missing_api_key",
"request_id": "req_9f3c2a7b41de08c5b2e6"
}
}Try itsandbox