Skip to main content
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": "Check out our latest offers",
    "parameters": {
      "cards": [
        {
          "card_index": 0,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image1.png" }
          },
          "body": { "text": "Exclusive deal #1" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Shop now",
              "url": "https://shop.example.com/deal1"
            }
          }
        },
        {
          "card_index": 1,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image2.png" }
          },
          "body": { "text": "Exclusive deal #2" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Shop now",
              "url": "https://shop.example.com/deal2"
            }
          }
        }
      ]
    }
  }'
{
  "success": true,
  "messageId": "msg_123456789"
}

Documentation Index

Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt

Use this file to discover all available pages before exploring further.

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": "Check out our latest offers",
    "parameters": {
      "cards": [
        {
          "card_index": 0,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image1.png" }
          },
          "body": { "text": "Exclusive deal #1" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Shop now",
              "url": "https://shop.example.com/deal1"
            }
          }
        },
        {
          "card_index": 1,
          "type": "cta_url",
          "header": {
            "type": "image",
            "image": { "link": "https://example.com/image2.png" }
          },
          "body": { "text": "Exclusive deal #2" },
          "action": {
            "name": "cta_url",
            "parameters": {
              "display_text": "Shop now",
              "url": "https://shop.example.com/deal2"
            }
          }
        }
      ]
    }
  }'

Card structure

FieldTypeDescription
card_indexnumberCard position (zero-based).
typestringAction type: cta_url or quick_reply.
header.typestringimage or video.
header.image.link / header.video.linkstringPublic URL of the header media.
body.textstringCard body text.
actionobjectAction triggered when the card is interacted with.

Card with quick reply buttons

{
  "card_index": 0,
  "type": "quick_reply",
  "header": {
    "type": "image",
    "image": { "link": "https://example.com/image.png" }
  },
  "body": { "text": "Are you interested in this offer?" },
  "action": {
    "buttons": [
      {
        "type": "quick_reply",
        "quick_reply": { "id": "BUY_1", "title": "Yes, buy" }
      },
      {
        "type": "quick_reply",
        "quick_reply": { "id": "SKIP_1", "title": "No, thanks" }
      }
    ]
  }
}

Restrictions

  • Cards: minimum 1, maximum 10 per carousel.
  • Header: only image or video are supported.
  • Compatible providers: WhatsApp Cloud API and Gupshup CAPI.
This is an interactive carousel sent inside an active WhatsApp session. It does not require an HSM template approved by Meta.

Use Cases

  • Product catalogs with CTA to the store
  • Plan or service comparisons
  • Multiple promotions with purchase buttons
  • Quick selection between options with associated image

Authorizations

Authorization
string
header
required

Basic authentication using Base64 encoded clientId:clientSecret

Path Parameters

botId
string
required

The unique identifier of the bot

Body

application/json

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

type
enum<string>
required

Type of message to send

Available options:
text
Example:

"text"

userId
string
required

Unique identifier of the user receiving the message

Example:

"USER_ID"

text
string
required

Text content of the message

Example:

"Hello, this is a text message"

botId
string

Unique identifier of the bot sending the message

Example:

"BOT_ID"

Response

Message sent successfully

success
boolean
Example:

true

messageId
string
Example:

"msg_123456789"