---
title: "Send Message."
method: POST
path: "/{Version}/{Phone-Number-ID}/messages"
tags: ["Messages"]
---

# Send Message.

`POST /{Version}/{Phone-Number-ID}/messages`

## Request

- Base URL: `https://graph.facebook.com`
- URL: `https://graph.facebook.com/{Version}/{Phone-Number-ID}/messages`
- Auth: HTTP bearer

Send Message.

## Headers

- `User-Agent` string
- `Authorization` string, required
- `Content-Type` 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data', required

## Request body

- union
  - TextMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'text', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `text` object, required
      - `body` string: The text of the message.
      - `preview_url` boolean
  - AudioMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'audio', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `audio` union, required: A media object. Either `id` or `link` is required.
      - object
        - `id` string, required: The media object ID. **Required when `link` is not used.**
      - object
        - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
  - DocumentMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'document', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `document` union, required: A media object. Either `id` or `link` is required.
      - object
        - `id` string, required: The media object ID. **Required when `link` is not used.**
      - object
        - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
  - ImageMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'image', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `image` union, required: A media object. Either `id` or `link` is required.
      - object
        - `id` string, required: The media object ID. **Required when `link` is not used.**
      - object
        - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
  - LocationMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'location', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `location` object, required
      - `address` string: The address of the location.
      - `latitude` string: The latitude of the location.
      - `longitude` string: The longitude of the location.
      - `name` string: The name of the location.
  - VideoMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'video', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `video` union, required: A media object. Either `id` or `link` is required.
      - object
        - `id` string, required: The media object ID. **Required when `link` is not used.**
      - object
        - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
  - StickerMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'sticker', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `sticker` union, required
      - object
        - `id` string, required: The ID of the sticker.
      - object
        - `link` string, required: The URL of the sticker.
  - ReactionMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'reaction', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `reaction` object, required
      - `emoji` string: emoji
      - `message_id` string: reacted message-id
  - InteractiveMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'interactive', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `interactive` InteractiveObject, required: An object containing the content for an interactive message.
      - `type` 'button' | 'call_permission_request' | 'catalog_message' | 'list' | 'product' | 'product_list' | 'flow', required: The type of interactive message to send.
      - `header` HeaderObject: Header content displayed on top of a message. Required for 'product_list' type. Cannot be set for 'product' type.
        - `type` 'text' | 'video' | 'image' | 'document', required: The header type.
        - `text` string: Text for the header. Required if 'type' is 'text'. Emojis supported, no markdown.
        - `sub_text` string: Optional sub-text for the header. Emojis supported, no markdown.
        - `document` union: A media object. Either `id` or `link` is required.
          - object
            - `id` string, required: The media object ID. **Required when `link` is not used.**
          - object
            - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
        - `image` union: A media object. Either `id` or `link` is required.
          - object
            - `id` string, required: The media object ID. **Required when `link` is not used.**
          - object
            - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
        - `video` union: A media object. Either `id` or `link` is required.
          - object
            - `id` string, required: The media object ID. **Required when `link` is not used.**
          - object
            - `link` string, url, required: The protocol and URL of the media to be sent (HTTP/HTTPS only).
      - `body` BodyObject: An object with the body of the message. Optional for 'product' type, required for other interactive message types.
        - `text` string, required: The content of the message body. Emojis and markdown are supported.
      - `footer` FooterObject: An object with the footer of the message. Optional.
        - `text` string, required: The footer content. Emojis, markdown, and links are supported.
      - `action` union, required: Action you want the user to perform after reading the message. Its structure varies by interactive message type.
        - object
          - `button` string, required: Button content for List Messages. Cannot be empty, must be unique. Emojis supported, no markdown.
          - `sections` SectionObject[], required: Array of section objects.
            - `title` string: Title of the section. Required if the message has more than one section. Max 24 characters.
            - `product_items` object[]: Array of product objects.
              - …
            - `rows` object[]: Contains a list of rows.
              - …
        - object
          - `buttons` object[], required: Array of button objects.
            - `type` 'reply', required: Only supported type is "reply" for Reply Button.
            - `reply` object, required
              - …
        - object
          - `catalog_id` string, required: Unique identifier of the Facebook catalog linked to your WhatsApp Business Account.
          - `product_retailer_id` string: Unique identifier of the product in a catalog. Required for Single Product Messages.
          - `sections` SectionObject[]: Array of section objects.
            - `title` string: Title of the section. Required if the message has more than one section. Max 24 characters.
            - `product_items` object[]: Array of product objects.
              - …
            - `rows` object[]: Contains a list of rows.
              - …
        - object
          - `name` 'catalog_message', required
          - `parameters` object, required
            - `thumbnail_product_retailer_id` string, required: Product retailer ID for the thumbnail.
        - object
          - `name` 'flow', required
          - `parameters` union, required
            - object
              - …
            - object
              - …
        - object
          - `name` 'call_permission_request', required
  - TemplateMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'template', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `template` TemplateObject, required
      - `name` string, required: Name of the template.
      - `language` LanguageObject, required
        - `policy` 'deterministic', required: The language policy the message should follow.
        - `code` string, required: The code of the language or locale to use (e.g., `"en"`, `"en_US"`).
      - `components` TemplateComponent[]: Array of `components` objects containing the parameters of the message.
        - `type` 'header' | 'body' | 'button', required: Describes the component type.
        - `sub_type` 'quick_reply' | 'url' | 'catalog': Required when `type=button`. Not used for other types. Type of button to create.
        - `parameters` unknown[]: Array of parameter objects with the content of the message.
          - unknown
        - `index` string: Required when `type=button`. Not used for other types. Position index of the button (0-9).
  - ContactsMessage: Common properties shared by all message types
    - `messaging_product` string, required
    - `recipient_type` 'individual' | 'group', required: The type of recipient.
    - `to` string, required: The recipient's phone number for individual messages, and group-id for group message.
    - `type` 'contacts', required: The type of message
    - `context` MessageContext: Context information for replying to a message
      - `message_id` string: The ID of the message to which this message is a reply.
    - `contacts` ContactObject[], required
      - `addresses` AddressObject[]: Full contact address(es)
        - `city` string: City name
        - `country` string: Full country name
        - `country_code` string: Two-letter ISO country code
        - `state` string: State abbreviation
        - `street` string: Street address
        - `type` 'HOME' | 'WORK': Address type
        - `zip` string: ZIP code
      - `birthday` string, date: Date of birth (YYYY-MM-DD format)
      - `emails` EmailObject[]: Contact email address(es)
        - `email` string, email, required: Email address
        - `type` 'HOME' | 'WORK': Email type
      - `name` NameObject
        - `first_name` string: First name
        - `formatted_name` string: Formatted full name
        - `last_name` string: Last name
        - `middle_name` string: Middle name
        - `prefix` string: Name prefix
        - `suffix` string: Name suffix
      - `org` OrganizationObject
        - `company` string: Company name
        - `department` string: Department name
        - `title` string: Job title
      - `phones` PhoneObject[]: Contact phone number(s)
        - `phone` string, required: Phone number
        - `type` 'HOME' | 'WORK': Phone type
        - `wa_id` string: WhatsApp ID
      - `urls` UrlObject[]: Contact URL(s)
        - `type` 'HOME' | 'WORK': URL type
        - `url` string, uri, required: URL

