Mensagens
Enviar Carrossel
Envia mensagem com carrossel de cards (header, corpo, rodapé e botões)
POST
Enviar Carrossel
Auth:
Envelope de erro:
TokenAccount ou TokenInstance • Rate-limit: Global (100/min) • Idempotente: não
Descrição
Envia uma mensagem com carrossel de cards deslizáveis. Cada card temheader (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
OmessageType 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 como mensagem de texto contendo o id do botão clicado, capture isso pelo webhook para encadear o fluxo.Parâmetros de rota
Nome da instância (ex.:
$Instance_Name).Headers
TokenAccount ou TokenInstance.application/jsonRequest body
Destino: telefone (
5511999999999) ou JID (@s.whatsapp.net, @lid, @g.us, @newsletter).Texto exibido acima do carrossel (opcional).
Texto exibido abaixo do carrossel (opcional).
Lista de cards do carrossel. Mínimo 1. Cada card é um objeto com
header, body, footer e buttons (descritos abaixo).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.
Corpo do card. Sub-campo:
text(string, obrigatório), conteúdo textual do card.
Texto opcional exibido no rodapé do card individual.
Lista de botões do card. Cada botão tem:
displayText(string, obrigatório), texto visível.id(string, obrigatório), semântica varia conformetype: paraREPLY, é o ID retornado quando clicado; paraURL, a URL a abrir; paraCALL, o número a discar; paraCOPY, o código a copiar.type(string),REPLY(padrão),URL,CALLouCOPY. Valores diferentes retornam400 Card N, Button M: Type must be one of: REPLY, URL, CALL, COPY.
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.
ID da mensagem a ser citada (reply). A mensagem original precisa pertencer à mesma instância e ter sido salva no banco.
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).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: ouimageUrlouvideoUrl. Enviar ambas pode resultar em renderização inconsistente no cliente. - Validação do servidor: cada card precisa de
header.titleebody.textnão vazios; cada botão precisa dedisplayTexteidnã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 comhttps://para evitar ser bloqueado pelo cliente.
Erros
| HTTP | Status interno | Mensagem |
|---|---|---|
| 400 | , | Instance name is required |
| 400 | , | Invalid request body: <detalhe> |
| 400 | , | Number is required |
| 400 | , | At least one card is required |
| 400 | , | Card N: Header title is required |
| 400 | , | Card N: Body text is required |
| 400 | , | Card N, Button M: Display text is required |
| 400 | , | Card N, Button M: ID is required |
| 400 | , | Card N, Button M: Type must be one of: REPLY, URL, CALL, COPY |
| 400 | invalid_number | Invalid phone number format: <detalhe> |
| 400 | media_download_failed | (motivo do download de mídia do header falhar) |
| 404 | , | Instance not found |
| 500 | media_upload_failed | (motivo do upload de mídia do header falhar) |
| 500 | send_failed | Failed to send carousel: <reason> |
| 503 | disconnected | Instance is not connected to WhatsApp |