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

# Send message

> **Protocols:** Linked Device API · Meta Cloud API

**Required scope:** `messages:write`

Send a message to a conversation. Put exactly one message kind inside content. Testing sessions send only to active testing numbers in the same project; supply the recipient phoneNumber.



## OpenAPI

````yaml api-reference/features/messaging.json POST /messaging/{session}/messages/send
openapi: 3.0.3
info:
  title: Messaging API methods
  version: 1.0.0
  description: Task-focused messaging methods across supported Polymorfa connection types.
servers: []
security: []
paths:
  /messaging/{session}/messages/send:
    post:
      tags:
        - Messages
      summary: Send message
      description: >-
        **Protocols:** Linked Device API · Meta Cloud API


        **Required scope:** `messages:write`


        Send a message to a conversation. Put exactly one message kind inside
        content. Testing sessions send only to active testing numbers in the
        same project; supply the recipient phoneNumber.
      operationId: nativeSendMessage
      parameters:
        - schema:
            type: string
          required: true
          name: session
          in: path
          description: Identifier of the connected Polymorfa session.
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Unique key, 1 to 255 bytes of UTF-8, that makes this write safe to
            retry for 24 hours. A retry with the same key, credential,
            `Polymorfa-Version`, and request never runs the write again: it
            returns `409 idempotency_completed` when the original succeeded, or
            the original server error, with `Idempotent-Replayed: true`. Reusing
            the key for a different request returns `409 idempotency_conflict`;
            a retry while the original is still running returns `409
            idempotency_in_progress`, and a retry after an unrecorded outcome
            returns `409 idempotency_outcome_unknown`.


            <!-- polymorfa-input-table -->

            **Value constraints**

            | Constraint | Accepted input |

            | --- | --- |

            | String length | `1` through `255` characters |
          schema:
            type: string
            minLength: 1
            maxLength: 255
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/native__SendMessageRequest'
            example:
              conversation:
                phoneNumber: '+15550001111'
              content:
                text: Hello
      responses:
        '200':
          description: Message sent successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__SendMessageResponse'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '202':
          description: >-
            Accepted for asynchronous processing in response to `Prefer:
            respond-async`; the result is not included
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__AsyncAcceptedResponse'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '401':
          description: Invalid credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '402':
          description: Paid service is restricted; review billing and entitlements
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '403':
          description: Missing scope or resource access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '409':
          description: >-
            `unsupported_for_connection`: call permission requests need a Cloud
            API number; `call_permission_granted`: the person already granted
            permanent permission. The Idempotency-Key already succeeded
            (`idempotency_completed`), was used for a different request
            (`idempotency_conflict`), belongs to a request that is still running
            (`idempotency_in_progress`, with Retry-After), or belongs to a
            request whose outcome was not recorded
            (`idempotency_outcome_unknown`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: conflict_error
                  code: idempotency_conflict
                  message: >-
                    This Idempotency-Key was already used with a different
                    request. Use a new key for a different request.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#idempotency-conflict
          headers:
            Retry-After:
              description: Seconds to wait before retrying `idempotency_in_progress`.
              schema:
                type: integer
                minimum: 0
            Idempotent-Replayed:
              description: >-
                `true` when this response reports the recorded outcome of an
                earlier request with the same Idempotency-Key.
              schema:
                type: string
                enum:
                  - 'true'
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '422':
          description: The supplied media URL could not be fetched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '429':
          description: >-
            `call_permission_request_limited`: WhatsApp limits how often this
            person can be asked for call permission.
          headers:
            Retry-After:
              description: >-
                Seconds until the limiting window resets, when WhatsApp reports
                a reset time.
              schema:
                type: integer
                minimum: 1
            Polymorfa-RateLimit-Reason:
              description: The limit that blocked the request.
              schema:
                type: string
                enum:
                  - call_permission_request
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
        '500':
          description: Unexpected service failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '501':
          description: >-
            `operation_not_supported`: the number's connection cannot send this
            content, such as a poll, or a URL, call or copy-code button on an
            official WhatsApp Business number
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '502':
          description: Messaging provider failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '503':
          description: Session or service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
        '504':
          description: Result unknown after timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/native__X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/native__X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/native__X-RateLimit-Reset'
      security:
        - native__BearerAuth: []
      servers:
        - url: https://api.polymorfa.com
components:
  schemas:
    native__SendMessageRequest:
      type: object
      properties:
        conversation:
          allOf:
            - $ref: '#/components/schemas/native__ConversationReference'
          description: |-
            Public conversation identifier or E.164 phone number.

            <!-- polymorfa-input-table -->
            **Accepted alternatives**
            | Alternative | Accepted input |
            | --- | --- |
            | Alternative 1 | Required fields: `id` |
            | Alternative 2 | Required fields: `phoneNumber` |
            | Alternative 3 | Required fields: `bsuid` |
        isForwarded:
          type: boolean
          description: Mark this message as forwarded.
        mentions:
          type: array
          items:
            type: string
            pattern: ^[1-9][0-9]{0,18}$
            description: Opaque Polymorfa resource ID. Keep this value as a string.
            example: '739182640518203'
          description: |-
            User IDs to mention in this message.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Item pattern | `^[1-9][0-9]{0,18}$` |
        quotedMessage:
          allOf:
            - $ref: '#/components/schemas/native__QuotedMessage'
          description: Specifies quoted message for this native send message request.
        content:
          allOf:
            - $ref: '#/components/schemas/native__MessageContent'
          description: >-
            Specifies content for this native send message request.


            <!-- polymorfa-input-table -->

            **Accepted alternatives**

            | Alternative | Accepted input |

            | --- | --- |

            | Alternative 1 | Type: `object`; Required fields: `text` |

            | Alternative 2 | Type: `object`; Required fields: `image` |

            | Alternative 3 | Type: `object`; Required fields: `video` |

            | Alternative 4 | Type: `object`; Required fields: `file` |

            | Alternative 5 | Type: `object`; Required fields: `voice` |

            | Alternative 6 | Type: `object`; Required fields: `location` |

            | Alternative 7 | Type: `object`; Required fields: `poll` |

            | Alternative 8 | Type: `object`; Required fields: `contact` |

            | Alternative 9 | Type: `object`; Required fields:
            `requestPhoneNumber` |

            | Alternative 10 | Type: `object`; Required fields: `product` |

            | Alternative 11 | Type: `object`; Required fields: `productList` |

            | Alternative 12 | Type: `object`; Required fields: `order` |

            | Alternative 13 | Type: `object`; Required fields: `list` |

            | Alternative 14 | Type: `object`; Required fields: `buttons` |

            | Alternative 15 | Type: `object`; Required fields: `addressMessage`
            |

            | Alternative 16 | Type: `object`; Required fields: `flow` |

            | Alternative 17 | Type: `object`; Required fields:
            `callPermissionRequest` |

            | Alternative 18 | Type: `object`; Required fields: `template` |
      required:
        - conversation
        - content
      additionalProperties: false
      description: >-
        Specify conversation and content containing exactly one message kind.
        Shared options remain outside content.
    native__SendMessageResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
          description: |-
            Whether the request succeeded.

            <!-- polymorfa-input-table -->
            **Allowed values**
            | Value | Meaning |
            | --- | --- |
            | `true` | True. |
        data:
          allOf:
            - $ref: '#/components/schemas/native__SentMessage'
          description: Structured data carried by this object.
      required:
        - success
        - data
    native__AsyncAcceptedResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
          description: |-
            Whether the request succeeded.

            <!-- polymorfa-input-table -->
            **Allowed values**
            | Value | Meaning |
            | --- | --- |
            | `true` | True. |
        data:
          type: object
          properties:
            requestId:
              type: string
              format: uuid
              description: |-
                Identifier used to correlate this request across systems.

                <!-- polymorfa-input-table -->
                **Value constraints**
                | Constraint | Accepted input |
                | --- | --- |
                | Format | `uuid` |
          required:
            - requestId
          description: Structured data carried by this object.
      required:
        - success
        - data
    native__PublicError:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - invalid_request_error
                - authentication_error
                - permission_error
                - conflict_error
                - rate_limit_error
                - api_error
                - upstream_error
              description: |-
                Type discriminator for this object.

                <!-- polymorfa-input-table -->
                **Allowed values**
                | Value | Meaning |
                | --- | --- |
                | `invalid_request_error` | Invalid request error. |
                | `authentication_error` | Authentication error. |
                | `permission_error` | Permission error. |
                | `conflict_error` | Conflict error. |
                | `rate_limit_error` | Rate limit error. |
                | `api_error` | Api error. |
                | `upstream_error` | Upstream error. |
            code:
              type: string
              enum:
                - invalid_parameter
                - invalid_credential
                - entitlement_required
                - gate_limit_reached
                - method_not_allowed
                - permission_denied
                - missing_scope
                - resource_not_found
                - hms_not_enabled
                - media_fetch_failed
                - resource_gone
                - feature_unavailable
                - stream_cursor_invalid
                - stream_cursor_expired
                - stream_connection_limit_reached
                - state_conflict
                - hybrid_choice_required
                - idempotency_conflict
                - idempotency_in_progress
                - idempotency_completed
                - idempotency_outcome_unknown
                - call_claimed
                - call_not_ringing
                - connection_limit
                - unsupported_for_connection
                - call_permission_required
                - invalid_sip_trunk
                - calls_disabled
                - call_recipient_opted_out
                - call_destination_blocked
                - call_permission_request_limited
                - call_permission_granted
                - call_opt_out_limit
                - number_restricted
                - sip_trunk_in_use
                - sip_trunk_revision_conflict
                - sip_trunk_limit
                - sip_unavailable
                - voice_not_enabled
                - provider_credential_invalid
                - provider_unavailable
                - asset_not_ready
                - voice_asset_in_use
                - voice_asset_revision_conflict
                - voice_unavailable
                - rate_limit_exceeded
                - internal_error
                - operation_not_supported
                - upstream_failure
                - service_unavailable
                - credential_verification_unavailable
                - session_not_ready
                - command_dispatch_failed
                - result_unknown
                - recipient_not_on_whatsapp
                - conversation_window_closed
                - template_not_approved
                - media_too_large
                - whatsapp_rate_limited
                - new_chat_limit_reached
                - whatsapp_account_restricted
                - bansafe_suspended
                - bansafe_org_suspended
                - bansafe_cold_blocked
                - bansafe_cold_held
                - bansafe_throttled
                - bansafe_daily_allowance_reached
                - bansafe_accounting_unavailable
                - bansafe_send_outcome_unknown
                - campaigns_not_entitled
                - campaign_throughput_capped
              description: >-
                Stable machine-readable code for this result.


                <!-- polymorfa-input-table -->

                **Allowed values**

                | Value | Meaning |

                | --- | --- |

                | `invalid_parameter` | Invalid parameter. |

                | `invalid_credential` | Invalid credential. |

                | `entitlement_required` | Entitlement required. |

                | `gate_limit_reached` | Gate limit reached. |

                | `method_not_allowed` | Method not allowed. |

                | `permission_denied` | Permission denied. |

                | `missing_scope` | Missing scope. |

                | `resource_not_found` | Resource not found. |

                | `hms_not_enabled` | Hms not enabled. |

                | `media_fetch_failed` | Media fetch failed. |

                | `resource_gone` | Resource gone. |

                | `feature_unavailable` | Feature unavailable. |

                | `stream_cursor_invalid` | Stream cursor invalid. |

                | `stream_cursor_expired` | Stream cursor expired. |

                | `stream_connection_limit_reached` | Stream connection limit
                reached. |

                | `state_conflict` | State conflict. |

                | `hybrid_choice_required` | Hybrid choice required. |

                | `idempotency_conflict` | Idempotency conflict. |

                | `idempotency_in_progress` | Idempotency in progress. |

                | `idempotency_completed` | Idempotency completed. |

                | `idempotency_outcome_unknown` | Idempotency outcome unknown. |

                | `call_claimed` | Call claimed. |

                | `call_not_ringing` | Call not ringing. |

                | `connection_limit` | Connection limit. |

                | `unsupported_for_connection` | Unsupported for connection. |

                | `call_permission_required` | Call permission required. |

                | `invalid_sip_trunk` | Invalid sip trunk. |

                | `calls_disabled` | Calls disabled. |

                | `call_recipient_opted_out` | Call recipient opted out. |

                | `call_destination_blocked` | Call destination blocked. |

                | `call_permission_request_limited` | Call permission request
                limited. |

                | `call_permission_granted` | Call permission granted. |

                | `call_opt_out_limit` | Call opt out limit. |

                | `number_restricted` | Number restricted. |

                | `sip_trunk_in_use` | Sip trunk in use. |

                | `sip_trunk_revision_conflict` | Sip trunk revision conflict. |

                | `sip_trunk_limit` | Sip trunk limit. |

                | `sip_unavailable` | Sip unavailable. |

                | `voice_not_enabled` | Voice not enabled. |

                | `provider_credential_invalid` | Provider credential invalid. |

                | `provider_unavailable` | Provider unavailable. |

                | `asset_not_ready` | Asset not ready. |

                | `voice_asset_in_use` | Voice asset in use. |

                | `voice_asset_revision_conflict` | Voice asset revision
                conflict. |

                | `voice_unavailable` | Voice unavailable. |

                | `rate_limit_exceeded` | Rate limit exceeded. |

                | `internal_error` | Internal error. |

                | `operation_not_supported` | Operation not supported. |

                | `upstream_failure` | Upstream failure. |

                | `service_unavailable` | Service unavailable. |

                | `credential_verification_unavailable` | Credential
                verification unavailable. |

                | `session_not_ready` | Session not ready. |

                | `command_dispatch_failed` | Command dispatch failed. |

                | `result_unknown` | Result unknown. |

                | `recipient_not_on_whatsapp` | Recipient not on whatsapp. |

                | `conversation_window_closed` | Conversation window closed. |

                | `template_not_approved` | Template not approved. |

                | `media_too_large` | Media too large. |

                | `whatsapp_rate_limited` | Whatsapp rate limited. |

                | `new_chat_limit_reached` | New chat limit reached. |

                | `whatsapp_account_restricted` | Whatsapp account restricted. |

                | `bansafe_suspended` | Bansafe suspended. |

                | `bansafe_org_suspended` | Bansafe org suspended. |

                | `bansafe_cold_blocked` | Bansafe cold blocked. |

                | `bansafe_cold_held` | Bansafe cold held. |

                | `bansafe_throttled` | Bansafe throttled. |

                | `bansafe_daily_allowance_reached` | Bansafe daily allowance
                reached. |

                | `bansafe_accounting_unavailable` | Bansafe accounting
                unavailable. |

                | `bansafe_send_outcome_unknown` | Bansafe send outcome unknown.
                |

                | `campaigns_not_entitled` | Campaigns not entitled. |

                | `campaign_throughput_capped` | Campaign throughput capped. |
            message:
              type: string
              description: Human-readable message associated with this result.
            param:
              type: string
              nullable: true
              description: |-
                Specifies param for this error.

                <!-- polymorfa-input-table -->
                **Accepted alternatives**
                | Alternative | Accepted input |
                | --- | --- |
                | Alternative 1 | Type: `string` |
                | Alternative 2 | `null` |
            request_id:
              type: string
              description: >-
                Matches the X-Request-Id response header. Include it when you
                contact support.
            request_log_url:
              type: string
              format: uri
              description: >-
                Console page that shows this request. Returned only to
                organization and project credentials whose request was logged.


                <!-- polymorfa-input-table -->

                **Value constraints**

                | Constraint | Accepted input |

                | --- | --- |

                | Format | `uri` |
          required:
            - type
            - code
            - message
            - param
            - request_id
          description: Error details returned when the operation fails.
        data:
          type: string
          nullable: true
          enum:
            - null
          description: |-
            Always null for a failed request.

            <!-- polymorfa-input-table -->
            **Allowed values**
            | Value | Meaning |
            | --- | --- |
            | `null` | Null. |

            **Accepted alternatives**
            | Alternative | Accepted input |
            | --- | --- |
            | Alternative 1 | Type: `string` |
            | Alternative 2 | `null` |
        docs:
          type: string
          format: uri
          description: |-
            Specifies docs for this native public error.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Format | `uri` |
      required:
        - error
        - data
        - docs
    native__ConversationReference:
      type: object
      properties:
        id:
          type: string
          pattern: ^[1-9][0-9]{0,18}$
          description: |-
            Opaque Polymorfa resource ID. Keep this value as a string.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Pattern | `^[1-9][0-9]{0,18}$` |
          example: '739182640518203'
        phoneNumber:
          type: string
          pattern: ^\+[1-9]\d{1,14}$
          description: |-
            Phone number in international format.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Pattern | `^\+[1-9]\d{1,14}$` |
        bsuid:
          type: string
          pattern: ^[A-Z]{2}\.[A-Za-z0-9]{1,128}$
          description: >-
            Business-scoped user identifier (BSUID), scoped to the owning
            business portfolio.


            <!-- polymorfa-input-table -->

            **Value constraints**

            | Constraint | Accepted input |

            | --- | --- |

            | Pattern | `^[A-Z]{2}\.[A-Za-z0-9]{1,128}$` |
        username:
          type: string
          minLength: 1
          maxLength: 256
          description: |-
            Known username. This field alone does not select a conversation.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | String length | `1` through `256` characters |
      additionalProperties: false
      anyOf:
        - required:
            - id
        - required:
            - phoneNumber
        - required:
            - bsuid
    native__QuotedMessage:
      type: object
      properties:
        id:
          type: string
          pattern: ^[1-9][0-9]{0,18}$
          description: |-
            Opaque Polymorfa resource ID. Keep this value as a string.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Pattern | `^[1-9][0-9]{0,18}$` |
          example: '739182640518203'
        type:
          type: string
          description: Type discriminator for this object.
        text:
          type: string
          description: Text content carried by this object.
      required:
        - id
      description: Message being replied to.
    native__MessageContent:
      description: >-
        Exactly one message kind: text, image, location, or another supported
        content field.
      oneOf:
        - type: object
          properties:
            text:
              type: string
              minLength: 1
              description: |-
                Text to send.

                <!-- polymorfa-input-table -->
                **Value constraints**
                | Constraint | Accepted input |
                | --- | --- |
                | String length | At least `1` characters |
          required:
            - text
          additionalProperties: false
        - type: object
          properties:
            image:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                  description: |-
                    URL of the media to send. Specify this or base64.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Format | `uri` |
                base64:
                  type: string
                  minLength: 1
                  description: |-
                    Base64-encoded media bytes. Specify this or url.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                mimeType:
                  type: string
                  description: >-
                    MIME type of the media.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Media type | IANA `type/subtype` value matching the
                    payload, such as `image/jpeg`, `image/png`, or `image/webp`
                    |
                caption:
                  type: string
                  description: Caption sent with the media.
              additionalProperties: false
              description: Image attached to or representing this resource.
          required:
            - image
          additionalProperties: false
        - type: object
          properties:
            video:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                  description: |-
                    URL of the media to send. Specify this or base64.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Format | `uri` |
                base64:
                  type: string
                  minLength: 1
                  description: |-
                    Base64-encoded media bytes. Specify this or url.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                mimeType:
                  type: string
                  description: >-
                    MIME type of the media.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Media type | IANA `type/subtype` value matching the
                    payload, such as `video/mp4` or `video/3gpp` |
                caption:
                  type: string
                  description: Caption sent with the media.
              additionalProperties: false
              description: Structured video values for this one of.
          required:
            - video
          additionalProperties: false
        - type: object
          properties:
            file:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                  description: |-
                    URL of the media to send. Specify this or base64.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Format | `uri` |
                base64:
                  type: string
                  minLength: 1
                  description: |-
                    Base64-encoded media bytes. Specify this or url.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                mimeType:
                  type: string
                  description: >-
                    MIME type of the media.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Media type | IANA `type/subtype` value matching the
                    payload, such as `application/pdf`, `text/plain`, or
                    `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
                    |
                caption:
                  type: string
                  description: Caption sent with the media.
                filename:
                  type: string
                  description: Filename presented for the media attachment.
              additionalProperties: false
              description: Structured file values for this one of.
          required:
            - file
          additionalProperties: false
        - type: object
          properties:
            voice:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                  description: |-
                    URL of the media to send. Specify this or base64.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Format | `uri` |
                base64:
                  type: string
                  minLength: 1
                  description: |-
                    Base64-encoded media bytes. Specify this or url.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                mimeType:
                  type: string
                  description: >-
                    MIME type of the media.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Media type | IANA `type/subtype` value matching the
                    payload, such as `audio/ogg`, `audio/mpeg`, or `audio/aac` |
                caption:
                  type: string
                  description: Caption sent with the media.
                ptt:
                  type: boolean
                  description: >-
                    Whether the audio is presented as a push-to-talk voice
                    message.
              additionalProperties: false
              description: Voice-message content and metadata.
          required:
            - voice
          additionalProperties: false
        - type: object
          properties:
            location:
              type: object
              properties:
                lat:
                  type: number
                  minimum: -90
                  maximum: 90
                  description: |-
                    Latitude in decimal degrees.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Numeric value | `-90` through `90` (inclusive) |
                long:
                  type: number
                  minimum: -180
                  maximum: 180
                  description: |-
                    Longitude in decimal degrees.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Numeric value | `-180` through `180` (inclusive) |
                address:
                  type: string
                  description: Display address for the location.
              required:
                - lat
                - long
              additionalProperties: false
              description: Structured location values for this one of.
          required:
            - location
          additionalProperties: false
        - type: object
          properties:
            poll:
              type: object
              properties:
                title:
                  type: string
                  minLength: 1
                  description: |-
                    Human-readable title shown to the recipient or operator.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                options:
                  type: array
                  items:
                    type: string
                    minLength: 1
                  minItems: 2
                  description: |-
                    Selectable options carried by this object.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Array size | At least `2` items |
                    | Item string length | At least `1` characters |
                multiSelect:
                  type: boolean
                  description: Whether multi select.
              required:
                - title
                - options
              additionalProperties: false
              description: Structured poll values for this one of.
          required:
            - poll
          additionalProperties: false
        - type: object
          properties:
            contact:
              type: object
              properties:
                vcard:
                  type: string
                  minLength: 1
                  description: |-
                    Specifies vcard for this contact.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
              required:
                - vcard
              additionalProperties: false
              description: Structured contact values for this one of.
          required:
            - contact
          additionalProperties: false
        - type: object
          properties:
            requestPhoneNumber:
              type: object
              properties: {}
              additionalProperties: false
              description: Structured request phone number values for this one of.
          required:
            - requestPhoneNumber
          additionalProperties: false
        - type: object
          properties:
            product:
              type: object
              properties:
                businessOwnerId:
                  type: string
                  pattern: ^[1-9][0-9]{0,18}$
                  description: |-
                    Opaque Polymorfa resource ID. Keep this value as a string.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Pattern | `^[1-9][0-9]{0,18}$` |
                  example: '739182640518203'
                id:
                  type: string
                  minLength: 1
                  description: |-
                    Identifier for this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                title:
                  type: string
                  minLength: 1
                  description: |-
                    Human-readable title shown to the recipient or operator.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                description:
                  type: string
                  minLength: 0
                  description: |-
                    Human-readable description of this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                currencyCode:
                  type: string
                  pattern: ^[A-Z]{3}$
                  description: |-
                    ISO 4217 currency code.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Pattern | `^[A-Z]{3}$` |
                priceAmount1000:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                  description: >-
                    Price expressed in thousandths of the declared currency
                    unit.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Numeric value | `0` through `9007199254740991` (inclusive)
                    |
                salePriceAmount1000:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                  description: >-
                    Discounted price expressed in thousandths of the declared
                    currency unit.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Numeric value | `0` through `9007199254740991` (inclusive)
                    |
                retailerId:
                  type: string
                  minLength: 0
                  description: |-
                    Merchant-defined identifier for the catalog item.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                url:
                  type: string
                  maxLength: 2048
                  format: uri
                  description: |-
                    URL associated with this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At most `2048` characters |
                    | Format | `uri` |
                imageCount:
                  type: integer
                  minimum: 0
                  maximum: 100
                  description: |-
                    Number of images.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Numeric value | `0` through `100` (inclusive) |
                image:
                  type: object
                  properties:
                    url:
                      type: string
                      maxLength: 4096
                      format: uri
                      description: |-
                        URL associated with this resource.

                        <!-- polymorfa-input-table -->
                        **Value constraints**
                        | Constraint | Accepted input |
                        | --- | --- |
                        | String length | At most `4096` characters |
                        | Format | `uri` |
                    base64:
                      type: string
                      maxLength: 87384
                      description: |-
                        Base64-encoded content with no data-URL prefix.

                        <!-- polymorfa-input-table -->
                        **Value constraints**
                        | Constraint | Accepted input |
                        | --- | --- |
                        | String length | At most `87384` characters |
                    mimeType:
                      type: string
                      minLength: 0
                      description: >-
                        IANA media type that matches the media payload.


                        <!-- polymorfa-input-table -->

                        **Value constraints**

                        | Constraint | Accepted input |

                        | --- | --- |

                        | String length | At least `0` characters |

                        | Media type | IANA `type/subtype` value matching the
                        payload, such as `image/jpeg`, `image/png`, or
                        `image/webp` |
                  description: Image attached to or representing this resource.
                body:
                  type: string
                  minLength: 0
                  description: |-
                    Primary text content shown to the recipient.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                footer:
                  type: string
                  minLength: 0
                  description: |-
                    Supplementary footer text shown below the primary content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
              required:
                - businessOwnerId
                - id
                - title
                - currencyCode
                - priceAmount1000
              description: Structured product values for this one of.
          required:
            - product
          additionalProperties: false
        - type: object
          properties:
            productList:
              type: object
              properties:
                businessOwnerId:
                  type: string
                  pattern: ^[1-9][0-9]{0,18}$
                  description: |-
                    Opaque Polymorfa resource ID. Keep this value as a string.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Pattern | `^[1-9][0-9]{0,18}$` |
                  example: '739182640518203'
                title:
                  type: string
                  minLength: 1
                  description: |-
                    Human-readable title shown to the recipient or operator.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                description:
                  type: string
                  minLength: 0
                  description: |-
                    Human-readable description of this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                buttonText:
                  type: string
                  minLength: 1
                  description: |-
                    Text displayed on the action button.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                footer:
                  type: string
                  minLength: 0
                  description: |-
                    Supplementary footer text shown below the primary content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                sections:
                  type: array
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                        minLength: 0
                        description: >-
                          Human-readable title shown to the recipient or
                          operator.


                          <!-- polymorfa-input-table -->

                          **Value constraints**

                          | Constraint | Accepted input |

                          | --- | --- |

                          | String length | At least `0` characters |
                      productIds:
                        type: array
                        items:
                          type: string
                          minLength: 1
                        minItems: 1
                        maxItems: 30
                        description: |-
                          Identifiers of the products included in this section.

                          <!-- polymorfa-input-table -->
                          **Value constraints**
                          | Constraint | Accepted input |
                          | --- | --- |
                          | Array size | `1` through `30` items |
                          | Item string length | At least `1` characters |
                    required:
                      - productIds
                  minItems: 1
                  maxItems: 10
                  description: >-
                    Ordered sections displayed in the interactive message.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Array size | `1` through `10` items |

                    | Total products | At most `30` product IDs across all
                    sections |

                    | Product IDs | Every product ID must be unique across all
                    sections |
              required:
                - businessOwnerId
                - title
                - buttonText
                - sections
              description: Structured product list values for this one of.
          required:
            - productList
          additionalProperties: false
        - type: object
          properties:
            order:
              type: object
              properties:
                id:
                  type: string
                  minLength: 1
                  description: |-
                    Identifier for this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                thumbnailBase64:
                  type: string
                  maxLength: 87384
                  description: |-
                    Base64-encoded thumbnail content with no data-URL prefix.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At most `87384` characters |
                itemCount:
                  type: integer
                  minimum: 1
                  maximum: 100
                  description: |-
                    Number of items.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Numeric value | `1` through `100` (inclusive) |
                status:
                  type: string
                  enum:
                    - inquiry
                    - accepted
                    - declined
                  description: |-
                    Order status sent with this business order.

                    <!-- polymorfa-input-table -->
                    **Allowed values**
                    | Value | Meaning |
                    | --- | --- |
                    | `inquiry` | Inquiry. |
                    | `accepted` | Accepted. |
                    | `declined` | Declined. |
                message:
                  type: string
                  minLength: 0
                  description: |-
                    Outbound message content attached to this business order.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                title:
                  type: string
                  minLength: 0
                  description: |-
                    Human-readable title shown to the recipient or operator.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                sellerId:
                  type: string
                  pattern: ^[1-9][0-9]{0,18}$
                  description: |-
                    Opaque Polymorfa resource ID. Keep this value as a string.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Pattern | `^[1-9][0-9]{0,18}$` |
                  example: '739182640518203'
                token:
                  type: string
                  minLength: 0
                  description: |-
                    Opaque token required by the target operation.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                totalAmount1000:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                  description: >-
                    Order total expressed in thousandths of the declared
                    currency unit.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Numeric value | `0` through `9007199254740991` (inclusive)
                    |
                totalCurrencyCode:
                  type: string
                  pattern: ^[A-Z]{3}$
                  description: |-
                    ISO 4217 currency code used for the order total.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Pattern | `^[A-Z]{3}$` |
                catalogType:
                  type: string
                  minLength: 0
                  description: |-
                    Category assigned to catalog.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
              required:
                - id
                - itemCount
                - status
                - sellerId
                - totalAmount1000
                - totalCurrencyCode
              description: Structured order values for this one of.
          required:
            - order
          additionalProperties: false
        - type: object
          properties:
            list:
              type: object
              properties:
                title:
                  type: string
                  minLength: 1
                  description: |-
                    Human-readable title shown to the recipient or operator.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                description:
                  type: string
                  minLength: 0
                  description: |-
                    Human-readable description of this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                buttonText:
                  type: string
                  minLength: 1
                  description: |-
                    Text displayed on the action button.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                footer:
                  type: string
                  minLength: 0
                  description: |-
                    Supplementary footer text shown below the primary content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                sections:
                  type: array
                  items:
                    type: object
                    properties:
                      title:
                        type: string
                        minLength: 0
                        description: >-
                          Human-readable title shown to the recipient or
                          operator.


                          <!-- polymorfa-input-table -->

                          **Value constraints**

                          | Constraint | Accepted input |

                          | --- | --- |

                          | String length | At least `0` characters |
                      rows:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              minLength: 1
                              description: |-
                                Identifier for this resource.

                                <!-- polymorfa-input-table -->
                                **Value constraints**
                                | Constraint | Accepted input |
                                | --- | --- |
                                | String length | At least `1` characters |
                            title:
                              type: string
                              minLength: 1
                              description: >-
                                Human-readable title shown to the recipient or
                                operator.


                                <!-- polymorfa-input-table -->

                                **Value constraints**

                                | Constraint | Accepted input |

                                | --- | --- |

                                | String length | At least `1` characters |
                            description:
                              type: string
                              minLength: 0
                              description: |-
                                Human-readable description of this resource.

                                <!-- polymorfa-input-table -->
                                **Value constraints**
                                | Constraint | Accepted input |
                                | --- | --- |
                                | String length | At least `0` characters |
                          required:
                            - id
                            - title
                        minItems: 1
                        maxItems: 30
                        description: |-
                          Rows associated with this section.

                          <!-- polymorfa-input-table -->
                          **Value constraints**
                          | Constraint | Accepted input |
                          | --- | --- |
                          | Array size | `1` through `30` items |
                    required:
                      - rows
                  minItems: 1
                  maxItems: 10
                  description: >-
                    Ordered sections displayed in the interactive message.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Array size | `1` through `10` items |

                    | Total rows | At most `30` rows across all sections |

                    | Row IDs | Every row ID must be unique across all sections
                    |
              required:
                - title
                - buttonText
                - sections
              description: >-
                On an official WhatsApp Business number, `title` is the header
                (at most 60 characters) and `description` the body (at most
                1,024 characters); without `description`, `title` is the body.
                There, each section title allows at most 24 characters and is
                required when the list has more than one section, lists allow at
                most 10 rows in total, row titles at most 24 characters, row IDs
                at most 200, row descriptions at most 72, `buttonText` at most
                20 and `footer` at most 60. Every number also limits
                `buttonText` to 64 UTF-8 bytes, row `id` to 256 bytes and
                `title` and `description` to 256 and 4,096 bytes, so multibyte
                text reaches those byte limits before the character limits.
                Content outside any limit returns `400`.
          required:
            - list
          additionalProperties: false
        - type: object
          properties:
            buttons:
              type: object
              properties:
                title:
                  type: string
                  minLength: 0
                  description: |-
                    Human-readable title shown to the recipient or operator.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                body:
                  type: string
                  minLength: 1
                  description: |-
                    Primary text content shown to the recipient.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                footer:
                  type: string
                  minLength: 0
                  description: |-
                    Supplementary footer text shown below the primary content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                buttons:
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - url
                            description: |-
                              Type discriminator for this object.

                              <!-- polymorfa-input-table -->
                              **Allowed values**
                              | Value | Meaning |
                              | --- | --- |
                              | `url` | Url. |
                          text:
                            type: string
                            minLength: 1
                            description: |-
                              Text content carried by this object.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `1` characters |
                          url:
                            type: string
                            maxLength: 2048
                            format: uri
                            description: |-
                              URL associated with this resource.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At most `2048` characters |
                              | Format | `uri` |
                        required:
                          - type
                          - text
                          - url
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - call
                            description: |-
                              Type discriminator for this object.

                              <!-- polymorfa-input-table -->
                              **Allowed values**
                              | Value | Meaning |
                              | --- | --- |
                              | `call` | Call. |
                          text:
                            type: string
                            minLength: 1
                            description: |-
                              Text content carried by this object.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `1` characters |
                          phoneNumber:
                            type: string
                            pattern: ^\+?\d{6,20}$
                            description: |-
                              Phone number in international format.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | Pattern | `^\+?\d{6,20}$` |
                        required:
                          - type
                          - text
                          - phoneNumber
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - reply
                            description: |-
                              Type discriminator for this object.

                              <!-- polymorfa-input-table -->
                              **Allowed values**
                              | Value | Meaning |
                              | --- | --- |
                              | `reply` | Reply. |
                          text:
                            type: string
                            minLength: 1
                            description: |-
                              Text content carried by this object.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `1` characters |
                          id:
                            type: string
                            minLength: 1
                            description: |-
                              Identifier for this resource.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `1` characters |
                        required:
                          - type
                          - text
                          - id
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - copy
                            description: |-
                              Type discriminator for this object.

                              <!-- polymorfa-input-table -->
                              **Allowed values**
                              | Value | Meaning |
                              | --- | --- |
                              | `copy` | Copy. |
                          text:
                            type: string
                            minLength: 1
                            description: |-
                              Text content carried by this object.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `1` characters |
                          copyCode:
                            type: string
                            minLength: 1
                            description: >-
                              Text copied when the recipient activates the
                              copy-code button.


                              <!-- polymorfa-input-table -->

                              **Value constraints**

                              | Constraint | Accepted input |

                              | --- | --- |

                              | String length | At least `1` characters |
                        required:
                          - type
                          - text
                          - copyCode
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - catalog
                            description: |-
                              Type discriminator for this object.

                              <!-- polymorfa-input-table -->
                              **Allowed values**
                              | Value | Meaning |
                              | --- | --- |
                              | `catalog` | Catalog. |
                          text:
                            type: string
                            minLength: 1
                            description: |-
                              Text content carried by this object.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `1` characters |
                          businessPhoneNumber:
                            type: string
                            pattern: ^\+?\d{6,20}$
                            description: >-
                              WhatsApp business phone number whose catalog is
                              opened by this button.


                              <!-- polymorfa-input-table -->

                              **Value constraints**

                              | Constraint | Accepted input |

                              | --- | --- |

                              | Pattern | `^\+?\d{6,20}$` |
                          catalogProductId:
                            type: string
                            minLength: 0
                            description: |-
                              Identifier for the catalog product.

                              <!-- polymorfa-input-table -->
                              **Value constraints**
                              | Constraint | Accepted input |
                              | --- | --- |
                              | String length | At least `0` characters |
                        required:
                          - type
                          - text
                          - businessPhoneNumber
                  minItems: 1
                  maxItems: 3
                  description: >-
                    Interactive buttons displayed with the message.


                    <!-- polymorfa-input-table -->

                    **Accepted alternatives**

                    | Item alternative | Accepted input |

                    | --- | --- |

                    | Item alternative 1 | Type: `object`; Field `type`: `url`;
                    Required fields: `type`, `text`, `url` |

                    | Item alternative 2 | Type: `object`; Field `type`: `call`;
                    Required fields: `type`, `text`, `phoneNumber` |

                    | Item alternative 3 | Type: `object`; Field `type`:
                    `reply`; Required fields: `type`, `text`, `id` |

                    | Item alternative 4 | Type: `object`; Field `type`: `copy`;
                    Required fields: `type`, `text`, `copyCode` |

                    | Item alternative 5 | Type: `object`; Field `type`:
                    `catalog`; Required fields: `type`, `text`,
                    `businessPhoneNumber` |


                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | Array size | `1` through `3` items |
              required:
                - body
                - buttons
              description: >-
                On an official WhatsApp Business number, only `reply` buttons
                are sent; other button types return `501`. There, `body` allows
                at most 1,024 characters, `title` and `footer` at most 60, and
                each button needs a unique `id` and a unique `text` of at most
                20 characters. Every number also limits each button `id` to 256
                UTF-8 bytes. Content outside any limit returns `400`.
          required:
            - buttons
          additionalProperties: false
        - type: object
          properties:
            addressMessage:
              type: object
              properties:
                body:
                  type: string
                  minLength: 1
                  description: |-
                    Primary text content shown to the recipient.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                buttonText:
                  type: string
                  minLength: 1
                  description: |-
                    Text displayed on the action button.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                footer:
                  type: string
                  minLength: 0
                  description: |-
                    Supplementary footer text shown below the primary content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                country:
                  type: string
                  pattern: ^[A-Z]{2}$
                  description: |-
                    ISO 3166-1 alpha-2 country code.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | Pattern | `^[A-Z]{2}$` |
              required:
                - body
              description: Structured address message values for this one of.
          required:
            - addressMessage
          additionalProperties: false
        - type: object
          properties:
            flow:
              type: object
              properties:
                body:
                  type: string
                  minLength: 1
                  description: |-
                    Primary text content shown to the recipient.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                buttonText:
                  type: string
                  minLength: 1
                  description: |-
                    Text displayed on the action button.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                footer:
                  type: string
                  minLength: 0
                  description: |-
                    Supplementary footer text shown below the primary content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                id:
                  type: string
                  minLength: 1
                  description: |-
                    Identifier for this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                token:
                  type: string
                  minLength: 1
                  description: |-
                    Opaque token required by the target operation.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                action:
                  type: string
                  enum:
                    - navigate
                    - data_exchange
                  description: |-
                    Action performed when the recipient activates this control.

                    <!-- polymorfa-input-table -->
                    **Allowed values**
                    | Value | Meaning |
                    | --- | --- |
                    | `navigate` | Navigate. |
                    | `data_exchange` | Data exchange. |
                screen:
                  type: string
                  minLength: 0
                  description: |-
                    Flow screen opened when the recipient activates the message.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `0` characters |
                dataJson:
                  type: string
                  minLength: 0
                  description: >-
                    JSON object encoded as a string and supplied to the Flow
                    interaction.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | String length | At least `0` characters |

                    | Serialized value | A non-null JSON object; arrays, scalar
                    values, and invalid JSON are not accepted |

                    | UTF-8 size | At most `16` KiB (`16,384` bytes) |
              required:
                - body
                - buttonText
                - id
                - token
                - action
              oneOf:
                - properties:
                    action:
                      enum:
                        - navigate
                      description: |-
                        Action represented by this one of.

                        <!-- polymorfa-input-table -->
                        **Allowed values**
                        | Value | Meaning |
                        | --- | --- |
                        | `navigate` | Navigate. |
                  required:
                    - screen
                - properties:
                    action:
                      enum:
                        - data_exchange
                      description: |-
                        Action represented by this one of.

                        <!-- polymorfa-input-table -->
                        **Allowed values**
                        | Value | Meaning |
                        | --- | --- |
                        | `data_exchange` | Data exchange. |
                  not:
                    anyOf:
                      - required:
                          - screen
                      - required:
                          - dataJson
              description: >-
                Structured flow values for this one of.


                <!-- polymorfa-input-table -->

                **Accepted alternatives**

                | Alternative | Accepted input |

                | --- | --- |

                | Alternative 1 | Type: `object`; Field `action`: `navigate`;
                Required fields: `screen` |

                | Alternative 2 | Type: `object`; Field `action`:
                `data_exchange`; Forbidden fields: `screen`, `dataJson` |
          required:
            - flow
          additionalProperties: false
        - type: object
          properties:
            callPermissionRequest:
              type: object
              properties:
                body:
                  type: string
                  minLength: 1
                  maxLength: 1024
                  description: >-
                    Why you want to call, shown above WhatsApp's allow and
                    decline buttons. 1 to 1,024 Unicode characters.


                    <!-- polymorfa-input-table -->

                    **Value constraints**

                    | Constraint | Accepted input |

                    | --- | --- |

                    | String length | `1` through `1024` characters |
              required:
                - body
              additionalProperties: false
              description: >-
                Ask the person for permission to call them. Cloud API numbers
                only; WhatsApp limits how often you can ask.
          required:
            - callPermissionRequest
          additionalProperties: false
        - type: object
          properties:
            template:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  description: |-
                    Human-readable name for this resource.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `1` characters |
                language:
                  type: string
                  minLength: 2
                  description: |-
                    Language or locale code used for this content.

                    <!-- polymorfa-input-table -->
                    **Value constraints**
                    | Constraint | Accepted input |
                    | --- | --- |
                    | String length | At least `2` characters |
                components:
                  type: array
                  items: {}
                  description: Structured components that make up this message or template.
              required:
                - name
                - language
              additionalProperties: false
              description: Structured template values for this one of.
          required:
            - template
          additionalProperties: false
    native__SentMessage:
      type: object
      properties:
        id:
          type: string
          pattern: ^[1-9][0-9]{0,18}$
          description: |-
            Opaque Polymorfa resource ID. Keep this value as a string.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Pattern | `^[1-9][0-9]{0,18}$` |
          example: '739182640518203'
        whatsapp_ids:
          allOf:
            - $ref: '#/components/schemas/native__WhatsAppMessageIds'
          description: >-
            Exact observed provider references under linked_devices,
            official_api, or both. Use the Polymorfa id for message actions.


            <!-- polymorfa-input-table -->

            **Accepted alternatives**

            | Alternative | Accepted input |

            | --- | --- |

            | Alternative 1 | Type: `object`; Required fields: `linked_devices`
            |

            | Alternative 2 | Type: `object`; Required fields: `official_api` |
        whatsapp_id:
          type: string
          minLength: 1
          maxLength: 512
          description: >-
            Temporary singular provider reference for older consumers. Use
            whatsapp_ids for transport-specific references.


            <!-- polymorfa-input-table -->

            **Value constraints**

            | Constraint | Accepted input |

            | --- | --- |

            | String length | `1` through `512` characters |
          deprecated: true
        conversation:
          allOf:
            - $ref: '#/components/schemas/native__ConversationIdentity'
            - description: >-
                The message's conversation, including its public ID and known
                aliases.
          description: Public conversation identifier or E.164 phone number.
        timestamp:
          type: string
          format: date-time
          description: |-
            ISO 8601 timestamp associated with this event.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Format | `date-time` |
        status:
          type: string
          description: >-
            Upstream acceptance status. Delivery and read receipts arrive
            separately.
        type:
          type: string
          description: Type discriminator for this object.
        content:
          allOf:
            - $ref: '#/components/schemas/native__MessageContent'
          description: >-
            Specifies content for this native sent message.


            <!-- polymorfa-input-table -->

            **Accepted alternatives**

            | Alternative | Accepted input |

            | --- | --- |

            | Alternative 1 | Type: `object`; Required fields: `text` |

            | Alternative 2 | Type: `object`; Required fields: `image` |

            | Alternative 3 | Type: `object`; Required fields: `video` |

            | Alternative 4 | Type: `object`; Required fields: `file` |

            | Alternative 5 | Type: `object`; Required fields: `voice` |

            | Alternative 6 | Type: `object`; Required fields: `location` |

            | Alternative 7 | Type: `object`; Required fields: `poll` |

            | Alternative 8 | Type: `object`; Required fields: `contact` |

            | Alternative 9 | Type: `object`; Required fields:
            `requestPhoneNumber` |

            | Alternative 10 | Type: `object`; Required fields: `product` |

            | Alternative 11 | Type: `object`; Required fields: `productList` |

            | Alternative 12 | Type: `object`; Required fields: `order` |

            | Alternative 13 | Type: `object`; Required fields: `list` |

            | Alternative 14 | Type: `object`; Required fields: `buttons` |

            | Alternative 15 | Type: `object`; Required fields: `addressMessage`
            |

            | Alternative 16 | Type: `object`; Required fields: `flow` |

            | Alternative 17 | Type: `object`; Required fields:
            `callPermissionRequest` |

            | Alternative 18 | Type: `object`; Required fields: `template` |
        mediaId:
          type: string
          description: Identifier for the media.
      required:
        - id
        - whatsapp_ids
        - conversation
        - timestamp
        - status
        - type
        - content
    native__WhatsAppMessageIds:
      anyOf:
        - type: object
          properties:
            linked_devices:
              type: string
              minLength: 1
              maxLength: 512
              description: |-
                Specifies linked devices for this any of.

                <!-- polymorfa-input-table -->
                **Value constraints**
                | Constraint | Accepted input |
                | --- | --- |
                | String length | `1` through `512` characters |
            official_api:
              type: string
              minLength: 1
              maxLength: 512
              description: |-
                Specifies official api for this any of.

                <!-- polymorfa-input-table -->
                **Value constraints**
                | Constraint | Accepted input |
                | --- | --- |
                | String length | `1` through `512` characters |
          required:
            - linked_devices
          additionalProperties: false
        - type: object
          properties:
            linked_devices:
              type: string
              minLength: 1
              maxLength: 512
              description: |-
                Specifies linked devices for this any of.

                <!-- polymorfa-input-table -->
                **Value constraints**
                | Constraint | Accepted input |
                | --- | --- |
                | String length | `1` through `512` characters |
            official_api:
              type: string
              minLength: 1
              maxLength: 512
              description: |-
                Specifies official api for this any of.

                <!-- polymorfa-input-table -->
                **Value constraints**
                | Constraint | Accepted input |
                | --- | --- |
                | String length | `1` through `512` characters |
          required:
            - official_api
          additionalProperties: false
      description: >-
        Exact message references observed through Linked Devices, the Official
        API, or both. Use the Polymorfa message id for actions and replies.
        Unknown provider references are omitted.
    native__ConversationIdentity:
      type: object
      properties:
        id:
          type: string
          pattern: ^[1-9][0-9]{0,18}$
          description: |-
            Opaque Polymorfa resource ID. Keep this value as a string.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Pattern | `^[1-9][0-9]{0,18}$` |
          example: '739182640518203'
        phoneNumber:
          type: string
          pattern: ^\+[1-9]\d{1,14}$
          description: |-
            Phone number in international format.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | Pattern | `^\+[1-9]\d{1,14}$` |
        bsuid:
          type: string
          pattern: ^[A-Z]{2}\.[A-Za-z0-9]{1,128}$
          description: >-
            Business-scoped user identifier (BSUID), scoped to the owning
            business portfolio.


            <!-- polymorfa-input-table -->

            **Value constraints**

            | Constraint | Accepted input |

            | --- | --- |

            | Pattern | `^[A-Z]{2}\.[A-Za-z0-9]{1,128}$` |
        username:
          type: string
          minLength: 1
          maxLength: 256
          description: |-
            WhatsApp username when one is available.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | String length | `1` through `256` characters |
      required:
        - id
      additionalProperties: false
  headers:
    native__X-RateLimit-Limit:
      description: >-
        Team request quota per rolling minute, when the per-team request limiter
        applies.
      schema:
        type: integer
        minimum: 1
    native__X-RateLimit-Remaining:
      description: >-
        Requests left in the per-team quota; zero when this limiter rejects the
        request.
      schema:
        type: integer
        minimum: 0
    native__X-RateLimit-Reset:
      description: >-
        Unix timestamp in seconds when the oldest counted request leaves the
        rolling window, when the per-team request limiter applies. Follow
        Retry-After on a rejected request.
      schema:
        type: integer
        minimum: 0
  securitySchemes:
    native__BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Polymorfa organization key (pmfa_ prefix), project token (pmfa_pt_
        prefix) where supported, or short-lived client token (pmfa_ct_ prefix).
        Organization and project keys may be personal or service-account owned
        and enforce selected action scopes. Organization keys cover the team and
        its projects; project tokens stay inside one project. Client tokens stay
        inside their live project and session and enforce their client rules.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.