Skip to Content
Public APICarousel — Dynamic CTA

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/message

Headers

HeaderValue
AuthorizationBasic YOUR_API_KEY
Content-Typeapplication/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"] } } ] } }
FieldRequiredNotes
template.bodyValuesyes (when intro body has variables)The body shown above the carousel
template.carouselCardsyes2–10 cards. Each card mirrors the per-card structure of an approved template
carouselCards[].headerValuesoptionalSingle-element array — image / video URL for that card
carouselCards[].bodyValuesoptionalOne entry per body variable on the card
carouselCards[].buttonValuesoptionalMap 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 website URL with no per-card variable).