## Response `200`

Send Test Message / Send Text Message / Send Reply to Text Message / Send Reply with Reaction Message / Send Image Message by ID / Send Reply to Image Message by ID / Send Image Message by URL / Send Reply to Image Message by URL / Send Audio Message by ID / Send Reply to Audio Message by ID / Send Audio Message By URL / Send Reply to Audio Message by URL / Send Document Message by ID / Send Reply to Document Message by ID / Send Document Message by URL / Send Reply to Document Message by URL / Send Sticker Message By ID / Send Reply to Sticker Message by ID / Send Sticker Message By URL / Send Reply to Sticker Message by URL / Send Video Message By ID / Send Reply to Video Message by ID / Send Video Message By URL / Send Reply to Video Message by URL / Send Contact Message / Send Reply to Contact Message / Send Location Messages / Send Reply to Location Message / Send Message Template Text / Send Message Template Media / Send Interactive Message Template / Send List Message / Send Reply to List Message / Send Reply Button / Send Single Product Message / Example response / Example response / Send Draft Flow by Name / Send Draft Flow by ID / Send Published Flow by Name / Send Published Flow by ID / Send Flow Template Message / Send typing indicator and read receipt / Send Sample Text message / Send Sample Shipping Confirmation Template / Send Sample Issue Resolution Template

- MessageResponsePayload
  - `contacts` object[]
    - `input` string
    - `wa_id` string
  - `messages` object[]
    - `id` string
    - `message_status` 'accepted' | 'held_for_quality_assessment' | 'paused': The status of a WhatsApp message: - `accepted`: The message has been accepted by WhatsApp and is being processed - `held_for_quality_assessment`: The message is being held for quality assessment before delivery - `paused`: The message delivery has been paused
  - `messaging_product` string

---

[API](https://skmtc.dev/meta/apis/whatsapp-business-messaging.md) - [All operations](https://skmtc.dev/meta/apis/whatsapp-business-messaging/llms.txt) - [OpenAPI document](https://skmtc.dev/meta/apis/whatsapp-business-messaging/revisions/5c1973265369?raw)
