> ## Documentation Index
> Fetch the complete documentation index at: https://messenger-docs.cogfy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send interactive carousel message

> Sends up to 10 cards, each with its own header and action.

Requires an open service window: the recipient must have messaged the business in the last 24 hours. Use `POST /messages/template` to reach recipients outside that window.



## OpenAPI

````yaml POST /messages/interactive/carousel
openapi: 3.1.0
info:
  title: Cogfy Messenger Public API
  version: 1.0.0
  description: API for interacting with the Cogfy Messenger platform
servers:
  - url: https://messenger-public-api.cogfy.com
    description: Production server
  - url: http://localhost:3100
    description: Local server
security:
  - ApiKeyAuth: []
paths:
  /messages/interactive/carousel:
    post:
      tags:
        - Messages
      summary: Send interactive carousel message
      description: >-
        Sends up to 10 cards, each with its own header and action.


        Requires an open service window: the recipient must have messaged the
        business in the last 24 hours. Use `POST /messages/template` to reach
        recipients outside that window.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                from:
                  type: string
                  minLength: 1
                  description: WhatsApp id of the sender phone number
                to:
                  type: string
                  minLength: 1
                  description: Recipient phone number, digits only, including country code
                interactive:
                  type: object
                  properties:
                    type:
                      default: carousel
                      type: string
                      const: carousel
                    body:
                      type: object
                      properties:
                        text:
                          type: string
                          maxLength: 1024
                      required:
                        - text
                    action:
                      type: object
                      properties:
                        cards:
                          minItems: 1
                          maxItems: 10
                          type: array
                          items:
                            type: object
                            properties:
                              card_index:
                                type: number
                              type:
                                type: string
                                const: cta_url
                              header:
                                type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - text
                                      - image
                                  text:
                                    description: >-
                                      Header text. Required when `type` is
                                      `text`
                                    anyOf:
                                      - type: string
                                      - type: 'null'
                                  image:
                                    description: >-
                                      Header image. Required when `type` is
                                      `image`
                                    anyOf:
                                      - type: object
                                        properties:
                                          link:
                                            type: string
                                            format: uri
                                        required:
                                          - link
                                      - type: 'null'
                                required:
                                  - type
                              body:
                                type: object
                                properties:
                                  text:
                                    type: string
                                    maxLength: 160
                                required:
                                  - text
                              action:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    const: cta_url
                                  parameters:
                                    type: object
                                    properties:
                                      display_text:
                                        type: string
                                        maxLength: 20
                                        description: Label of the button
                                      url:
                                        type: string
                                        format: uri
                                        description: URL opened when the button is tapped
                                    required:
                                      - display_text
                                      - url
                                  buttons:
                                    anyOf:
                                      - type: array
                                        items:
                                          type: object
                                          properties:
                                            type:
                                              type: string
                                              const: quick_reply
                                            quick_reply:
                                              type: object
                                              properties:
                                                id:
                                                  type: string
                                                  maxLength: 256
                                                title:
                                                  type: string
                                                  maxLength: 20
                                              required:
                                                - id
                                                - title
                                          required:
                                            - type
                                            - quick_reply
                                      - type: 'null'
                            required:
                              - card_index
                              - type
                              - header
                              - action
                          description: Up to 10 cards
                      required:
                        - cards
                  required:
                    - body
                    - action
              required:
                - from
                - to
                - interactive
      responses:
        '200':
          description: Message sent successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                    description: Id of the created message
                required:
                  - id
                additionalProperties: false
        '400':
          description: >-
            Bad request — invalid input data, or the message was rejected by the
            WhatsApp Cloud API (e.g. invalid template)
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: number
                  title:
                    type: string
                  detail:
                    type: string
                  code:
                    description: >-
                      WhatsApp Cloud API error code, present when the request
                      was rejected by Meta (e.g. invalid template, rate limit)
                    type: number
                required:
                  - status
                  - title
                  - detail
                additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: number
                  title:
                    type: string
                  detail:
                    type: string
                  code:
                    description: >-
                      WhatsApp Cloud API error code, present when the request
                      was rejected by Meta (e.g. invalid template, rate limit)
                    type: number
                required:
                  - status
                  - title
                  - detail
                additionalProperties: false
        '404':
          description: >-
            Sender phone number not found or not linked to a WhatsApp Business
            Account
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: number
                  title:
                    type: string
                  detail:
                    type: string
                  code:
                    description: >-
                      WhatsApp Cloud API error code, present when the request
                      was rejected by Meta (e.g. invalid template, rate limit)
                    type: number
                required:
                  - status
                  - title
                  - detail
                additionalProperties: false
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api-key

````