Pular para o conteúdo principal
POST
/
v1
/
bots
/
{botId}
/
messages
curl --request POST \
  --url https://api.jelou.ai/v1/bots/BOT_ID/messages \
  --header 'Authorization: Basic <Base64Encoded clientId:clientSecret>' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "CAROUSEL",
    "userId": "USER_ID",
    "text": "Confira nossas ofertas",
    "parameters": {
      "cards": [
        {
          "card_index": 0,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image1.png" }
          },
          "body": { "text": "Oferta exclusiva #1" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Comprar",
              "url": "https://shop.example.com/deal1"
            }
          }
        },
        {
          "card_index": 1,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image2.png" }
          },
          "body": { "text": "Oferta exclusiva #2" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Comprar",
              "url": "https://shop.example.com/deal2"
            }
          }
        }
      ]
    }
  }'
{
  "success": true,
  "messageId": "msg_123456789"
}
curl --request POST \
  --url https://api.jelou.ai/v1/bots/BOT_ID/messages \
  --header 'Authorization: Basic <Base64Encoded clientId:clientSecret>' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "CAROUSEL",
    "userId": "USER_ID",
    "text": "Confira nossas ofertas",
    "parameters": {
      "cards": [
        {
          "card_index": 0,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image1.png" }
          },
          "body": { "text": "Oferta exclusiva #1" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Comprar",
              "url": "https://shop.example.com/deal1"
            }
          }
        },
        {
          "card_index": 1,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image2.png" }
          },
          "body": { "text": "Oferta exclusiva #2" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Comprar",
              "url": "https://shop.example.com/deal2"
            }
          }
        }
      ]
    }
  }'

Estrutura de cada cartão

CampoTipoDescrição
card_indexnumberPosição do cartão (começando em 0).
typestringOpcional. Inclua apenas quando a ação for cta_url. Omita em cartões com botões quick_reply.
header.typestringimage ou video.
header.image.link / header.video.linkstringURL pública do header.
body.textstringTexto do corpo do cartão.
actionobjectAção ao interagir com o cartão.

Cartão com botões de resposta rápida

Não inclua o campo type no nível do cartão quando usar botões quick_reply. Ele deve ser definido apenas quando a ação é cta_url. Incluí-lo em cartões com quick_reply faz a Meta rejeitar a mensagem com erro 400/500.
{
  "card_index": 0,
  "header": {
    "type": "image",
    "image": { "link": "https://example.com/image.png" }
  },
  "body": { "text": "Você tem interesse nesta oferta?" },
  "action": {
    "buttons": [
      {
        "type": "quick_reply",
        "quick_reply": {
          "title": "Sim, comprar",
          "payload": { "option": "buy" }
        }
      },
      {
        "type": "quick_reply",
        "quick_reply": {
          "title": "Não, obrigado",
          "payload": { "option": "skip" }
        }
      }
    ]
  }
}

Campos do botão quick_reply

CampoTipoDescrição
quick_reply.titlestringTexto visível do botão (máx. 20 caracteres).
quick_reply.payloadobject | stringInformação que você recebe no webhook quando o usuário seleciona o botão. Útil para identificar qual cartão foi escolhido.
quick_reply.idstringOpcional. Se não for fornecido, o sistema gera um UUID automaticamente.

Restrições

  • Cartões: mínimo 1, máximo 10 por carrossel.
  • Header: apenas image ou video são suportados.
  • Providers compatíveis: WhatsApp Cloud API e Gupshup CAPI.
Este é um carrossel interativo enviado dentro de uma sessão ativa do WhatsApp. Não requer template HSM aprovado pela Meta.

Casos de Uso

  • Catálogos de produtos com CTA para a loja
  • Comparação de planos ou serviços
  • Promoções múltiplas com botões de compra
  • Seleção rápida entre opções com imagem associada

Autorizações

Authorization
string
header
obrigatório

Basic authentication using Base64 encoded clientId:clientSecret

Parâmetros de caminho

botId
string
obrigatório

The unique identifier of the bot

Corpo

application/json

Message payload. The structure varies based on the message type.

type
enum<string>
obrigatório

Type of message to send

Opções disponíveis:
text
Exemplo:

"text"

userId
string
obrigatório

Unique identifier of the user receiving the message

Exemplo:

"USER_ID"

text
string
obrigatório

Text content of the message

Exemplo:

"Hello, this is a text message"

botId
string

Unique identifier of the bot sending the message

Exemplo:

"BOT_ID"

Resposta

Message sent successfully

success
boolean
Exemplo:

true

messageId
string
Exemplo:

"msg_123456789"