Skip to main content

Carousel Messages

Carousel messages display multiple cards that recipients can scroll through horizontally. Each card can include a title, subtitle, image, and action buttons. They are ideal for showcasing products, plans, or options.

Required Scopes

ScopePurpose
messages:createSend carousel messages

Channel Support

ChannelSupportImplementation
WhatsAppYesTemplate-based carousels
MessengerYesGeneric template carousels
InstagramYesGeneric template carousels
TelegramNoNot supported
SMSNoNot supported
EmailNoNot supported
POST /api/v1/messages/send/carousel

Request Body

FieldTypeRequiredDescription
channel_idstringYesThe channel to send through
contact_idstringYesThe recipient contact
cardsarrayYesArray of carousel cards (2-10 cards)

Card object:

FieldTypeRequiredDescription
titlestringYesCard title
subtitlestringNoCard description
image_urlstringNoCard image URL
buttonsarrayNoCard action buttons (max 3 per card)

Button object:

FieldTypeRequiredDescription
typestringYesurl (opens a link) or postback (sends data back)
titlestringYesButton label
urlstringConditionalRequired when type is url
payloadstringConditionalRequired when type is postback

curl

curl -X POST "https://api.sendseven.com/api/v1/messages/send/carousel" \
-H "Authorization: Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00" \
-H "Content-Type: application/json" \
-d '{
"channel_id": "channel_msngr_001",
"contact_id": "contact_xyz789",
"cards": [
{
"title": "Wireless Headphones",
"subtitle": "Premium noise-cancelling - EUR 149",
"image_url": "https://shop.example.com/images/headphones.jpg",
"buttons": [
{"type": "url", "title": "View Product", "url": "https://shop.example.com/headphones"},
{"type": "postback", "title": "Add to Cart", "payload": "add_headphones"}
]
},
{
"title": "Bluetooth Speaker",
"subtitle": "Portable and waterproof - EUR 79",
"image_url": "https://shop.example.com/images/speaker.jpg",
"buttons": [
{"type": "url", "title": "View Product", "url": "https://shop.example.com/speaker"},
{"type": "postback", "title": "Add to Cart", "payload": "add_speaker"}
]
},
{
"title": "Smart Watch",
"subtitle": "Fitness tracking and notifications - EUR 249",
"image_url": "https://shop.example.com/images/watch.jpg",
"buttons": [
{"type": "url", "title": "View Product", "url": "https://shop.example.com/watch"},
{"type": "postback", "title": "Add to Cart", "payload": "add_watch"}
]
}
]
}'

Python

import requests

BASE_URL = "https://api.sendseven.com/api/v1"
HEADERS = {
"Authorization": "Bearer s7_api_a1b2c3d4e5f6789012345678abcdef00",
"Content-Type": "application/json",
}

response = requests.post(
f"{BASE_URL}/messages/send/carousel",
headers=HEADERS,
json={
"channel_id": "channel_msngr_001",
"contact_id": "contact_xyz789",
"cards": [
{
"title": "Basic Plan",
"subtitle": "Perfect for small teams. Starting at EUR 0/month.",
"image_url": "https://example.com/images/basic.jpg",
"buttons": [
{"type": "url", "title": "Learn More", "url": "https://example.com/basic"},
{"type": "postback", "title": "Choose Basic", "payload": "SELECT_BASIC"},
],
},
{
"title": "Scale Plan",
"subtitle": "For growing businesses. EUR 199/month minimum.",
"image_url": "https://example.com/images/scale.jpg",
"buttons": [
{"type": "url", "title": "Learn More", "url": "https://example.com/scale"},
{"type": "postback", "title": "Choose Scale", "payload": "SELECT_SCALE"},
],
},
],
},
)
print(response.json())

Response

{
"id": "msg_car_001",
"conversation_id": "conv_def456",
"contact_id": "contact_xyz789",
"channel_id": "channel_msngr_001",
"type": "carousel",
"card_count": 3,
"status": "sent",
"created_at": "2026-02-10T17:10:00Z"
}
warning

WhatsApp carousels use template-based carousels, which require an approved template. Messenger and Instagram use generic templates that can be sent freely within an active conversation.

Error Responses

StatusError CodeDescription
400VALIDATION_ERRORInvalid card data or unsupported on this channel
401INVALID_TOKENMissing or invalid authentication token
403INSUFFICIENT_SCOPEToken lacks required scope
404RESOURCE_NOT_FOUNDChannel or contact not found

Next Steps