carousel.cards structure to Meta; it does not
translate per-card body, header, or button components.
This page covers approved template carousel messages. For free-form interactive
carousel messages sent inside the customer service window, use
client.messages.sendInteractiveCarousel(...) in the
interactive message SDK guide.
If a template was approved with 10 cards, sending 2 or 3 returns Meta error (#132012) with the misleading detail header component parameter should not be empty.
For variable result counts, create one approved template per supported count, such as flight_option_single, flight_options_carousel_v1_2, and flight_options_carousel_v1_3.
Send
Format rules
- Send-time component and parameter types are lowercase:
carousel,header,body,button,image,text, andpayload. card_indexis numeric and zero-based. In the TypeScript SDK helper, usecardIndex; it is converted tocard_indexon send.button.indexis numeric and zero-based.- Media card headers can use
image: { "link": "https://..." }orimage: { "id": "<MEDIA_ID>" }from a media upload. Do not useimage.url. - The runtime
cardsarray must have exactly the same length as the approved carousel template. - At template creation time, Meta component definitions use uppercase types such as
CAROUSEL,HEADER,BODY, andBUTTONS. The lowercase rules above are for sending messages.

