---
title: "🎬 Send media-gif message"
method: POST
path: "/messages/gif"
tags: ["Messages"]
---

# 🎬 Send media-gif message

`POST /messages/gif`

Method responsible for sending GIFs to your chats through the API (The file to be sent must be an MP4)

## Request body

- SenderGif — Media file to send. You can use preuploaded file or upload file on the fly. Use preupload files if you want to send same file to multiple chats and so as not to disturb the order of messages.
  - `to` string, required — Use the phone number or [Chat ID](https://support.whapi.cloud/help-desk/faq/chat-id.-what-is-it-and-how-to-get-it) of the contact/group/channel to which you want to send the message. Use [Get groups](https://whapi.readme.io/reference/getgroups) to get the group ID.
  - `quoted` string — Message ID of the message to be quoted
  - `edit` string — Message ID of the message to be edited
  - `media` union, required
    - string, binary — File to upload
    - string — Media file URL for upload
    - string — Base64 encoded file to upload
    - string — Media file ID
  - `mime_type` string — Mime type of media
  - `no_encode` boolean — Do not use our encoding
  - `no_cache` boolean — Do not use the cache in a request
  - `caption` string — Optional. Text caption under the media.
  - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
  - `width` integer — Width of the media in pixels
  - `height` integer — Height of the media in pixels
  - `autoplay` boolean — Optional. This field indicates whether the GIF should be played automatically when the message is received.
  - `view_once` boolean — Is view once

## Response `200`

Created

- SentMessage
  - `sent` boolean, required — Message sent
  - `message` Message
    - `id` string, required — Message ID
    - `type` 'text' | 'image' | 'video' | 'gif' | 'audio' | 'voice' | 'short' | 'document' | 'documentWithCaption' | 'link_preview' | 'location' | 'live_location' | 'contact' | 'contact_list' | 'sticker' | 'system' | 'call' | 'unknown' | 'action' | 'group_invite' | 'newsletter_invite' | 'admin_invite' | 'product' | 'catalog' | 'interactive' | 'reply' | 'poll' | 'quiz' | 'question' | 'hsm' | 'order' | 'story' | 'event' | 'buttons' | 'list' | 'pin' | 'carousel' | 'album', required — Message type
    - `subtype` string — Message subtype
    - `chat_id` string, required — Chat ID
    - `chat_name` string — Chat name
    - `from` string — WhatsApp ID of the sender
    - `phone` string — Phone number of the sender
    - `from_me` boolean, required — Is message from me
    - `from_name` string — Pushname of the sender
    - `source` 'web' | 'mobile' | 'api' | 'system' | 'business_api' | 'unknown' — Message source
    - `timestamp` number, required — Message timestamp
    - `device_id` number — Device ID, if the message was not sent through the app
    - `status` 'failed' | 'pending' | 'sent' | 'delivered' | 'read' | 'played' | 'deleted' — Message ack status
    - `text` MessageContentText
      - `body` string, required — Message text
      - `buttons` Button[]
        - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
        - `title` string, required — Button text
        - `id` string, required — Button ID
        - `copy_code` string — Button code for copy type
        - `phone_number` string — Button phone number for call type
        - `url` string — Button url for url type
        - `merchant_url` string — Button merchant_url for url type
      - `sections` object[] — Section of the message
        - `title` string — Title of the section
        - `rows` object[] — Rows of the section
          - `title` string — Title of the row
          - `description` string — Description of the row
          - `id` string — Row ID
        - `product_items` object[] — Product items of the section
          - `catalog_id` string — Catalog ID
          - `product_id` string — Product ID
      - `button` string — Button text for list of message
      - `view_once` boolean — Is view once
    - `image` MessageContentImage
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `caption` string — Optional. Text caption under the media.
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `width` integer — Width of the media in pixels
      - `height` integer — Height of the media in pixels
      - `buttons` Button[]
        - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
        - `title` string, required — Button text
        - `id` string, required — Button ID
        - `copy_code` string — Button code for copy type
        - `phone_number` string — Button phone number for call type
        - `url` string — Button url for url type
        - `merchant_url` string — Button merchant_url for url type
      - `view_once` boolean — Is view once
    - `video` MessageContentVideo
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `caption` string — Optional. Text caption under the media.
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `width` integer — Width of the media in pixels
      - `height` integer — Height of the media in pixels
      - `seconds` integer — Optional. For video files, this field indicates the duration of the video file in seconds.
      - `autoplay` boolean — Optional. If the media is a GIF, this field indicates whether the GIF should be played automatically when the message is received.
      - `buttons` Button[]
        - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
        - `title` string, required — Button text
        - `id` string, required — Button ID
        - `copy_code` string — Button code for copy type
        - `phone_number` string — Button phone number for call type
        - `url` string — Button url for url type
        - `merchant_url` string — Button merchant_url for url type
      - `view_once` boolean — Is view once
    - `short` MessageContentVideo
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `caption` string — Optional. Text caption under the media.
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `width` integer — Width of the media in pixels
      - `height` integer — Height of the media in pixels
      - `seconds` integer — Optional. For video files, this field indicates the duration of the video file in seconds.
      - `autoplay` boolean — Optional. If the media is a GIF, this field indicates whether the GIF should be played automatically when the message is received.
      - `buttons` Button[]
        - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
        - `title` string, required — Button text
        - `id` string, required — Button ID
        - `copy_code` string — Button code for copy type
        - `phone_number` string — Button phone number for call type
        - `url` string — Button url for url type
        - `merchant_url` string — Button merchant_url for url type
      - `view_once` boolean — Is view once
    - `gif` MessageContentVideo
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `caption` string — Optional. Text caption under the media.
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `width` integer — Width of the media in pixels
      - `height` integer — Height of the media in pixels
      - `seconds` integer — Optional. For video files, this field indicates the duration of the video file in seconds.
      - `autoplay` boolean — Optional. If the media is a GIF, this field indicates whether the GIF should be played automatically when the message is received.
      - `buttons` Button[]
        - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
        - `title` string, required — Button text
        - `id` string, required — Button ID
        - `copy_code` string — Button code for copy type
        - `phone_number` string — Button phone number for call type
        - `url` string — Button url for url type
        - `merchant_url` string — Button merchant_url for url type
      - `view_once` boolean — Is view once
    - `audio` MessageContentAudio
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `seconds` integer — Optional. For audio files, this field indicates the duration of the audio file in seconds.
      - `recording_time` number — Time in seconds to simulate recording voice
      - `waveform` string — Voice message waveform
      - `view_once` boolean — Is view once
    - `voice` MessageContentAudio
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `seconds` integer — Optional. For audio files, this field indicates the duration of the audio file in seconds.
      - `recording_time` number — Time in seconds to simulate recording voice
      - `waveform` string — Voice message waveform
      - `view_once` boolean — Is view once
    - `document` MessageContentDocument
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `caption` string — Optional. Text caption under the document.
      - `filename` string — Optional. File name
      - `page_count` integer — Optional. Number of pages
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `buttons` Button[]
        - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
        - `title` string, required — Button text
        - `id` string, required — Button ID
        - `copy_code` string — Button code for copy type
        - `phone_number` string — Button phone number for call type
        - `url` string — Button url for url type
        - `merchant_url` string — Button merchant_url for url type
      - `view_once` boolean — Is view once
    - `link_preview` MessageContentLinkPreview — If 'body' contains a link, this props can be used to create custom preview link
      - `body` string, required — Message text
      - `url` string — URL of the link
      - `id` string — Media ID
      - `link` string — Optional. Link to media
      - `sha256` string — Checksum
      - `catalog_id` string — Contact ID
      - `newsletter_id` string — Newsletter ID
      - `invite_code` string — Invite code
      - `title` string, required — Title of the link
      - `description` string — Description of the link
      - `canonical` string — Canonical URL of the link (for example, if the link is shortened)
      - `preview` string — Base64 encoded image for mini version link preview. In JPEG format
      - `view_once` boolean — Is view once
    - `sticker` MessageContentSticker
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `animated` boolean — Optional. For stickers, this field indicates whether the sticker is animated.
      - `width` integer — Width of the media in pixels
      - `height` integer — Height of the media in pixels
      - `preview` string — Optional. Base64 encoded preview of the media. In PNG format.
      - `view_once` boolean — Is view once
    - `location` MessageContentLocation
      - `latitude` number, double, required — Latitude of location being sent
      - `longitude` number, double, required — Longitude of location being sent
      - `address` string — Address of the location
      - `name` string — Name of the location
      - `url` string — URL for the website where the user downloaded the location information
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `accuracy` integer — Accuracy of the location in meters
      - `speed` integer — Speed of the location in meters per second
      - `degrees` integer — Degrees clockwise from true north
      - `comment` string — Optional. Comment for the location
      - `view_once` boolean — Is view once
    - `live_location` MessageContentLiveLocation
      - `latitude` number, double, required — Latitude of live location being sent
      - `longitude` number, double, required — Longitude of live location being sent
      - `accuracy` integer — Accuracy of the live location in meters
      - `speed` integer — Speed of the live location in meters per second
      - `degrees` integer — Degrees clockwise from true north
      - `caption` string — Optional. Text caption under the live location
      - `sequence_number` integer — Optional. Sequence number of the live location for event tracking
      - `time_offset` number — Optional. Time offset of the live location
      - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
      - `view_once` boolean — Is view once
    - `contact` MessageContentContact
      - `name` string — Name of contact
      - `vcard` string — Vcard of contact
    - `contact_list` MessageContentContacts
      - `list` VCard[]
        - `name` string — Name of contact
        - `vcard` string — Vcard of contact
    - `interactive` MessageContentInteractive
      - `header` object — Header of interactive
        - `text` string
      - `body` object, required — Body of interactive
        - `text` string — Text of body
      - `footer` object — Footer of interactive
        - `text` string — Text of footer
      - `action` InteractiveAction, required
        - `list` object
          - `sections` object[], required — Section of the message
            - `title` string — Title of the section
            - `rows` object[] — Rows of the section
              - …
          - `label` string, required — Text for list of message
        - `buttons` Button[] — Buttons
          - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
          - `title` string, required — Button text
          - `id` string, required — Button ID
          - `copy_code` string — Button code for copy type
          - `phone_number` string — Button phone number for call type
          - `url` string — Button url for url type
          - `merchant_url` string — Button merchant_url for url type
        - `product` ActionProduct
          - `catalog_id` string — Catalog ID
          - `product_id` string — Product ID
      - `type` 'list' | 'button' | 'product', required — Interactive type
      - `id` string, required — Media ID
      - `link` string — Optional. Link to media
      - `mime_type` string, required — Mime type of media
      - `file_size` integer, required — File size in bytes
      - `file_name` string — Optional. File name
      - `sha256` string — Checksum
      - `timestamp` number — Created at
      - `view_once` boolean — Is view once
    - `poll` MessageContentPoll
      - `title` string, required — Title of poll
      - `options` string[], required — Options of poll
      - `vote_limit` integer — Number of selectable options in poll (1 - can choose only one option, 0 - any number of options)
      - `end_time` integer — Poll end timestamp
      - `hide_participant_name` boolean — Hide participant names in poll results
      - `allow_add_option` boolean — Allow participants to add options
      - `total` integer — Total count of selected options
      - `results` PollResults[]
        - `id` string, required — option ID
        - `name` string, required — option name
        - `count` integer, required — Number of votes for this option
        - `voters` ContactID[], required — List of users who voted for this option
      - `view_once` boolean — Is view once
    - `quiz` MessageContentQuiz
      - `title` string, required — Title of poll
      - `options` string[], required — Options of poll
      - `vote_limit` integer — Number of selectable options in poll (1 - can choose only one option, 0 - any number of options)
      - `end_time` integer — Poll end timestamp
      - `hide_participant_name` boolean — Hide participant names in poll results
      - `allow_add_option` boolean — Allow participants to add options
      - `total` integer — Total count of selected options
      - `correct_answer` string — Correct option for quiz
      - `results` PollResults[]
        - `id` string, required — option ID
        - `name` string, required — option name
        - `count` integer, required — Number of votes for this option
        - `voters` ContactID[], required — List of users who voted for this option
      - `view_once` boolean — Is view once
    - `question` MessageContentQuestion
      - `body` string — Question text
      - `total` integer — Total count of responses
      - `responses` QuestionAnswer[] — Question responses
        - `participant` string — Contact ID
        - `text` string — Answer text
        - `timestamp` integer — Response timestamp
    - `hsm` MessageContentHSM
      - `header` object — Header
        - `type` 'text' | 'image' | 'video' | 'document' | 'location' — Header type
        - `text` MessagePropsText
          - `body` string, required — Message text
        - `image` MediaFile
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
        - `video` MediaFile
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
        - `document` MediaFile
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
        - `location` MessageContentLocation
          - `latitude` number, double, required — Latitude of location being sent
          - `longitude` number, double, required — Longitude of location being sent
          - `address` string — Address of the location
          - `name` string — Name of the location
          - `url` string — URL for the website where the user downloaded the location information
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `accuracy` integer — Accuracy of the location in meters
          - `speed` integer — Speed of the location in meters per second
          - `degrees` integer — Degrees clockwise from true north
          - `comment` string — Optional. Comment for the location
          - `view_once` boolean — Is view once
      - `body` string — Message text
      - `footer` string — Message footer
      - `buttons` HSMButton[] — Buttons
        - `id` string — ID of the button
        - `type` 'simple' | 'reply' | 'url' | 'phone_number' | 'copy_code' — Type of button
        - `text` string — Button text
        - `url` string — URL
        - `phone_number` string — Phone number
        - `copy_code` string — Code
    - `system` MessageContentSystem
      - `body` string — Message body
    - `order` MessageContentOrder
      - `order_id` string — Order ID
      - `seller` string — Seller ID (Contact ID)
      - `title` string — Order title
      - `text` string — Order message text
      - `token` string — Base64 secret token
      - `item_count` number — Total products count
      - `currency` 'USD' | 'EUR' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL' — Currency
      - `total_price` number — Total order price
      - `status` 'new' | 'accepted' | 'canceled' — Order status
      - `preview` string — Order preview base64 image JPEG
    - `group_invite` MessageContentLinkPreview — If 'body' contains a link, this props can be used to create custom preview link
      - `body` string, required — Message text
      - `url` string — URL of the link
      - `id` string — Media ID
      - `link` string — Optional. Link to media
      - `sha256` string — Checksum
      - `catalog_id` string — Contact ID
      - `newsletter_id` string — Newsletter ID
      - `invite_code` string — Invite code
      - `title` string, required — Title of the link
      - `description` string — Description of the link
      - `canonical` string — Canonical URL of the link (for example, if the link is shortened)
      - `preview` string — Base64 encoded image for mini version link preview. In JPEG format
      - `view_once` boolean — Is view once
    - `newsletter_invite` MessageContentLinkPreview — If 'body' contains a link, this props can be used to create custom preview link
      - `body` string, required — Message text
      - `url` string — URL of the link
      - `id` string — Media ID
      - `link` string — Optional. Link to media
      - `sha256` string — Checksum
      - `catalog_id` string — Contact ID
      - `newsletter_id` string — Newsletter ID
      - `invite_code` string — Invite code
      - `title` string, required — Title of the link
      - `description` string — Description of the link
      - `canonical` string — Canonical URL of the link (for example, if the link is shortened)
      - `preview` string — Base64 encoded image for mini version link preview. In JPEG format
      - `view_once` boolean — Is view once
    - `admin_invite` MessageContentNewsletterAdminInvite
      - `body` string, required — Message text
      - `newsletter_id` string, required — Newsletter ID
      - `newsletter_name` string, required — Newsletter name
      - `expiration` number, required — Expiration timestamp of the invitation
      - `preview` string — Base64 encoded newsletter preview image. In JPEG format
    - `product` MessageContentProduct
      - `catalog_id` string — Catalog ID
      - `product_id` string — Product ID
    - `catalog` MessageContentLinkPreview — If 'body' contains a link, this props can be used to create custom preview link
      - `body` string, required — Message text
      - `url` string — URL of the link
      - `id` string — Media ID
      - `link` string — Optional. Link to media
      - `sha256` string — Checksum
      - `catalog_id` string — Contact ID
      - `newsletter_id` string — Newsletter ID
      - `invite_code` string — Invite code
      - `title` string, required — Title of the link
      - `description` string — Description of the link
      - `canonical` string — Canonical URL of the link (for example, if the link is shortened)
      - `preview` string — Base64 encoded image for mini version link preview. In JPEG format
      - `view_once` boolean — Is view once
    - `product_items` MessageContentProductItems
      - `type` 'list' | 'buttons' — Type of interactive
    - `action` MessageAction
      - `target` string — Target message ID or chat ID
      - `type` 'edited' | 'edit' | 'delete' | 'reaction' | 'ephemeral' | 'vote' | 'result' | 'comment' | 'event_response' | 'answer' | 'pin' | 'unpin' | 'label_change' | 'media_notify' | 'status_notify' | 'group_status_notify', required — Type of action
      - `emoji` string — Action emoji for reaction
      - `ephemeral` integer — Ephemeral message duration
      - `edited_type` 'text' | 'image' | 'video' | 'gif' | 'audio' | 'voice' | 'short' | 'document' | 'documentWithCaption' | 'link_preview' | 'location' | 'live_location' | 'contact' | 'contact_list' | 'sticker' | 'system' | 'call' | 'unknown' | 'action' | 'group_invite' | 'newsletter_invite' | 'admin_invite' | 'product' | 'catalog' | 'interactive' | 'reply' | 'poll' | 'quiz' | 'question' | 'hsm' | 'order' | 'story' | 'event' | 'buttons' | 'list' | 'pin' | 'carousel' | 'album' — Message type
      - `edited_content` union
        - object
          - `body` string, required — Message text
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `sections` object[] — Section of the message
            - `title` string — Title of the section
            - `rows` object[] — Rows of the section
              - …
            - `product_items` object[] — Product items of the section
              - …
          - `button` string — Button text for list of message
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `caption` string — Optional. Text caption under the media.
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `width` integer — Width of the media in pixels
          - `height` integer — Height of the media in pixels
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `caption` string — Optional. Text caption under the media.
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `width` integer — Width of the media in pixels
          - `height` integer — Height of the media in pixels
          - `seconds` integer — Optional. For video files, this field indicates the duration of the video file in seconds.
          - `autoplay` boolean — Optional. If the media is a GIF, this field indicates whether the GIF should be played automatically when the message is received.
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `seconds` integer — Optional. For audio files, this field indicates the duration of the audio file in seconds.
          - `recording_time` number — Time in seconds to simulate recording voice
          - `waveform` string — Voice message waveform
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `caption` string — Optional. Text caption under the document.
          - `filename` string — Optional. File name
          - `page_count` integer — Optional. Number of pages
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `view_once` boolean — Is view once
        - object — If 'body' contains a link, this props can be used to create custom preview link
          - `body` string, required — Message text
          - `url` string — URL of the link
          - `id` string — Media ID
          - `link` string — Optional. Link to media
          - `sha256` string — Checksum
          - `catalog_id` string — Contact ID
          - `newsletter_id` string — Newsletter ID
          - `invite_code` string — Invite code
          - `title` string, required — Title of the link
          - `description` string — Description of the link
          - `canonical` string — Canonical URL of the link (for example, if the link is shortened)
          - `preview` string — Base64 encoded image for mini version link preview. In JPEG format
          - `view_once` boolean — Is view once
        - object
          - `body` string, required — Message text
          - `newsletter_id` string, required — Newsletter ID
          - `newsletter_name` string, required — Newsletter name
          - `expiration` number, required — Expiration timestamp of the invitation
          - `preview` string — Base64 encoded newsletter preview image. In JPEG format
        - object
          - `catalog_id` string — Catalog ID
          - `product_id` string — Product ID
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `animated` boolean — Optional. For stickers, this field indicates whether the sticker is animated.
          - `width` integer — Width of the media in pixels
          - `height` integer — Height of the media in pixels
          - `preview` string — Optional. Base64 encoded preview of the media. In PNG format.
          - `view_once` boolean — Is view once
        - object
          - `latitude` number, double, required — Latitude of location being sent
          - `longitude` number, double, required — Longitude of location being sent
          - `address` string — Address of the location
          - `name` string — Name of the location
          - `url` string — URL for the website where the user downloaded the location information
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `accuracy` integer — Accuracy of the location in meters
          - `speed` integer — Speed of the location in meters per second
          - `degrees` integer — Degrees clockwise from true north
          - `comment` string — Optional. Comment for the location
          - `view_once` boolean — Is view once
        - object
          - `latitude` number, double, required — Latitude of live location being sent
          - `longitude` number, double, required — Longitude of live location being sent
          - `accuracy` integer — Accuracy of the live location in meters
          - `speed` integer — Speed of the live location in meters per second
          - `degrees` integer — Degrees clockwise from true north
          - `caption` string — Optional. Text caption under the live location
          - `sequence_number` integer — Optional. Sequence number of the live location for event tracking
          - `time_offset` number — Optional. Time offset of the live location
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `view_once` boolean — Is view once
        - VCard
          - `name` string — Name of contact
          - `vcard` string — Vcard of contact
        - object
          - `list` VCard[]
            - `name` string — Name of contact
            - `vcard` string — Vcard of contact
        - object
          - `header` object — Header of interactive
            - `text` string
          - `body` object, required — Body of interactive
            - `text` string — Text of body
          - `footer` object — Footer of interactive
            - `text` string — Text of footer
          - `action` InteractiveAction, required
            - `list` object
              - …
            - `buttons` Button[] — Buttons
              - …
            - `product` ActionProduct
              - …
          - `type` 'list' | 'button' | 'product', required — Interactive type
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `view_once` boolean — Is view once
        - object
          - `title` string, required — Title of poll
          - `options` string[], required — Options of poll
          - `vote_limit` integer — Number of selectable options in poll (1 - can choose only one option, 0 - any number of options)
          - `end_time` integer — Poll end timestamp
          - `hide_participant_name` boolean — Hide participant names in poll results
          - `allow_add_option` boolean — Allow participants to add options
          - `total` integer — Total count of selected options
          - `results` PollResults[]
            - `id` string, required — option ID
            - `name` string, required — option name
            - `count` integer, required — Number of votes for this option
            - `voters` ContactID[], required — List of users who voted for this option
          - `view_once` boolean — Is view once
        - object
          - `title` string, required — Title of poll
          - `options` string[], required — Options of poll
          - `vote_limit` integer — Number of selectable options in poll (1 - can choose only one option, 0 - any number of options)
          - `end_time` integer — Poll end timestamp
          - `hide_participant_name` boolean — Hide participant names in poll results
          - `allow_add_option` boolean — Allow participants to add options
          - `total` integer — Total count of selected options
          - `correct_answer` string — Correct option for quiz
          - `results` PollResults[]
            - `id` string, required — option ID
            - `name` string, required — option name
            - `count` integer, required — Number of votes for this option
            - `voters` ContactID[], required — List of users who voted for this option
          - `view_once` boolean — Is view once
        - object
          - `body` string — Question text
          - `total` integer — Total count of responses
          - `responses` QuestionAnswer[] — Question responses
            - `participant` string — Contact ID
            - `text` string — Answer text
            - `timestamp` integer — Response timestamp
        - object
          - `type` 'list_reply' | 'buttons_reply' — Type of message content
          - `list_reply` ListReply
            - `id` string — Clicked list ID
            - `title` string — Clicked list title
            - `description` string — Clicked list description
          - `buttons_reply` ButtonsReply
            - `id` string — Clicked button ID
            - `title` string — Clicked button text
      - `votes` string[] — List of poll options
      - `result` QuizResult
        - `participant` string — Contact ID
        - `answers` string[] — Selected quiz answers
        - `timestamp` integer — Response timestamp
      - `comment` string — Comment
      - `event_response` EventResponse
        - `participant` string — Contact ID
        - `response` 'UNKNOWN' | 'GOING' | 'NOT_GOING' — Response
        - `timestamp` integer — Response timestamp
      - `answer` QuestionAnswer
        - `participant` string — Contact ID
        - `text` string — Answer text
        - `timestamp` integer — Response timestamp
    - `context` MessageContext
      - `forwarded` boolean — Is forwarding message
      - `forwarding_score` integer — Count fo forwarding message
      - `mentions` string[] — The numbers of the mentioned users
      - `ad` MessageContextAD — Advertisement message from META-business
        - `advertiser_name` string — Name of the advertiser
        - `media_type` 'image' | 'video' | 'gif' | 'audio' | 'voice' | 'document' | 'sticker' — Media message type
        - `preview` string — Base64 encoded preview. In JPEG format.
        - `preview_url` string — URL of the preview
        - `title` string — Title of the advertisement
        - `body` string — Body of the advertisement
        - `media_url` string — URL of the media
        - `source` object
          - `id` string — ID of the advertisement source
          - `type` string — Type of the advertisement source
          - `url` string — URL of the advertisement source
        - `auto_reply` boolean — True if the advertisement contains an auto-reply
        - `attrib` boolean — True if the advertisement shows the attributions
        - `ctwa` string — Call to action
        - `ref` string — Reference
      - `conversion` MessageContextConversion — Message conversion data
        - `source` string — Source of the conversion
        - `data` string — Conversion data in Base64
        - `delay` integer — Delay in seconds
      - `quoted_id` string — ID of quoted message
      - `quoted_type` 'text' | 'image' | 'video' | 'gif' | 'audio' | 'voice' | 'short' | 'document' | 'documentWithCaption' | 'link_preview' | 'location' | 'live_location' | 'contact' | 'contact_list' | 'sticker' | 'system' | 'call' | 'unknown' | 'action' | 'group_invite' | 'newsletter_invite' | 'admin_invite' | 'product' | 'catalog' | 'interactive' | 'reply' | 'poll' | 'quiz' | 'question' | 'hsm' | 'order' | 'story' | 'event' | 'buttons' | 'list' | 'pin' | 'carousel' | 'album' — Message type
      - `quoted_content` union
        - object
          - `body` string, required — Message text
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `sections` object[] — Section of the message
            - `title` string — Title of the section
            - `rows` object[] — Rows of the section
              - …
            - `product_items` object[] — Product items of the section
              - …
          - `button` string — Button text for list of message
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `caption` string — Optional. Text caption under the media.
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `width` integer — Width of the media in pixels
          - `height` integer — Height of the media in pixels
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `caption` string — Optional. Text caption under the media.
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `width` integer — Width of the media in pixels
          - `height` integer — Height of the media in pixels
          - `seconds` integer — Optional. For video files, this field indicates the duration of the video file in seconds.
          - `autoplay` boolean — Optional. If the media is a GIF, this field indicates whether the GIF should be played automatically when the message is received.
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `seconds` integer — Optional. For audio files, this field indicates the duration of the audio file in seconds.
          - `recording_time` number — Time in seconds to simulate recording voice
          - `waveform` string — Voice message waveform
          - `view_once` boolean — Is view once
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `caption` string — Optional. Text caption under the document.
          - `filename` string — Optional. File name
          - `page_count` integer — Optional. Number of pages
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `buttons` Button[]
            - `type` 'quick_reply' | 'call' | 'copy' | 'url', required — Type of button
            - `title` string, required — Button text
            - `id` string, required — Button ID
            - `copy_code` string — Button code for copy type
            - `phone_number` string — Button phone number for call type
            - `url` string — Button url for url type
            - `merchant_url` string — Button merchant_url for url type
          - `view_once` boolean — Is view once
        - object — If 'body' contains a link, this props can be used to create custom preview link
          - `body` string, required — Message text
          - `url` string — URL of the link
          - `id` string — Media ID
          - `link` string — Optional. Link to media
          - `sha256` string — Checksum
          - `catalog_id` string — Contact ID
          - `newsletter_id` string — Newsletter ID
          - `invite_code` string — Invite code
          - `title` string, required — Title of the link
          - `description` string — Description of the link
          - `canonical` string — Canonical URL of the link (for example, if the link is shortened)
          - `preview` string — Base64 encoded image for mini version link preview. In JPEG format
          - `view_once` boolean — Is view once
        - object
          - `body` string, required — Message text
          - `newsletter_id` string, required — Newsletter ID
          - `newsletter_name` string, required — Newsletter name
          - `expiration` number, required — Expiration timestamp of the invitation
          - `preview` string — Base64 encoded newsletter preview image. In JPEG format
        - object
          - `catalog_id` string — Catalog ID
          - `product_id` string — Product ID
        - object
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `animated` boolean — Optional. For stickers, this field indicates whether the sticker is animated.
          - `width` integer — Width of the media in pixels
          - `height` integer — Height of the media in pixels
          - `preview` string — Optional. Base64 encoded preview of the media. In PNG format.
          - `view_once` boolean — Is view once
        - object
          - `latitude` number, double, required — Latitude of location being sent
          - `longitude` number, double, required — Longitude of location being sent
          - `address` string — Address of the location
          - `name` string — Name of the location
          - `url` string — URL for the website where the user downloaded the location information
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `accuracy` integer — Accuracy of the location in meters
          - `speed` integer — Speed of the location in meters per second
          - `degrees` integer — Degrees clockwise from true north
          - `comment` string — Optional. Comment for the location
          - `view_once` boolean — Is view once
        - object
          - `latitude` number, double, required — Latitude of live location being sent
          - `longitude` number, double, required — Longitude of live location being sent
          - `accuracy` integer — Accuracy of the live location in meters
          - `speed` integer — Speed of the live location in meters per second
          - `degrees` integer — Degrees clockwise from true north
          - `caption` string — Optional. Text caption under the live location
          - `sequence_number` integer — Optional. Sequence number of the live location for event tracking
          - `time_offset` number — Optional. Time offset of the live location
          - `preview` string — Optional. Base64 encoded preview of the media. In JPEG format.
          - `view_once` boolean — Is view once
        - VCard
          - `name` string — Name of contact
          - `vcard` string — Vcard of contact
        - object
          - `list` VCard[]
            - `name` string — Name of contact
            - `vcard` string — Vcard of contact
        - object
          - `header` object — Header of interactive
            - `text` string
          - `body` object, required — Body of interactive
            - `text` string — Text of body
          - `footer` object — Footer of interactive
            - `text` string — Text of footer
          - `action` InteractiveAction, required
            - `list` object
              - …
            - `buttons` Button[] — Buttons
              - …
            - `product` ActionProduct
              - …
          - `type` 'list' | 'button' | 'product', required — Interactive type
          - `id` string, required — Media ID
          - `link` string — Optional. Link to media
          - `mime_type` string, required — Mime type of media
          - `file_size` integer, required — File size in bytes
          - `file_name` string — Optional. File name
          - `sha256` string — Checksum
          - `timestamp` number — Created at
          - `view_once` boolean — Is view once
        - object
          - `title` string, required — Title of poll
          - `options` string[], required — Options of poll
          - `vote_limit` integer — Number of selectable options in poll (1 - can choose only one option, 0 - any number of options)
          - `end_time` integer — Poll end timestamp
          - `hide_participant_name` boolean — Hide participant names in poll results
          - `allow_add_option` boolean — Allow participants to add options
          - `total` integer — Total count of selected options
          - `results` PollResults[]
            - `id` string, required — option ID
            - `name` string, required — option name
            - `count` integer, required — Number of votes for this option
            - `voters` ContactID[], required — List of users who voted for this option
          - `view_once` boolean — Is view once
        - object
          - `title` string, required — Title of poll
          - `options` string[], required — Options of poll
          - `vote_limit` integer — Number of selectable options in poll (1 - can choose only one option, 0 - any number of options)
          - `end_time` integer — Poll end timestamp
          - `hide_participant_name` boolean — Hide participant names in poll results
          - `allow_add_option` boolean — Allow participants to add options
          - `total` integer — Total count of selected options
          - `correct_answer` string — Correct option for quiz
          - `results` PollResults[]
            - `id` string, required — option ID
            - `name` string, required — option name
            - `count` integer, required — Number of votes for this option
            - `voters` ContactID[], required — List of users who voted for this option
          - `view_once` boolean — Is view once
        - object
          - `body` string — Question text
          - `total` integer — Total count of responses
          - `responses` QuestionAnswer[] — Question responses
            - `participant` string — Contact ID
            - `text` string — Answer text
            - `timestamp` integer — Response timestamp
        - object
          - `type` 'list_reply' | 'buttons_reply' — Type of message content
          - `list_reply` ListReply
            - `id` string — Clicked list ID
            - `title` string — Clicked list title
            - `description` string — Clicked list description
          - `buttons_reply` ButtonsReply
            - `id` string — Clicked button ID
            - `title` string — Clicked button text
      - `quoted_author` string — Whatsapp ID of quoted message author
      - `ephemeral` integer — Ephemeral message duration
    - `event` MessageContentEvent
      - `is_canceled` boolean — True if event is canceled
      - `name` string — Event name
      - `description` string — Event description
      - `join_link` string — Join link
      - `start` integer — Chat timestamp
      - `responses` EventResponse[] — Event responses
        - `participant` string — Contact ID
        - `response` 'UNKNOWN' | 'GOING' | 'NOT_GOING' — Response
        - `timestamp` integer — Response timestamp
    - `list` MessageContentList
      - `header` string
      - `body` string
      - `label` string
      - `footer` string
      - `sections` object[]
        - `title` string
        - `rows` object[]
          - `id` string
          - `title` string
          - `description` string
    - `buttons` MessageContentButtons
      - `text` string
      - `footer` string
      - `buttons` object[]
        - `id` string
        - `text` string
        - `type` 'UNKNOWN' | 'RESPONSE' | 'NATIVE_FLOW'
    - `starred` boolean — Is message starred
    - `reactions` MessageReaction[] — Reactions for message
      - `id` string — Reaction ID
      - `emoji` string, required — Reaction text
      - `group_key` string — Reaction group key
      - `t` number — Reaction timestamp
      - `unread` boolean — Is reaction unread
      - `count` number — Reaction count
    - `labels` Label[] — Labels associated with message
      - `id` string, required — Label ID
      - `name` string, required — Label name
      - `color` 'salmon' | 'lightskyblue' | 'gold' | 'plum' | 'silver' | 'mediumturquoise' | 'violet' | 'goldenrod' | 'cornflowerblue' | 'greenyellow' | 'cyan' | 'lightpink' | 'mediumaquamarine' | 'orangered' | 'deepskyblue' | 'limegreen' | 'darkorange' | 'lightsteelblue' | 'mediumpurple' | 'rebeccapurple', required — Label color
      - `count` integer — Number of objects associated with this label

## Other responses

- `400` — Wrong request parameters
- `401` — Need channel authorization for send message
- `402` — Trial version limit exceeded
- `403` — It is forbidden to send to this group/recipient
- `404` — Media with specified id not found
- `413` — Request media too large
- `415` — Unsupported media type
- `429` — Too many requests
- `500` — Internal Error

---

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