Carousel Template — With Dynamic CTA
Send a carousel template — a swipeable strip of cards. Each card can have its own image header, body variable values, and a dynamic CTA URL. Carousels are great for product recommendations, multi-deal promotions, or anything where one message body needs to introduce many actionable items.
Endpoint
POST https://apis.splashifypro.com/api/v1/public/messageHeaders
| Header | Value |
|---|---|
Authorization | Basic YOUR_API_KEY |
Content-Type | application/json |
Request body
{
"phoneNumber": "9999999999",
"callbackData": "carousel_promo",
"type": "Template",
"template": {
"name": "template_name_here",
"languageCode": "en",
"bodyValues": [
"body_variable_value_1",
"body_variable_value_2"
],
"carouselCards": [
{
"headerValues": ["media_url_here"],
"bodyValues": ["body_variable_value_1"],
"buttonValues": { "1": ["button_variable_value_1"] }
},
{
"headerValues": ["media_url_here"],
"bodyValues": ["body_variable_value_1"],
"buttonValues": { "1": ["button_variable_value_1"] }
}
]
}
}| Field | Required | Notes |
|---|---|---|
template.bodyValues | yes (when intro body has variables) | The body shown above the carousel |
template.carouselCards | yes | 2–10 cards. Each card mirrors the per-card structure of an approved template |
carouselCards[].headerValues | optional | Single-element array — image / video URL for that card |
carouselCards[].bodyValues | optional | One entry per body variable on the card |
carouselCards[].buttonValues | optional | Map of {button_index: [variable_value]} — same shape as Dynamic CTA |
Example
curl -X POST https://apis.splashifypro.com/api/v1/public/message \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "9999999999",
"callbackData": "some text here",
"type": "Template",
"template": {
"name": "template_name_here",
"languageCode": "en",
"bodyValues": ["body_variable_value_1", "body_variable_value_2"],
"carouselCards": [
{
"headerValues": ["media_url_here"],
"bodyValues": ["body_variable_value_1"],
"buttonValues": { "1": ["button_variable_value_1"] }
},
{
"headerValues": ["media_url_here"],
"bodyValues": ["body_variable_value_1"],
"buttonValues": { "1": ["button_variable_value_1"] }
}
]
}
}'Successful response — 201 Created
{
"result": true,
"message": "Message created successfully",
"id": "b90f02bd-1316-49ce-b5d0-f6be14fce2b8"
}Tips
- All cards share the same template definition. You can’t mix image headers and video headers in the same carousel — the template defines a single header type that every card inherits.
- Card count must match the template’s approved card count. If the template was approved with 4 cards, you must pass exactly 4 entries in
carouselCards. - Use Without Dynamic CTA when the buttons are static (e.g. a fixed
View on websiteURL with no per-card variable).