Skip to main content
POST
Enviar Carrossel
Auth: TokenAccount ou TokenInstanceRate-limit: Global (100/min) • Idempotente: não

Descrição

Envia uma mensagem com carrossel de cards deslizáveis. Cada card tem header (título obrigatório, com mídia opcional via imageUrl ou videoUrl), body.text (obrigatório), footer opcional e até alguns botões interativos. Os botões aceitam quatro tipos: REPLY (padrão, retorna o ID quando clicado), URL (abre link), CALL (disca número) e COPY (copia código). É possível adicionar message (texto antes do carrossel) e footer (texto abaixo). Suporta delay, replyTo e replyPrivate.

Exemplos

Carrossel simples com botões REPLY

Dois cards apenas com texto e botões de resposta rápida.

Carrossel com header de imagem e botões URL

imageUrl no header e botões do tipo URL (o id recebe a URL a abrir).

Carrossel com header de vídeo

videoUrl substitui imageUrl no header. Use um dos dois, não os dois.

Resposta de sucesso

O messageType retornado é interactive (carrossel é uma variação de mensagem interativa do WhatsApp), e o content traz uma descrição agregada ("<message> - Carousel with N card(s)") usada pelo histórico. Os cards individuais não vêm na resposta, guarde o messageId para correlacionar com cliques via webhook.
200 OK
Quando o usuário toca em um botão REPLY, a resposta chega no webhook com message.type igual a template_button_reply e o id do botão clicado em message.content (e também em message.interactive.selectedButtonId). Capture isso pelo webhook para encadear o fluxo. Em carrosséis, message.interactive.selectedCarouselCardIndex indica qual card foi tocado.

Parâmetros de rota

string
obrigatório
Nome da instância (ex.: $Instance_Name).

Headers

string
obrigatório
TokenAccount ou TokenInstance.
string
obrigatório
application/json

Request body

string
obrigatório
Destino: telefone (5511999999999) ou JID (@s.whatsapp.net, @lid, @g.us, @newsletter).
string
Texto exibido acima do carrossel (opcional).
Texto exibido abaixo do carrossel (opcional).
CarouselCard[]
obrigatório
Lista de cards do carrossel. Mínimo 1. Cada card é um objeto com header, body, footer e buttons (descritos abaixo).
object
obrigatório
Header do card. Sub-campos:
  • title (string, obrigatório), título do card.
  • subtitle (string), subtítulo opcional.
  • imageUrl (string), URL de imagem para o header.
  • videoUrl (string), URL de vídeo para o header. Use uma das duas mídias por card.
object
obrigatório
Corpo do card. Sub-campo:
  • text (string, obrigatório), conteúdo textual do card.
Texto opcional exibido no rodapé do card individual.
CarouselButton[]
Lista de botões do card. Cada botão tem:
  • displayText (string, obrigatório), texto visível.
  • id (string, obrigatório), semântica varia conforme type: para REPLY, é o ID retornado quando clicado; para URL, a URL a abrir; para CALL, o número a discar; para COPY, o código a copiar.
  • type (string), REPLY (padrão), URL, CALL ou COPY. Valores diferentes retornam 400 Card N, Button M: Type must be one of: REPLY, URL, CALL, COPY.
int
padrão:"0"
Tempo em segundos para aguardar antes de enviar. Durante o intervalo, o servidor envia o indicador de “digitando…” e dispara o “paused” antes do envio real.
string
ID da mensagem a ser citada (reply). A mensagem original precisa pertencer à mesma instância e ter sido salva no banco.
boolean
padrão:"false"
Quando true e replyTo aponta para uma mensagem originária de um grupo, o carrossel é redirecionado para o privado do autor original (mantendo a citação).
string
padrão:"api"
Identificador de origem para rastreabilidade (ex.: crm, bot-suporte, n8n). Salvo no registro da mensagem e propagado para webhooks.

Notas

  • delay é em segundos (não milissegundos).
  • Em cada header, escolha uma única mídia: ou imageUrl ou videoUrl. Enviar ambas pode resultar em renderização inconsistente no cliente.
  • Validação do servidor: cada card precisa de header.title e body.text não vazios; cada botão precisa de displayText e id não vazios. Erros são retornados com o índice (Card N, Button M: ...) para facilitar debug.
  • Aparelhos antigos do WhatsApp podem cair em fallback de texto e exibir o carrossel como mensagem comum.
  • Para botões URL, garanta que o link comece com https:// para evitar ser bloqueado pelo cliente.

Erros

Envelope de erro: