> ## 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 reaction

> **Protocols:** Linked Device API · Meta Cloud API · Polymorfa Hybrid Link

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



## OpenAPI

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


        **Required scope:** `messages:write`
      operationId: nativeSendReaction
      parameters:
        - schema:
            type: string
          required: true
          name: session
          in: path
          description: Identifier of the connected Polymorfa session.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/native__ReactRequest'
      responses:
        '200':
          description: Reaction sent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__SendReactionResponse'
        '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'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: invalid_request_error
                  code: invalid_parameter
                  message: Correct the invalid request field.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#invalid-parameter
        '401':
          description: Invalid credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: authentication_error
                  code: invalid_credential
                  message: Supply a valid credential.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#invalid-credential
        '403':
          description: Missing scope or resource access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: permission_error
                  code: permission_denied
                  message: The credential does not have access to this resource.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#permission-denied
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: invalid_request_error
                  code: resource_not_found
                  message: The resource is unavailable to this caller.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#resource-not-found
        '500':
          description: Unexpected service failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: api_error
                  code: internal_error
                  message: >-
                    An unexpected service failure occurred. Keep the request ID
                    for support.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#internal-error
        '502':
          description: Messaging provider failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: upstream_error
                  code: upstream_failure
                  message: The messaging provider could not complete the request.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#upstream-failure
        '503':
          description: Session or service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: api_error
                  code: service_unavailable
                  message: >-
                    A required service is unavailable. Check completion before
                    repeating a write.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#service-unavailable
        '504':
          description: Result unknown after timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/native__PublicError'
              example:
                error:
                  type: api_error
                  code: result_unknown
                  message: >-
                    The result was not obtained before the deadline. Check
                    completion before repeating a write.
                  param: null
                data: null
                docs: https://docs.polymorfa.com/api/errors#result-unknown
      security:
        - native__BearerAuth: []
      servers:
        - url: https://api.polymorfa.com
components:
  schemas:
    native__ReactRequest:
      type: object
      properties:
        conversation:
          allOf:
            - $ref: '#/components/schemas/native__ConversationIdentifier'
          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` |
        id:
          type: string
          minLength: 1
          description: |-
            Identifier for this resource.

            <!-- polymorfa-input-table -->
            **Value constraints**
            | Constraint | Accepted input |
            | --- | --- |
            | String length | At least `1` characters |
        reaction:
          type: string
          description: Reaction applied to the referenced message.
      required:
        - conversation
        - id
        - reaction
      additionalProperties: false
    native__SendReactionResponse:
      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__MessageReceipt'
          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
                - method_not_allowed
                - permission_denied
                - missing_scope
                - resource_not_found
                - media_fetch_failed
                - resource_gone
                - state_conflict
                - rate_limit_exceeded
                - internal_error
                - operation_not_supported
                - upstream_failure
                - service_unavailable
                - credential_verification_unavailable
                - session_not_ready
                - command_dispatch_failed
                - result_unknown
              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. |

                | `method_not_allowed` | Method not allowed. |

                | `permission_denied` | Permission denied. |

                | `missing_scope` | Missing scope. |

                | `resource_not_found` | Resource not found. |

                | `media_fetch_failed` | Media fetch failed. |

                | `resource_gone` | Resource gone. |

                | `state_conflict` | State conflict. |

                | `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. |
            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` |
          required:
            - type
            - code
            - message
            - param
          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__ConversationIdentifier:
      type: object
      properties:
        id:
          type: string
          description: >-
            Stable conversation ID. Linked Device users use pmfa_lid_, groups
            use pmfa_gid_, bots use pmfa_botid_, and Cloud users use their
            business-scoped ID.
          example: pmfa_lid_123456789
        phoneNumber:
          type: string
          pattern: ^\+[1-9]\d{1,14}$
          description: >-
            E.164 phone number. Supply it alone or alongside id; id selects the
            conversation when both are present.


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

            **Value constraints**

            | Constraint | Accepted input |

            | --- | --- |

            | Pattern | `^\+[1-9]\d{1,14}$` |
          example: '+15550001111'
      additionalProperties: false
      description: >-
        ConversationIdentifier identified by an ID, an E.164 phone number, or
        both. At least one is required. When both are supplied, the ID selects
        the conversation and phoneNumber is an alias. User IDs use pmfa_lid_,
        group IDs use pmfa_gid_, and bot IDs use pmfa_botid_. Cloud API user IDs
        are business-scoped.
      anyOf:
        - required:
            - id
        - required:
            - phoneNumber
    native__MessageReceipt:
      type: object
      properties:
        id:
          type: string
          description: Identifier for this resource.
        conversation:
          allOf:
            - $ref: '#/components/schemas/native__ConversationIdentifier'
          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` |
        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.
      required:
        - id
        - conversation
        - timestamp
        - status
  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.

````