---
title: "Enqueue a message"
method: POST
path: "/whatsapp/messages"
tags: ["WhatsApp Messages"]
---

# Enqueue a message

`POST /whatsapp/messages`

Enqueues an outbound WhatsApp message for sending.

Queued messages will be submitted to the WhatsApp Business API asynchronously.

For WhatsApp `template` messages, the referenced template must be in `APPROVED` status. `ARCHIVED` templates cannot be sent.

## Request body

- WhatsappMessageSendRequest — Provide exactly one of `to` or `recipient`. If both are provided, `to` takes precedence and `recipient` is ignored.
  - `from` string, required — The sender's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
  - `to` string — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format. Required when `recipient` is not provided.
  - `recipient` string — The recipient's WhatsApp Business-scoped user ID (BSUID) or parent BSUID. Required when `to` is not provided.
  - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
    - `name` string — Name of the WhatsApp account.
    - `username` string — WhatsApp username.
  - `type` 'template' | 'text' | 'image' | 'audio' | 'video' | 'document' | 'sticker' | 'location' | 'interactive' | 'contacts' | 'reaction', required — WhatsApp outbound message type. See also [WhatsApp messages](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/messages).
  - `template` WhatsappMessageTemplate — Use for sending a WhatsApp `template` message.
    - `name` string, required — Name of the template.
    - `language` object, required — Contains a language object. Specifies the language the template may be rendered in.
      - `code` string, required — The code of the language or locale to use. Accepts both language and language_locale formats (e.g., en and en_US). See [Supported Languages](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages) for all codes.
      - `policy` string — The language policy the message should follow. Default (and only supported option): `deterministic`, which means that WhatsApp delivers the message template in exactly the language and locale asked for.
    - `components` WhatsappMessageTemplateComponent[] — **Required when the specified template contains variables or media.** Array of component objects containing the parameters of the message.
      - `type` 'header' | 'body' | 'button' | 'limited_time_offer' | 'carousel' | 'order_status', required — Component type.
      - `sub_type` 'quick_reply' | 'url' | 'copy_code' | 'catalog' | 'mpm' | 'flow' | 'order_details' — **Required when type is `button`.** Type of button. - `quick_reply`: Refers to a previously created quick reply button that allows for the customer to return a predefined message. - `url`: Refers to a previously created url button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template. - `copy_code`: Refers to a previously created copy code button that allows the customer to copy a text string (defined when the template is sent in a template message) to the device's clipboard when tapped by the app user. - `catalog`: Refers to a previously created catalog button that allows the customer to view your product catalog. - `mpm`: Refers to a previously created MPM (multi-product message) button that allows the customer to browser products and sections. - `flow`: Refers to a previously created flow button that allows the customer to interact with a [flow](https://developers.facebook.com/docs/whatsapp/flows). - `order_details`: Refers to a previously created order details button that allows the customer to view the details of an order.
      - `index` integer — **Required when `type` = `button`. Not used for the other types.** Indicates order in which button should appear, if the template uses multiple buttons. Buttons are zero-indexed, so setting value to 0 will cause the button to appear first, and another button with an index of 1 will appear next, etc.
      - `parameters` WhatsappMessageTemplateComponentParameter[] — **Required when `type` = `button`, or there are variables in the corresponding template component, or the template `HEADER` format is media (`IMAGE`, `VIDEO`, or `DOCUMENT`).** Array of parameter objects with the content of the message.
        - `type` 'text' | 'image' | 'gif' | 'video' | 'document' | 'payload' | 'coupon_code' | 'limited_time_offer' | 'action' | 'order_status' | 'location' — **Required.** Component parameter type. - `text`: Used when the template component type is `BODY`, or the `HEADER` component format is `TEXT`. - `image`: Used when the template `HEADER` component is `IMAGE`. - `gif`: Used when the template `HEADER` component is `GIF`. - `video`: Used when the template `HEADER` component is `VIDEO`. - `document`: Used when the template `HEADER` component is `DOCUMENT`. - `payload`: Used when the template component button type is `QUICK_REPLY`. - `coupon_code`: Used when the template component button type is `COPY_CODE`. - `limited_time_offer`: Used when the template component type is `LIMITED_TIME_OFFER`. - `action`: Used when the template component button type is `CATALOG`, `MPM`, `FLOW`, or `ORDER_DETAILS`. - `order_status`: Used when the template subcategory is `ORDER_STATUS`. - `location`: Used when the template `HEADER` component is `LOCATION`.
        - `text` string — **Required when `type` = `text`.** The message's text. For the header component, the character limit is 60 characters. For the body component, the character limit is 1024 characters. For url buttons, it indicates the developer-provided suffix that is appended to the predefined prefix URL in the template.
        - `payload` string — Required for `quick_reply` buttons. Developer-defined payload that is returned when the button is clicked in addition to the display text on the button.
        - `coupon_code` string — **Required when `type` = `coupon_code`.** The coupon code to be copied when the customer taps the button.
        - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `gif` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `limited_time_offer` WhatsappMessageTemplateComponentParameterLimitedTimeOffer — Required if template uses offer expiration details.
          - `expiration_time_ms` integer — **Required.** Offer code expiration time as a UNIX timestamp in milliseconds.
        - `action` WhatsappMessageTemplateComponentParameterAction — Required if template uses catalog or MPM (multi-product message) buttons.
          - `thumbnail_product_retailer_id` string — **Optional.** Use for catalog and MPM template messages. Item SKU number. Labeled as Content ID in the Commerce Manager. The thumbnail of this item will be used as the message's header image. If the `parameters` object is omitted, the product image of the first item in your catalog will be used.
          - `sections` WhatsappMessageTemplateComponentParameterActionSection[] — Use for MPM templates. Product sections. You can define up to 10 sections.
            - `title` string — Section title text. Maximum 24 characters. Markdown is not supported.
            - `product_items` WhatsappMessageTemplateComponentParameterActionSectionProductItem[] — Array of product SKU numbers. There is a minimum of 1 product per section and a maximum of 30 products across all sections.
              - …
          - `flow_token` string — Use for `FLOW` buttons. Flow token that is generated by the business to serve as an identifier. Defaults to `unused`.
          - `flow_action_data` object — Use for `FLOW` buttons. JSON object with the data payload for the first screen.
          - `order_details` WhatsappMessageOrderDetails — Contains the order details when sending a template message with a `order_details` button.
            - `currency` string, required — The currency for this order. Currently the only supported value is `INR`.
            - `order` WhatsappMessageOrderInfo, required — Order info.
              - …
            - `reference_id` string, required — Unique identifier for the order provided by the business. It is case sensitive and cannot be an empty string and can only contain English letters, numbers, underscores, dashes, or dots, and should not exceed 35 characters. The `reference_id` must be unique for each order_details message for a given business. If there is a need to send multiple order_details messages for the same order, it is recommended to include a sequence number in the reference_id (for example, "BM345A-12") to ensure reference_id uniqueness.
            - `total_amount` WhatsappMessageOrderAmount, required — Represents the amount of an order.
              - …
            - `type` string, required — The type of goods being paid for in this order. Current supported options are `digital-goods` and `physical-goods`.
            - `payment_settings` WhatsappMessageOrderPaymentSetting[], required — Payment settings for the order.
              - …
        - `order_status` WhatsappMessageOrderStatus
          - `reference_id` string — Unique identifier for the order provided by the business.
          - `order` WhatsappMessageOrderInfo — Order info.
            - `status` 'pending' | 'processing' | 'partially_shipped' | 'shipped' | 'completed' | 'canceled' — Only supported value in the `order_details` message is `pending`. In an `order_status` message, `status` can be: `pending`, `processing`, `partially_shipped`, `shipped`, `completed`, or `canceled`.
            - `type` string — Only supported value is `quick_pay`. When this field is passed in we hide the "Review and Pay" button and only show the "Pay Now" button in the order details bubble.
            - `catalog_id` string — Unique identifier of the Facebook catalog being used by the business. If you do not provide this field, you must provide the following fields inside the items object: `country_of_origin`, `importer_name`, and `importer_address`.
            - `items` WhatsappMessageOrderItem[] — Array of items in the order.
              - …
            - `subtotal` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `tax` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `shipping` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `discount` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `expiration` WhatsappMessageOrderExpiration — Expiration for this order.
              - …
            - `description` string — **Optional.** Text for sharing status related information. Could be useful while sending cancellation. Max character limit is 120 characters.
        - `location` WhatsappMessageLocation — Use for `location` messages.
          - `latitude` number, double, required — Latitude of the location.
          - `longitude` number, double, required — Longitude of the location.
          - `name` string — Name of the location.
          - `address` string — Address of the location. Only displayed if `name` is present.
      - `cards` WhatsappMessageTemplateComponentCard[] — Use for `carousel` components. Provides card components containing the parameters of the message.
        - `card_index` integer — **Required.** Zero-indexed order in which card appears within the card carousel. 0 indicates first card, 1 indicates second card, etc.
        - `components` WhatsappMessageTemplateComponentCardComponent[] — Card component.
          - `type` 'header' | 'body' | 'button', required — Component type.
          - `sub_type` 'quick_reply' | 'url' — **Required when type is `button`.** Type of button. - `quick_reply`: Refers to a previously created quick reply button that allows for the customer to return a predefined message. - `url`: Refers to a previously created url button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template.
          - `index` integer — **Required when `type` = `button`. Not used for the other types.** Indicates order in which button should appear, if the template uses multiple buttons. Buttons are zero-indexed, so setting value to 0 will cause the button to appear first, and another button with an index of 1 will appear next, etc.
          - `parameters` WhatsappMessageTemplateComponentParameter[] — **Required when `type` = `button`, or there are variables in the corresponding template component, or the card component `HEADER` format is media (`IMAGE`, `VIDEO`).** Array of parameter objects with the content of the message.
            - `type` 'text' | 'image' | 'gif' | 'video' | 'document' | 'payload' | 'coupon_code' | 'limited_time_offer' | 'action' | 'order_status' | 'location' — **Required.** Component parameter type. - `text`: Used when the template component type is `BODY`, or the `HEADER` component format is `TEXT`. - `image`: Used when the template `HEADER` component is `IMAGE`. - `gif`: Used when the template `HEADER` component is `GIF`. - `video`: Used when the template `HEADER` component is `VIDEO`. - `document`: Used when the template `HEADER` component is `DOCUMENT`. - `payload`: Used when the template component button type is `QUICK_REPLY`. - `coupon_code`: Used when the template component button type is `COPY_CODE`. - `limited_time_offer`: Used when the template component type is `LIMITED_TIME_OFFER`. - `action`: Used when the template component button type is `CATALOG`, `MPM`, `FLOW`, or `ORDER_DETAILS`. - `order_status`: Used when the template subcategory is `ORDER_STATUS`. - `location`: Used when the template `HEADER` component is `LOCATION`.
            - `text` string — **Required when `type` = `text`.** The message's text. For the header component, the character limit is 60 characters. For the body component, the character limit is 1024 characters. For url buttons, it indicates the developer-provided suffix that is appended to the predefined prefix URL in the template.
            - `payload` string — Required for `quick_reply` buttons. Developer-defined payload that is returned when the button is clicked in addition to the display text on the button.
            - `coupon_code` string — **Required when `type` = `coupon_code`.** The coupon code to be copied when the customer taps the button.
            - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `gif` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `limited_time_offer` WhatsappMessageTemplateComponentParameterLimitedTimeOffer — Required if template uses offer expiration details.
              - …
            - `action` WhatsappMessageTemplateComponentParameterAction — Required if template uses catalog or MPM (multi-product message) buttons.
              - …
            - `order_status` WhatsappMessageOrderStatus
              - …
            - `location` WhatsappMessageLocation — Use for `location` messages.
              - …
  - `text` WhatsappMessageText — WhatsApp Message Text Object.
    - `body` string, required — Required for text messages. The text of the text message which can contain URLs which begin with http:// or https:// and formatting. See available formatting options here. If you include URLs in your text and want to include a preview box in text messages (preview_url: true), make sure the URL starts with http:// or https:// — https:// URLs are preferred. You must include a hostname, since IP addresses will not be matched. Maximum length: 4096 characters.
    - `preview_url` boolean — By default, WhatsApp recognizes URLs and makes them clickable, but you can also include a preview box with more information about the link. Set this field to true if you want to include a URL preview box. The majority of the time, the receiver will see a URL they can click on when you send an URL, set preview_url to true, and provide a body object with a http or https link. URL previews are only rendered after one of the following has happened: - The business has sent a message template to the user. - The user initiates a conversation with a "click to chat" link. - The user adds the business phone number to their address book and initiates a conversation. Default: `false`.
  - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `audio` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `sticker` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `location` WhatsappMessageLocation — Use for `location` messages.
    - `latitude` number, double, required — Latitude of the location.
    - `longitude` number, double, required — Longitude of the location.
    - `name` string — Name of the location.
    - `address` string — Address of the location. Only displayed if `name` is present.
  - `interactive` WhatsappMessageInteractive — Use for `interactive` messages.
    - `type` 'button' | 'list' | 'cta_url' | 'product' | 'product_list' | 'catalog_message' | 'location_request_message' | 'order_details' | 'order_status' | 'voice_call' | 'flow' — **Required.** The type of interactive message you want to send. - `button`: Use for Reply Buttons. - `list`: Use for List Messages. - `cta_url`: Use for Call-To-Action (CTA) URL Button Messages. - `product`: Use for Single Product Messages. - `product_list`: Use for Multi-Product Messages. - `catalog_message`: Use for Catalog Messages. - `location_request_message`: Use for Location Request Messages. - `order_details`: Use for Order Details Messages. - `order_status`: Use for Order Status Messages. - `voice_call`: Use for Voice Call Messages. - `flow`: Use for Flow Messages.
    - `action` WhatsappMessageInteractiveAction — **Required.** Action you want the user to perform after reading the `interactive` message.
      - `buttons` WhatsappMessageInteractiveActionButton[] — Required for Reply Buttons. You can have up to 3 buttons.
        - `type` 'reply' — Only supported type is `reply` (for Reply Button).
        - `reply` object
          - `title` string — Button title. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.
          - `id` string — Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user. Maximum length: 256 characters. You cannot have leading or trailing spaces when setting the ID.
      - `button` string — Required for List Messages. Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.
      - `catalog_id` string — Required for Single Product Messages and Multi-Product Messages. Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via the [Meta Commerce Manager](https://business.facebook.com/commerce).
      - `product_retailer_id` string — Required for Single Product Messages and Multi-Product Messages. Unique identifier of the product in a catalog.
      - `sections` WhatsappMessageInteractiveActionSection[] — Required for List Messages and Multi-Product Messages. Array of section objects. Minimum of 1, maximum of 10.
        - `title` string — **Required if the message has more than one section.** Title of the section. Maximum length: 24 characters.
        - `rows` WhatsappMessageInteractiveActionSectionRow[] — Contains a list of rows. You can have a total of 10 rows across your sections. Each row must have a title (Maximum length: 24 characters) and an ID (Maximum length: 200 characters). You can add a description (Maximum length: 72 characters), but it is optional.
          - `id` string — Unique row ID. Maximum length: 200 characters.
          - `title` string — Row title content. Maximum length: 24 characters.
          - `description` string — Row description content. Maximum length: 72 characters.
        - `product_items` WhatsappMessageInteractiveActionSectionProductItem[] — Required for Multi-Product Messages. Array of product objects. There is a minimum of 1 product per section and a maximum of 30 products across all sections.
          - `product_retailer_id` string — Required for Multi-Product Messages. Unique identifier of the product in a catalog.
      - `name` 'cta_url' | 'send_location' | 'flow' | 'review_and_pay' | 'review_order' | 'voice_call' — Action name. Required for Call-To-Action (CTA) buttons. - `cta_url`: Use for Call-To-Action (CTA) URL buttons. - `send_location`: Use for Location Request buttons. - `flow`: Use for Flow buttons. - `review_and_pay`: Use for Order Details buttons. - `review_order`: Use for Order Status buttons. - `voice_call`: Use for Voice Call buttons.
      - `parameters` WhatsappMessageInteractiveActionParameters — Action parameters. Required for Call-To-Action (CTA) buttons.
        - `display_text` string — Text of the CTA URL button. Maximum length: 20 bytes.
        - `url` string — URL of the CTA URL button.
        - `thumbnail_product_retailer_id` string — Item SKU number. Labeled as **Content ID** in the [Commerce Manager](https://business.facebook.com/commerce). The thumbnail of this item will be used as the message's header image.
        - `flow_message_version` string — Use for `flow` buttons. Value must be "3".
        - `flow_token` string — Use for `flow` buttons. Flow token that is generated by the business to serve as an identifier. Defaults to `unused`.
        - `flow_id` string — Conditionally required for `flow` buttons. Unique ID of the Flow provided by WhatsApp. Cannot be used with the `flow_name` parameter.
        - `flow_name` string — Conditionally required for `flow` buttons. The name of the Flow that you created. Cannot be used with the `flow_id` parameter. Changing the Flow name will require updating this parameter to match the new name.
        - `flow_cta` string — Required for `flow` buttons. Text on the CTA button. For example: "Open flow!". Maximum length: 20 characters.
        - `flow_action` string — Use for `flow` buttons. Either `navigate` or `data_exchange`. Defaults to `navigate`.
        - `flow_action_payload` object — Required if `flow_action` is `navigate`. Should be omitted otherwise.
          - `screen` string — The ID of the screen displayed first. It needs to be an **entry** screen.
          - `data` object — Optional input data for the first screen of the Flow. If provided, this must be a non-empty object.
        - `reference_id` string — Required for `review_and_pay` buttons. Unique identifier for the order provided by the business. It is case sensitive and cannot be an empty string and can only contain English letters, numbers, underscores, dashes, or dots, and should not exceed 35 characters. The `reference_id` must be unique for each order_details message for a given business. If there is a need to send multiple order_details messages for the same order, it is recommended to include a sequence number in the reference_id (for example, "BM345A-12") to ensure reference_id uniqueness.
        - `type` string — Required for `review_and_pay` buttons. The type of goods being paid for in this order. Current supported options are `digital-goods` and `physical-goods`.
        - `beneficiaries` WhatsappMessageOrderBeneficiary[] — Required for `review_and_pay` buttons. An array of beneficiaries for this order. A beneficiary is an intended recipient for shipping the physical goods in the order. Beneficiary information isn't shown to users but is needed for legal and compliance reasons.
          - `name` string, required — Name of the individual or business receiving the physical goods. Cannot exceed 200 characters.
          - `address_line1` string, required — Shipping address (Door/Tower Number, Street Name etc.). Cannot exceed 100 characters.
          - `address_line2` string — Shipping address (Landmark, Area, etc.). Cannot exceed 100 characters.
          - `city` string, required — Name of the city.
          - `state` string, required — Name of the state.
          - `country` string, required — Name of the country. Currently the only supported value is `India`.
          - `postal_code` string, required — 6-digit zipcode of shipping address.
        - `currency` string — Required for `review_and_pay` buttons. The currency for this order. Currently the only supported value is `INR`.
        - `total_amount` WhatsappMessageOrderAmount — Represents the amount of an order.
          - `offset` integer, required — Must be `100` for `INR`.
          - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
          - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
          - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
        - `order` WhatsappMessageOrderInfo — Order info.
          - `status` 'pending' | 'processing' | 'partially_shipped' | 'shipped' | 'completed' | 'canceled' — Only supported value in the `order_details` message is `pending`. In an `order_status` message, `status` can be: `pending`, `processing`, `partially_shipped`, `shipped`, `completed`, or `canceled`.
          - `type` string — Only supported value is `quick_pay`. When this field is passed in we hide the "Review and Pay" button and only show the "Pay Now" button in the order details bubble.
          - `catalog_id` string — Unique identifier of the Facebook catalog being used by the business. If you do not provide this field, you must provide the following fields inside the items object: `country_of_origin`, `importer_name`, and `importer_address`.
          - `items` WhatsappMessageOrderItem[] — Array of items in the order.
            - `retailer_id` string — Content ID for an item in the order from your catalog.
            - `name` string, required — The item's name to be displayed to the user. Cannot exceed 60 characters.
            - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `amount` WhatsappMessageOrderAmount, required — Represents the amount of an order.
              - …
            - `sale_amount` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `quantity` integer, required — The number of items in the order.
            - `country_of_origin` string — Required if `catalog_id` is not present. The country of origin of the product.
            - `importer_name` string — Required if `catalog_id` is not present. Name of the importer company.
            - `importer_address` string — Required if `catalog_id` is not present. Address of importer company.
          - `subtotal` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `tax` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `shipping` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `discount` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `expiration` WhatsappMessageOrderExpiration — Expiration for this order.
            - `timestamp` string, required — A string of UTC timestamp in seconds of time when order should expire. Minimum threshold is 300 seconds.
            - `description` string — Text explanation for expiration.
          - `description` string — **Optional.** Text for sharing status related information. Could be useful while sending cancellation. Max character limit is 120 characters.
        - `payment_settings` WhatsappMessageOrderPaymentSetting[] — Required for `review_and_pay` buttons. Payment settings for the order.
          - `type` string, required — Must be set to `payment_gateway`.
          - `payment_gateway` WhatsappMessageOrderPaymentGateway, required — An object that describes payment account information.
            - `type` 'billdesk' | 'razorpay' | 'payu' | 'zaakpay', required — Payment type. Must set this to `billdesk`, `razorpay`, `payu`, or `zaakpay`, if you have linked your BillDesk, Razorpay, PayU, or Zaakpay payment gateway to accept payments.
            - `configuration_name` string, required — The name of the pre-configured payment configuration to use for this order and must not exceed 60 characters. This value must match with a payment configuration set up on the WhatsApp Business Manager.
            - `billdesk` WhatsappMessageOrderPaymentSettingPaymentGatewayBilldesk — Additional info for BillDesk. User-defined fields (extra) are used to store any information corresponding to a particular order. Each extra field has a maximum character limit of 120.
              - …
            - `payu` WhatsappMessageOrderPaymentSettingPaymentGatewayPayu — Additional info for PayU. User-defined fields (udf) are used to store any information corresponding to a particular order. Each UDF field has a maximum character limit of 255.
              - …
            - `razorpay` WhatsappMessageOrderPaymentSettingPaymentGatewayRazorpay — Additional info for Razorpay.
              - …
            - `zaakpay` WhatsappMessageOrderPaymentSettingPaymentGatewayZaakpay — Additional info for Zaakpay. User-defined fields (extra) are used to store any information corresponding to a particular order. Each extra field has a maximum character limit of 180.
              - …
    - `body` WhatsappMessageInteractiveBody — Optional for type `product`. Required for other message types.
      - `text` string — The body content of the message. Emojis and markdown are supported. Maximum length: 1024 characters.
    - `header` WhatsappMessageInteractiveHeader — Required for type `product_list`. Optional for other types.
      - `type` 'text' | 'image' | 'video' | 'document' — **Required.** The header type you would like to use. - `text`: Used for List Messages, Reply Buttons, and Multi-Product Messages. - `video`: Used for Reply Buttons. - `image`: Used for Reply Buttons. - `document`: Used for Reply Buttons.
      - `text` string — Text for the header. Formatting allows emojis, but not markdown.
      - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
        - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
        - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
        - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
        - `filename` string — Describes the filename for the specific document. Use only with `document` media.
      - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
        - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
        - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
        - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
        - `filename` string — Describes the filename for the specific document. Use only with `document` media.
      - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
        - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
        - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
        - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
        - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `footer` WhatsappMessageInteractiveFooter — Optional. An object with the footer of the message.
      - `text` string — The footer content. Emojis and markdown are supported. Links are supported. Maximum length: 60 characters.
  - `contacts` WhatsappMessageContact[] — Required when `type` is `contacts`.
    - `addresses` WhatsappMessageContactAddress[]
      - `street` string — Street number and name.
      - `city` string — City name.
      - `state` string — State abbreviation.
      - `zip` string — ZIP code.
      - `country` string — Full country name.
      - `country_code` string — Two-letter country abbreviation.
      - `type` string — Standard values are `HOME` and `WORK`.
    - `birthday` string — `YYYY-MM-DD` formatted string.
    - `emails` WhatsappMessageContactEmail[]
      - `email` string — Email address.
      - `type` string — Standard values are `HOME` and `WORK`.
    - `name` WhatsappMessageContactName, required — Full contact name formatted as a name object.
      - `formatted_name` string, required — Full name, as it normally appears.
      - `first_name` string — First name.
      - `last_name` string — Last name.
      - `middle_name` string — Middle name.
      - `suffix` string — Name suffix.
      - `prefix` string — Name prefix.
    - `org` WhatsappMessageContactOrg — Contact organization information formatted as an org object.
      - `company` string — Name of the contact's company.
      - `department` string — Name of the contact's department.
      - `title` string — Contact's business title.
    - `phones` WhatsappMessageContactPhone[] — Contact phone number(s) formatted as a phone object.
      - `phone` string — Automatically populated with the `wa_id` value as a formatted phone number.
      - `type` string — Standard Values are `CELL`, `MAIN`, `IPHONE`, `HOME`, and `WORK`.
      - `wa_id` string — WhatsApp ID.
    - `urls` WhatsappMessageContactUrl[] — Contact URL(s) formatted as a urls object.
      - `url` string — URL.
      - `type` string — Standard values are `HOME` and `WORK`.
  - `reaction` WhatsappMessageReaction — When a user reacts to messages with an emoji, the message type is set to `reaction`, and this field is included.
    - `message_id` string, required — Specifies the `wamid` of the message received that contained the reaction.
    - `emoji` string — **Required** when you send a `reaction` message. Set it to `""` if you want to remove the emoji. **Optional** when you received a message from a user. This field is included when a user reacts to messages with an emoji. Otherwise, it indicates a user removed the emoji.
  - `context` WhatsappMessageContext — Used to mention a specific message you are replying to. The reply can be any message type.
    - `message_id` string — Specifies the `wamid` of the message your are replying to. `wamid` is the original message ID on WhatsApp’s platform.
  - `externalId` string — A unique (recommended) string to reference the object. This can be an order number or similar, and can be used to reconcile the object with your internal systems.
  - `category` 'utility' | 'authentication' — **Optional.** Indicates the category of the message to be sent with Direct Send. Supported values are `utility` and `authentication`. Use `utility` for business-initiated utility messages. Messages sent with `utility` are charged at utility rates. Use `authentication` for business-initiated authentication messages. Messages sent with `authentication` are charged at authentication rates. Authentication Direct Send only supports `text` messages.
  - `ttlSeconds` integer — **Optional.** Message time-to-live in seconds for Direct Send `utility` or `authentication` messages. The supported range is 30 seconds to 43200 seconds (12 hours). If omitted, the default Direct Send TTL is used.
  - `useDirectSend` boolean — **Optional.** Whether to send the message through Direct Send. Defaults to `false`. Set this to `true` to send the message through Direct Send when the sender WABA is enabled for Direct Send. For template messages, the template must be convertible to a Direct Send message type. Supported Direct Send message types for template conversion are: - Text messages - Interactive Call-to-Action URL button messages - Interactive reply button messages
  - `filterUnsubscribed` boolean — **Optional.** If set to `true`, the message will not be sent to users who have unsubscribed from your account. Defaults to `false`. Only use for `POST /v2/whatsapp/messages`. If the user has unsubscribed, we will push webhook notifications with `whatsappMessage.errorCode` set to `RECIPIENT_UNSUBSCRIBED`. Not applicable to `POST /v2/whatsapp/messages/sendDirectly`.
  - `filterBlocked` boolean — **Optional.** If set to `true`, the message will not be sent to users in your block list. Defaults to `false`. Only use for `POST /v2/whatsapp/messages`. If the user is in your block list, we will push webhook notifications with `whatsappMessage.errorCode` set to `RECIPIENT_IN_BLOCK_LIST`. Not applicable to `POST /v2/whatsapp/messages/sendDirectly`.

## Response `200`

The request is successfully accepted.

- WhatsappMessage — WhatsApp outbound message object.
  - `id` string, required — Unique ID of the message.
  - `wamid` string — The original message ID on WhatsApp's platform.
  - `wabaId` string, required — WhatsApp Business Account ID.
  - `from` string, required — The sender's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
  - `to` string — The recipient's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
  - `recipient` string — The recipient value submitted in the request when a BSUID or parent BSUID was used.
  - `recipientUserId` string — The recipient's WhatsApp Business-scoped user ID (BSUID).
  - `toUserId` string — Alias of `recipientUserId` kept for compatibility.
  - `parentRecipientUserId` string — The recipient's parent WhatsApp Business-scoped user ID.
  - `toParentUserId` string — Alias of `parentRecipientUserId` kept for compatibility.
  - `customerProfile` WhatsappProfile — Represents the profile of a WhatsApp account.
    - `name` string — Name of the WhatsApp account.
    - `username` string — WhatsApp username.
  - `conversation` WhatsappConversation — WhatsApp defines a conversation as a 24-hour session of messaging between a person and a business. See also [Conversation-Based Pricing](https://developers.facebook.com/docs/whatsapp/pricing).
    - `id` string — Unique ID for the object.
    - `type` 'FREE_ENTRY' | 'FREE_TIER' | 'REGULAR' — Conversation type. There is a charge when the first business message of this conversation is delivered, initiating the 24-hour conversation session. As such, the conversation type can be `null` before the first message is delivered. - `FREE_ENTRY`: Conversations originating from a [free entry point](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations). - `FREE_TIER`: Conversations within the monthly [free tier](https://developers.facebook.com/docs/whatsapp/pricing#free-tier-conversations). - `REGULAR`: Any conversations that did not originate from a [free entry point](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations) or are above the monthly [free tier](https://developers.facebook.com/docs/whatsapp/pricing#free-tier-conversations) allotment.
    - `originType` 'referral_conversion' | 'authentication' | 'marketing' | 'utility' | 'service' — Indicates [conversation category](https://developers.facebook.com/docs/whatsapp/pricing#conversation-categories). This can also be referred to as a conversation entry point. - `referral_conversion`: Indicates a [free entry point conversation](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations). - `authentication`: Indicates the conversation was opened by a business sending template categorized as `AUTHENTICATION` to the customer. This applies any time it has been more than 24 hours since the last customer message. - `marketing`: Indicates the conversation was opened by a business sending template categorized as `MARKETING` to the customer. This applies any time it has been more than 24 hours since the last customer message. - `utility`: Indicates the conversation was opened by a business sending template categorized as `UTILITY` to the customer. This applies any time it has been more than 24 hours since the last customer message. - `service`: Indicates that the conversation opened by a business replying to a customer within a [customer service window](https://developers.facebook.com/docs/whatsapp/pricing#customer-service-windows).
    - `expireTime` string, date-time — Date when the conversation expires, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `type` 'template' | 'text' | 'image' | 'audio' | 'video' | 'document' | 'sticker' | 'location' | 'interactive' | 'contacts' | 'reaction' — WhatsApp outbound message type. See also [WhatsApp messages](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/messages).
  - `template` WhatsappMessageTemplate — Use for sending a WhatsApp `template` message.
    - `name` string, required — Name of the template.
    - `language` object, required — Contains a language object. Specifies the language the template may be rendered in.
      - `code` string, required — The code of the language or locale to use. Accepts both language and language_locale formats (e.g., en and en_US). See [Supported Languages](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages) for all codes.
      - `policy` string — The language policy the message should follow. Default (and only supported option): `deterministic`, which means that WhatsApp delivers the message template in exactly the language and locale asked for.
    - `components` WhatsappMessageTemplateComponent[] — **Required when the specified template contains variables or media.** Array of component objects containing the parameters of the message.
      - `type` 'header' | 'body' | 'button' | 'limited_time_offer' | 'carousel' | 'order_status', required — Component type.
      - `sub_type` 'quick_reply' | 'url' | 'copy_code' | 'catalog' | 'mpm' | 'flow' | 'order_details' — **Required when type is `button`.** Type of button. - `quick_reply`: Refers to a previously created quick reply button that allows for the customer to return a predefined message. - `url`: Refers to a previously created url button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template. - `copy_code`: Refers to a previously created copy code button that allows the customer to copy a text string (defined when the template is sent in a template message) to the device's clipboard when tapped by the app user. - `catalog`: Refers to a previously created catalog button that allows the customer to view your product catalog. - `mpm`: Refers to a previously created MPM (multi-product message) button that allows the customer to browser products and sections. - `flow`: Refers to a previously created flow button that allows the customer to interact with a [flow](https://developers.facebook.com/docs/whatsapp/flows). - `order_details`: Refers to a previously created order details button that allows the customer to view the details of an order.
      - `index` integer — **Required when `type` = `button`. Not used for the other types.** Indicates order in which button should appear, if the template uses multiple buttons. Buttons are zero-indexed, so setting value to 0 will cause the button to appear first, and another button with an index of 1 will appear next, etc.
      - `parameters` WhatsappMessageTemplateComponentParameter[] — **Required when `type` = `button`, or there are variables in the corresponding template component, or the template `HEADER` format is media (`IMAGE`, `VIDEO`, or `DOCUMENT`).** Array of parameter objects with the content of the message.
        - `type` 'text' | 'image' | 'gif' | 'video' | 'document' | 'payload' | 'coupon_code' | 'limited_time_offer' | 'action' | 'order_status' | 'location' — **Required.** Component parameter type. - `text`: Used when the template component type is `BODY`, or the `HEADER` component format is `TEXT`. - `image`: Used when the template `HEADER` component is `IMAGE`. - `gif`: Used when the template `HEADER` component is `GIF`. - `video`: Used when the template `HEADER` component is `VIDEO`. - `document`: Used when the template `HEADER` component is `DOCUMENT`. - `payload`: Used when the template component button type is `QUICK_REPLY`. - `coupon_code`: Used when the template component button type is `COPY_CODE`. - `limited_time_offer`: Used when the template component type is `LIMITED_TIME_OFFER`. - `action`: Used when the template component button type is `CATALOG`, `MPM`, `FLOW`, or `ORDER_DETAILS`. - `order_status`: Used when the template subcategory is `ORDER_STATUS`. - `location`: Used when the template `HEADER` component is `LOCATION`.
        - `text` string — **Required when `type` = `text`.** The message's text. For the header component, the character limit is 60 characters. For the body component, the character limit is 1024 characters. For url buttons, it indicates the developer-provided suffix that is appended to the predefined prefix URL in the template.
        - `payload` string — Required for `quick_reply` buttons. Developer-defined payload that is returned when the button is clicked in addition to the display text on the button.
        - `coupon_code` string — **Required when `type` = `coupon_code`.** The coupon code to be copied when the customer taps the button.
        - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `gif` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
          - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
          - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
          - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
          - `filename` string — Describes the filename for the specific document. Use only with `document` media.
        - `limited_time_offer` WhatsappMessageTemplateComponentParameterLimitedTimeOffer — Required if template uses offer expiration details.
          - `expiration_time_ms` integer — **Required.** Offer code expiration time as a UNIX timestamp in milliseconds.
        - `action` WhatsappMessageTemplateComponentParameterAction — Required if template uses catalog or MPM (multi-product message) buttons.
          - `thumbnail_product_retailer_id` string — **Optional.** Use for catalog and MPM template messages. Item SKU number. Labeled as Content ID in the Commerce Manager. The thumbnail of this item will be used as the message's header image. If the `parameters` object is omitted, the product image of the first item in your catalog will be used.
          - `sections` WhatsappMessageTemplateComponentParameterActionSection[] — Use for MPM templates. Product sections. You can define up to 10 sections.
            - `title` string — Section title text. Maximum 24 characters. Markdown is not supported.
            - `product_items` WhatsappMessageTemplateComponentParameterActionSectionProductItem[] — Array of product SKU numbers. There is a minimum of 1 product per section and a maximum of 30 products across all sections.
              - …
          - `flow_token` string — Use for `FLOW` buttons. Flow token that is generated by the business to serve as an identifier. Defaults to `unused`.
          - `flow_action_data` object — Use for `FLOW` buttons. JSON object with the data payload for the first screen.
          - `order_details` WhatsappMessageOrderDetails — Contains the order details when sending a template message with a `order_details` button.
            - `currency` string, required — The currency for this order. Currently the only supported value is `INR`.
            - `order` WhatsappMessageOrderInfo, required — Order info.
              - …
            - `reference_id` string, required — Unique identifier for the order provided by the business. It is case sensitive and cannot be an empty string and can only contain English letters, numbers, underscores, dashes, or dots, and should not exceed 35 characters. The `reference_id` must be unique for each order_details message for a given business. If there is a need to send multiple order_details messages for the same order, it is recommended to include a sequence number in the reference_id (for example, "BM345A-12") to ensure reference_id uniqueness.
            - `total_amount` WhatsappMessageOrderAmount, required — Represents the amount of an order.
              - …
            - `type` string, required — The type of goods being paid for in this order. Current supported options are `digital-goods` and `physical-goods`.
            - `payment_settings` WhatsappMessageOrderPaymentSetting[], required — Payment settings for the order.
              - …
        - `order_status` WhatsappMessageOrderStatus
          - `reference_id` string — Unique identifier for the order provided by the business.
          - `order` WhatsappMessageOrderInfo — Order info.
            - `status` 'pending' | 'processing' | 'partially_shipped' | 'shipped' | 'completed' | 'canceled' — Only supported value in the `order_details` message is `pending`. In an `order_status` message, `status` can be: `pending`, `processing`, `partially_shipped`, `shipped`, `completed`, or `canceled`.
            - `type` string — Only supported value is `quick_pay`. When this field is passed in we hide the "Review and Pay" button and only show the "Pay Now" button in the order details bubble.
            - `catalog_id` string — Unique identifier of the Facebook catalog being used by the business. If you do not provide this field, you must provide the following fields inside the items object: `country_of_origin`, `importer_name`, and `importer_address`.
            - `items` WhatsappMessageOrderItem[] — Array of items in the order.
              - …
            - `subtotal` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `tax` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `shipping` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `discount` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `expiration` WhatsappMessageOrderExpiration — Expiration for this order.
              - …
            - `description` string — **Optional.** Text for sharing status related information. Could be useful while sending cancellation. Max character limit is 120 characters.
        - `location` WhatsappMessageLocation — Use for `location` messages.
          - `latitude` number, double, required — Latitude of the location.
          - `longitude` number, double, required — Longitude of the location.
          - `name` string — Name of the location.
          - `address` string — Address of the location. Only displayed if `name` is present.
      - `cards` WhatsappMessageTemplateComponentCard[] — Use for `carousel` components. Provides card components containing the parameters of the message.
        - `card_index` integer — **Required.** Zero-indexed order in which card appears within the card carousel. 0 indicates first card, 1 indicates second card, etc.
        - `components` WhatsappMessageTemplateComponentCardComponent[] — Card component.
          - `type` 'header' | 'body' | 'button', required — Component type.
          - `sub_type` 'quick_reply' | 'url' — **Required when type is `button`.** Type of button. - `quick_reply`: Refers to a previously created quick reply button that allows for the customer to return a predefined message. - `url`: Refers to a previously created url button that allows the customer to visit the URL generated by appending the text parameter to the predefined prefix URL in the template.
          - `index` integer — **Required when `type` = `button`. Not used for the other types.** Indicates order in which button should appear, if the template uses multiple buttons. Buttons are zero-indexed, so setting value to 0 will cause the button to appear first, and another button with an index of 1 will appear next, etc.
          - `parameters` WhatsappMessageTemplateComponentParameter[] — **Required when `type` = `button`, or there are variables in the corresponding template component, or the card component `HEADER` format is media (`IMAGE`, `VIDEO`).** Array of parameter objects with the content of the message.
            - `type` 'text' | 'image' | 'gif' | 'video' | 'document' | 'payload' | 'coupon_code' | 'limited_time_offer' | 'action' | 'order_status' | 'location' — **Required.** Component parameter type. - `text`: Used when the template component type is `BODY`, or the `HEADER` component format is `TEXT`. - `image`: Used when the template `HEADER` component is `IMAGE`. - `gif`: Used when the template `HEADER` component is `GIF`. - `video`: Used when the template `HEADER` component is `VIDEO`. - `document`: Used when the template `HEADER` component is `DOCUMENT`. - `payload`: Used when the template component button type is `QUICK_REPLY`. - `coupon_code`: Used when the template component button type is `COPY_CODE`. - `limited_time_offer`: Used when the template component type is `LIMITED_TIME_OFFER`. - `action`: Used when the template component button type is `CATALOG`, `MPM`, `FLOW`, or `ORDER_DETAILS`. - `order_status`: Used when the template subcategory is `ORDER_STATUS`. - `location`: Used when the template `HEADER` component is `LOCATION`.
            - `text` string — **Required when `type` = `text`.** The message's text. For the header component, the character limit is 60 characters. For the body component, the character limit is 1024 characters. For url buttons, it indicates the developer-provided suffix that is appended to the predefined prefix URL in the template.
            - `payload` string — Required for `quick_reply` buttons. Developer-defined payload that is returned when the button is clicked in addition to the display text on the button.
            - `coupon_code` string — **Required when `type` = `coupon_code`.** The coupon code to be copied when the customer taps the button.
            - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `gif` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `limited_time_offer` WhatsappMessageTemplateComponentParameterLimitedTimeOffer — Required if template uses offer expiration details.
              - …
            - `action` WhatsappMessageTemplateComponentParameterAction — Required if template uses catalog or MPM (multi-product message) buttons.
              - …
            - `order_status` WhatsappMessageOrderStatus
              - …
            - `location` WhatsappMessageLocation — Use for `location` messages.
              - …
  - `text` WhatsappMessageText — WhatsApp Message Text Object.
    - `body` string, required — Required for text messages. The text of the text message which can contain URLs which begin with http:// or https:// and formatting. See available formatting options here. If you include URLs in your text and want to include a preview box in text messages (preview_url: true), make sure the URL starts with http:// or https:// — https:// URLs are preferred. You must include a hostname, since IP addresses will not be matched. Maximum length: 4096 characters.
    - `preview_url` boolean — By default, WhatsApp recognizes URLs and makes them clickable, but you can also include a preview box with more information about the link. Set this field to true if you want to include a URL preview box. The majority of the time, the receiver will see a URL they can click on when you send an URL, set preview_url to true, and provide a body object with a http or https link. URL previews are only rendered after one of the following has happened: - The business has sent a message template to the user. - The user initiates a conversation with a "click to chat" link. - The user adds the business phone number to their address book and initiates a conversation. Default: `false`.
  - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `audio` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `sticker` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
    - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
    - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
    - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
    - `filename` string — Describes the filename for the specific document. Use only with `document` media.
  - `location` WhatsappMessageLocation — Use for `location` messages.
    - `latitude` number, double, required — Latitude of the location.
    - `longitude` number, double, required — Longitude of the location.
    - `name` string — Name of the location.
    - `address` string — Address of the location. Only displayed if `name` is present.
  - `interactive` WhatsappMessageInteractive — Use for `interactive` messages.
    - `type` 'button' | 'list' | 'cta_url' | 'product' | 'product_list' | 'catalog_message' | 'location_request_message' | 'order_details' | 'order_status' | 'voice_call' | 'flow' — **Required.** The type of interactive message you want to send. - `button`: Use for Reply Buttons. - `list`: Use for List Messages. - `cta_url`: Use for Call-To-Action (CTA) URL Button Messages. - `product`: Use for Single Product Messages. - `product_list`: Use for Multi-Product Messages. - `catalog_message`: Use for Catalog Messages. - `location_request_message`: Use for Location Request Messages. - `order_details`: Use for Order Details Messages. - `order_status`: Use for Order Status Messages. - `voice_call`: Use for Voice Call Messages. - `flow`: Use for Flow Messages.
    - `action` WhatsappMessageInteractiveAction — **Required.** Action you want the user to perform after reading the `interactive` message.
      - `buttons` WhatsappMessageInteractiveActionButton[] — Required for Reply Buttons. You can have up to 3 buttons.
        - `type` 'reply' — Only supported type is `reply` (for Reply Button).
        - `reply` object
          - `title` string — Button title. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.
          - `id` string — Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user. Maximum length: 256 characters. You cannot have leading or trailing spaces when setting the ID.
      - `button` string — Required for List Messages. Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.
      - `catalog_id` string — Required for Single Product Messages and Multi-Product Messages. Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via the [Meta Commerce Manager](https://business.facebook.com/commerce).
      - `product_retailer_id` string — Required for Single Product Messages and Multi-Product Messages. Unique identifier of the product in a catalog.
      - `sections` WhatsappMessageInteractiveActionSection[] — Required for List Messages and Multi-Product Messages. Array of section objects. Minimum of 1, maximum of 10.
        - `title` string — **Required if the message has more than one section.** Title of the section. Maximum length: 24 characters.
        - `rows` WhatsappMessageInteractiveActionSectionRow[] — Contains a list of rows. You can have a total of 10 rows across your sections. Each row must have a title (Maximum length: 24 characters) and an ID (Maximum length: 200 characters). You can add a description (Maximum length: 72 characters), but it is optional.
          - `id` string — Unique row ID. Maximum length: 200 characters.
          - `title` string — Row title content. Maximum length: 24 characters.
          - `description` string — Row description content. Maximum length: 72 characters.
        - `product_items` WhatsappMessageInteractiveActionSectionProductItem[] — Required for Multi-Product Messages. Array of product objects. There is a minimum of 1 product per section and a maximum of 30 products across all sections.
          - `product_retailer_id` string — Required for Multi-Product Messages. Unique identifier of the product in a catalog.
      - `name` 'cta_url' | 'send_location' | 'flow' | 'review_and_pay' | 'review_order' | 'voice_call' — Action name. Required for Call-To-Action (CTA) buttons. - `cta_url`: Use for Call-To-Action (CTA) URL buttons. - `send_location`: Use for Location Request buttons. - `flow`: Use for Flow buttons. - `review_and_pay`: Use for Order Details buttons. - `review_order`: Use for Order Status buttons. - `voice_call`: Use for Voice Call buttons.
      - `parameters` WhatsappMessageInteractiveActionParameters — Action parameters. Required for Call-To-Action (CTA) buttons.
        - `display_text` string — Text of the CTA URL button. Maximum length: 20 bytes.
        - `url` string — URL of the CTA URL button.
        - `thumbnail_product_retailer_id` string — Item SKU number. Labeled as **Content ID** in the [Commerce Manager](https://business.facebook.com/commerce). The thumbnail of this item will be used as the message's header image.
        - `flow_message_version` string — Use for `flow` buttons. Value must be "3".
        - `flow_token` string — Use for `flow` buttons. Flow token that is generated by the business to serve as an identifier. Defaults to `unused`.
        - `flow_id` string — Conditionally required for `flow` buttons. Unique ID of the Flow provided by WhatsApp. Cannot be used with the `flow_name` parameter.
        - `flow_name` string — Conditionally required for `flow` buttons. The name of the Flow that you created. Cannot be used with the `flow_id` parameter. Changing the Flow name will require updating this parameter to match the new name.
        - `flow_cta` string — Required for `flow` buttons. Text on the CTA button. For example: "Open flow!". Maximum length: 20 characters.
        - `flow_action` string — Use for `flow` buttons. Either `navigate` or `data_exchange`. Defaults to `navigate`.
        - `flow_action_payload` object — Required if `flow_action` is `navigate`. Should be omitted otherwise.
          - `screen` string — The ID of the screen displayed first. It needs to be an **entry** screen.
          - `data` object — Optional input data for the first screen of the Flow. If provided, this must be a non-empty object.
        - `reference_id` string — Required for `review_and_pay` buttons. Unique identifier for the order provided by the business. It is case sensitive and cannot be an empty string and can only contain English letters, numbers, underscores, dashes, or dots, and should not exceed 35 characters. The `reference_id` must be unique for each order_details message for a given business. If there is a need to send multiple order_details messages for the same order, it is recommended to include a sequence number in the reference_id (for example, "BM345A-12") to ensure reference_id uniqueness.
        - `type` string — Required for `review_and_pay` buttons. The type of goods being paid for in this order. Current supported options are `digital-goods` and `physical-goods`.
        - `beneficiaries` WhatsappMessageOrderBeneficiary[] — Required for `review_and_pay` buttons. An array of beneficiaries for this order. A beneficiary is an intended recipient for shipping the physical goods in the order. Beneficiary information isn't shown to users but is needed for legal and compliance reasons.
          - `name` string, required — Name of the individual or business receiving the physical goods. Cannot exceed 200 characters.
          - `address_line1` string, required — Shipping address (Door/Tower Number, Street Name etc.). Cannot exceed 100 characters.
          - `address_line2` string — Shipping address (Landmark, Area, etc.). Cannot exceed 100 characters.
          - `city` string, required — Name of the city.
          - `state` string, required — Name of the state.
          - `country` string, required — Name of the country. Currently the only supported value is `India`.
          - `postal_code` string, required — 6-digit zipcode of shipping address.
        - `currency` string — Required for `review_and_pay` buttons. The currency for this order. Currently the only supported value is `INR`.
        - `total_amount` WhatsappMessageOrderAmount — Represents the amount of an order.
          - `offset` integer, required — Must be `100` for `INR`.
          - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
          - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
          - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
        - `order` WhatsappMessageOrderInfo — Order info.
          - `status` 'pending' | 'processing' | 'partially_shipped' | 'shipped' | 'completed' | 'canceled' — Only supported value in the `order_details` message is `pending`. In an `order_status` message, `status` can be: `pending`, `processing`, `partially_shipped`, `shipped`, `completed`, or `canceled`.
          - `type` string — Only supported value is `quick_pay`. When this field is passed in we hide the "Review and Pay" button and only show the "Pay Now" button in the order details bubble.
          - `catalog_id` string — Unique identifier of the Facebook catalog being used by the business. If you do not provide this field, you must provide the following fields inside the items object: `country_of_origin`, `importer_name`, and `importer_address`.
          - `items` WhatsappMessageOrderItem[] — Array of items in the order.
            - `retailer_id` string — Content ID for an item in the order from your catalog.
            - `name` string, required — The item's name to be displayed to the user. Cannot exceed 60 characters.
            - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
              - …
            - `amount` WhatsappMessageOrderAmount, required — Represents the amount of an order.
              - …
            - `sale_amount` WhatsappMessageOrderAmount — Represents the amount of an order.
              - …
            - `quantity` integer, required — The number of items in the order.
            - `country_of_origin` string — Required if `catalog_id` is not present. The country of origin of the product.
            - `importer_name` string — Required if `catalog_id` is not present. Name of the importer company.
            - `importer_address` string — Required if `catalog_id` is not present. Address of importer company.
          - `subtotal` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `tax` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `shipping` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `discount` WhatsappMessageOrderAmount — Represents the amount of an order.
            - `offset` integer, required — Must be `100` for `INR`.
            - `value` integer, required — Positive integer representing the amount value multiplied by offset. For example, ₹12.34 has value 1234.
            - `description` string — Use only for `tax`, `shipping`, or `discount`. Description of the amount. Max character limit is 60 characters.
            - `discount_program_name` string — Use only for `discount`. Text used for defining incentivised orders. If order is incentivised, the merchant needs to define this information. Max character limit is 60 characters.
          - `expiration` WhatsappMessageOrderExpiration — Expiration for this order.
            - `timestamp` string, required — A string of UTC timestamp in seconds of time when order should expire. Minimum threshold is 300 seconds.
            - `description` string — Text explanation for expiration.
          - `description` string — **Optional.** Text for sharing status related information. Could be useful while sending cancellation. Max character limit is 120 characters.
        - `payment_settings` WhatsappMessageOrderPaymentSetting[] — Required for `review_and_pay` buttons. Payment settings for the order.
          - `type` string, required — Must be set to `payment_gateway`.
          - `payment_gateway` WhatsappMessageOrderPaymentGateway, required — An object that describes payment account information.
            - `type` 'billdesk' | 'razorpay' | 'payu' | 'zaakpay', required — Payment type. Must set this to `billdesk`, `razorpay`, `payu`, or `zaakpay`, if you have linked your BillDesk, Razorpay, PayU, or Zaakpay payment gateway to accept payments.
            - `configuration_name` string, required — The name of the pre-configured payment configuration to use for this order and must not exceed 60 characters. This value must match with a payment configuration set up on the WhatsApp Business Manager.
            - `billdesk` WhatsappMessageOrderPaymentSettingPaymentGatewayBilldesk — Additional info for BillDesk. User-defined fields (extra) are used to store any information corresponding to a particular order. Each extra field has a maximum character limit of 120.
              - …
            - `payu` WhatsappMessageOrderPaymentSettingPaymentGatewayPayu — Additional info for PayU. User-defined fields (udf) are used to store any information corresponding to a particular order. Each UDF field has a maximum character limit of 255.
              - …
            - `razorpay` WhatsappMessageOrderPaymentSettingPaymentGatewayRazorpay — Additional info for Razorpay.
              - …
            - `zaakpay` WhatsappMessageOrderPaymentSettingPaymentGatewayZaakpay — Additional info for Zaakpay. User-defined fields (extra) are used to store any information corresponding to a particular order. Each extra field has a maximum character limit of 180.
              - …
    - `body` WhatsappMessageInteractiveBody — Optional for type `product`. Required for other message types.
      - `text` string — The body content of the message. Emojis and markdown are supported. Maximum length: 1024 characters.
    - `header` WhatsappMessageInteractiveHeader — Required for type `product_list`. Optional for other types.
      - `type` 'text' | 'image' | 'video' | 'document' — **Required.** The header type you would like to use. - `text`: Used for List Messages, Reply Buttons, and Multi-Product Messages. - `video`: Used for Reply Buttons. - `image`: Used for Reply Buttons. - `document`: Used for Reply Buttons.
      - `text` string — Text for the header. Formatting allows emojis, but not markdown.
      - `image` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
        - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
        - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
        - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
        - `filename` string — Describes the filename for the specific document. Use only with `document` media.
      - `video` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
        - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
        - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
        - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
        - `filename` string — Describes the filename for the specific document. Use only with `document` media.
      - `document` WhatsappMessageMedia — Use for `image`, `gif`, `video`, `audio`, `document`, or `sticker` messages. See also [Supported Media Types](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types).
        - `id` string — **Use this when media is uploaded to WhatsApp servers.** Provide the media object ID obtained from WhatsApp media upload API (https://docs.ycloud.com/reference/whatsapp_media-upload#/). Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence.
        - `link` string — **Use this when sending media directly from your server.** The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs. Note: WhatsApp Cloud API caches media resources for 10 minutes. To ensure latest content, add random query strings to the URL. Note: Either `id` or `link` must be provided. If both are provided, `id` takes precedence and `link` will be ignored.
        - `caption` string — Describes the specified `image`, `gif`, `video`, or `document` media. Not applicable in the `header` of `template` or `interactive` messages.
        - `filename` string — Describes the filename for the specific document. Use only with `document` media.
    - `footer` WhatsappMessageInteractiveFooter — Optional. An object with the footer of the message.
      - `text` string — The footer content. Emojis and markdown are supported. Links are supported. Maximum length: 60 characters.
  - `contacts` WhatsappMessageContact[]
    - `addresses` WhatsappMessageContactAddress[]
      - `street` string — Street number and name.
      - `city` string — City name.
      - `state` string — State abbreviation.
      - `zip` string — ZIP code.
      - `country` string — Full country name.
      - `country_code` string — Two-letter country abbreviation.
      - `type` string — Standard values are `HOME` and `WORK`.
    - `birthday` string — `YYYY-MM-DD` formatted string.
    - `emails` WhatsappMessageContactEmail[]
      - `email` string — Email address.
      - `type` string — Standard values are `HOME` and `WORK`.
    - `name` WhatsappMessageContactName, required — Full contact name formatted as a name object.
      - `formatted_name` string, required — Full name, as it normally appears.
      - `first_name` string — First name.
      - `last_name` string — Last name.
      - `middle_name` string — Middle name.
      - `suffix` string — Name suffix.
      - `prefix` string — Name prefix.
    - `org` WhatsappMessageContactOrg — Contact organization information formatted as an org object.
      - `company` string — Name of the contact's company.
      - `department` string — Name of the contact's department.
      - `title` string — Contact's business title.
    - `phones` WhatsappMessageContactPhone[] — Contact phone number(s) formatted as a phone object.
      - `phone` string — Automatically populated with the `wa_id` value as a formatted phone number.
      - `type` string — Standard Values are `CELL`, `MAIN`, `IPHONE`, `HOME`, and `WORK`.
      - `wa_id` string — WhatsApp ID.
    - `urls` WhatsappMessageContactUrl[] — Contact URL(s) formatted as a urls object.
      - `url` string — URL.
      - `type` string — Standard values are `HOME` and `WORK`.
  - `reaction` WhatsappMessageReaction — When a user reacts to messages with an emoji, the message type is set to `reaction`, and this field is included.
    - `message_id` string, required — Specifies the `wamid` of the message received that contained the reaction.
    - `emoji` string — **Required** when you send a `reaction` message. Set it to `""` if you want to remove the emoji. **Optional** when you received a message from a user. This field is included when a user reacts to messages with an emoji. Otherwise, it indicates a user removed the emoji.
  - `context` WhatsappMessageContext — Used to mention a specific message you are replying to. The reply can be any message type.
    - `message_id` string — Specifies the `wamid` of the message your are replying to. `wamid` is the original message ID on WhatsApp’s platform.
  - `externalId` string — A unique (recommended) string to reference the object. This can be an order number or similar, and can be used to reconcile the object with your internal systems.
  - `status` 'accepted' | 'failed' | 'sent' | 'delivered' | 'read' — WhatsApp message status. One of `accepted`, `failed`, `sent`, `delivered`, `read`. - `accepted`: The messaging request is accepted by our system. - `failed`: A message sent by your business failed to send. - `sent`: A message sent by your business is in transit within WhatsApp's systems. - `delivered`: A message sent by your business was delivered to the user's device. - `read`: A message sent by your business was read by the user.
  - `errorCode` string — Error code when the message status is `failed`.
  - `errorMessage` string — Error message when the message status is `failed`.
  - `createTime` string, date-time — The time at which this message is created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `updateTime` string, date-time — The time at which this message is updated, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `sendTime` string, date-time — The time at which this message `status` changed to `sent`, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `deliverTime` string, date-time — The time at which this message `status` changed to `delivered`, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `readTime` string, date-time — The time at which this message `status` changed to `read`, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`.
  - `totalPrice` number, double — Total price of this message. **Note: It's only an estimated price when the `status` is `accepted` or `sent`. It becomes the final price after the message is delivered, i.e., the `status` is `delivered` or `read`.**
  - `currency` string — Price currency. [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217).
  - `regionCode` string — The [region code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the recipient phone number.
  - `pricingCategory` 'referral_conversion' | 'authentication' | 'authentication_international' | 'marketing' | 'marketing_lite' | 'utility' | 'service' — WhatsApp pricing category. - `referral_conversion`: Indicates a [free entry point conversation](https://developers.facebook.com/docs/whatsapp/pricing#free-entry-point-conversations). - `authentication`: Indicates the conversation was billed at authentication rate. - `authentication_international`: Indicates the conversation was conversation was billed at the [authentication-international rate](https://developers.facebook.com/docs/whatsapp/pricing/authentication-international-rates). - `marketing`: Indicates the conversation was billed at authentication rate. - `marketing_lite`: Indicates the conversation was billed at marketing-lite rate. - `utility`: Indicates the conversation was billed at utility rate. - `service`: Indicates the conversation was billed at service rate. See also [Conversation-Based Pricing](https://developers.facebook.com/docs/whatsapp/pricing).
  - `pricingModel` 'PMP' | 'CBP' — WhatsApp pricing model. - `PMP`: Per-message pricing applies. - `CBP`: Conversation-based pricing applies.
  - `pricingType` 'regular' | 'free_customer_service' | 'free_entry_point' — WhatsApp pricing type. This field is only available in PMP (Per-Message Pricing) mode. - `regular`: Indicates the message is billable. - `free_customer_service`: Indicates the message is free because it was either a utility template message or non-template message sent within a customer service window. - `free_entry_point`: Indicates the message is free because it is part of a free-entry point conversation.
  - `whatsappApiError` WhatsappApiError — The original error object returned by WhatsApp. See [Handling Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling), [Cloud API Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).
    - `message` string, required — A human-readable description of the error.
    - `code` string, required — An error code.
    - `type` string — Error type.
    - `error_subcode` string — Additional code about the error.
    - `error_user_msg` string — The message to display to the user. The language of the message is based on the locale of the API request.
    - `error_user_title` string — The title of the dialog, if shown. The language of the message is based on the locale of the API request.
    - `fbtrace_id` string — Internal support identifier. When reporting a bug related to a Graph API call, include the fbtrace_id to help us find log data for debugging.
    - `error_data` object — Additional data about the error. A string or map. - For template APIs, this field is a string describing the reason for the error. - For message APIs, this field is a map with property `details` describing the reason for the error.
  - `bizType` string — This can be either empty or one of `whatsapp`, or `verify`. Defaults to `whatsapp`. - `whatsapp`: Indicates that the message is sent via the **WhatsApp** product. - `verify`: Indicates that the message is sent via the **Verify** product.
  - `verificationId` string — The verification ID. Included only when `bizType` is `verify`.

---

[API](https://skmtc.net/ycloud/apis/ycloud-api.md) · [All operations](https://skmtc.net/ycloud/apis/ycloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ycloud/ycloud-api/versions/4e13d3ca9df8/schema)
