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

# The Reaction Object

> An emoji reaction on a WhatsApp message, synced from a connected org phone. Reactions reference the message they were applied to via message_id and carry who reacted (sender_id) and with which emoji (reaction).

<ResponseExample>
  ```json The Reaction Object theme={null}
  {
    "reaction_id": "true_120363000000000000@g.us_AAAAAAAAAAAAAAAAAAAAAA_911111111111@c.us",
    "org_id": "00000000-0000-0000-0000-000000000000",
    "org_phone": "911111111111@c.us",
    "chat_id": "120363000000000000@g.us",
    "message_id": "false_120363000000000000@g.us_AAAAAAAAAAAAAAAAAAAA_922222222222@c.us",
    "sender_id": "911111111111@c.us",
    "reaction": "👍",
    "timestamp": "2026-01-15T09:30:00+00:00",
    "ack": 3,
    "read": true,
    "id": {
      "id": "AAAAAAAAAAAAAAAAAAAAAA",
      "fromMe": true,
      "remote": "120363000000000000@g.us",
      "_serialized": "true_120363000000000000@g.us_AAAAAAAAAAAAAAAAAAAAAA_911111111111@c.us",
      "participant": "911111111111@c.us"
    },
    "msg_id": {
      "id": "AAAAAAAAAAAAAAAAAAAAAA",
      "fromMe": true,
      "remote": "120363000000000000@g.us",
      "_serialized": "true_120363000000000000@g.us_AAAAAAAAAAAAAAAAAAAAAA_911111111111@c.us",
      "participant": "911111111111@c.us"
    },
    "unique_id": "AAAAAAAAAAAAAAAAAAAA",
    "orphan": 0,
    "orphan_reason": null
  }
  ```
</ResponseExample>

**Attributes**

<ParamField path="reaction_id" type="string">
  Unique id of the reaction — the serialized WhatsApp id of the reaction event, in the form \<fromMe>*\<chat\_id>*\<wa\_id>\_\<sender>
</ParamField>

<ParamField path="org_id" type="string">
  Id of the organization the reaction belongs to
</ParamField>

<ParamField path="org_phone" type="string">
  Org phone (WhatsApp account) the reaction was synced under, as country code + number suffixed with @c.us. Pass the x-phone header to scope results to one org phone.
</ParamField>

<ParamField path="chat_id" type="string">
  Chat the reaction happened in — \<group-id>@g.us for group chats, \<countrycode>\<number>@c.us for 1-1 chats. Use it as the chat\_id query filter.
</ParamField>

<ParamField path="message_id" type="string">
  message\_id of the message that was reacted to, in the form \<fromMe>*\<chat\_id>*\<wa\_id>\_\<sender>. Use it as the message\_id query filter to fetch all reactions on one message.
</ParamField>

<ParamField path="sender_id" type="string">
  WhatsApp id of who sent the reaction, as \<countrycode>\<number>@c.us. This is the org phone itself when the reaction was sent from the connected phone.
</ParamField>

<ParamField path="reaction" type="string">
  The reaction emoji. Empty or null when the record carries no emoji (e.g. the sender removed their reaction).
</ParamField>

<ParamField path="timestamp" type="string">
  When the reaction was sent, as an ISO 8601 timestamp. Reactions are ordered by this field (newest first) and filtered on it by start\_time/end\_time.
</ParamField>

<ParamField path="ack" type="integer">
  Delivery status of the reaction, tracked for reactions sent by the org phone: -1 failed, 0 pending, 1 sent to WhatsApp servers, 2 delivered to WhatsApp, 3 delivered to the recipient, 4 read, 5 played. null when not tracked.
</ParamField>

<ParamField path="read" type="boolean">
  Whether the reaction has been marked as read in Periskope. null when not tracked.
</ParamField>

<ParamField path="id" type="object">
  Raw WhatsApp id object of the reaction event itself. null when not available.

  <Expandable title="properties">
    <ParamField path="id" type="string">
      The WhatsApp message id — the unique id WhatsApp assigns to the message on the device
    </ParamField>

    <ParamField path="fromMe" type="boolean">
      Whether the message was sent by the connected org phone (true) or received from a contact (false)
    </ParamField>

    <ParamField path="remote" type="string">
      The chat the message belongs to — \<group-id>@g.us for group chats, \<countrycode>\<number>@c.us for 1-1 chats
    </ParamField>

    <ParamField path="_serialized" type="string">
      The full serialized id, in the form \<fromMe>*\<chat\_id>*\<wa\_id> with the sender appended in group chats
    </ParamField>

    <ParamField path="participant" type="string">
      WhatsApp id of the sending participant within a group chat, as \<countrycode>\<number>@c.us. Absent for 1-1 chats.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField path="msg_id" type="object">
  Raw WhatsApp id object of the message that was reacted to. null when not available.

  <Expandable title="properties">
    <ParamField path="id" type="string">
      The WhatsApp message id — the unique id WhatsApp assigns to the message on the device
    </ParamField>

    <ParamField path="fromMe" type="boolean">
      Whether the message was sent by the connected org phone (true) or received from a contact (false)
    </ParamField>

    <ParamField path="remote" type="string">
      The chat the message belongs to — \<group-id>@g.us for group chats, \<countrycode>\<number>@c.us for 1-1 chats
    </ParamField>

    <ParamField path="_serialized" type="string">
      The full serialized id, in the form \<fromMe>*\<chat\_id>*\<wa\_id> with the sender appended in group chats
    </ParamField>

    <ParamField path="participant" type="string">
      WhatsApp id of the sending participant within a group chat, as \<countrycode>\<number>@c.us. Absent for 1-1 chats.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField path="unique_id" type="string">
  The WhatsApp message id portion of the reacted-to message (msg\_id.id). null when not available.
</ParamField>

<ParamField path="orphan" type="integer">
  Internal flag set by the WhatsApp sync pipeline. 0 or null for reactions that synced normally.
</ParamField>

<ParamField path="orphan_reason" type="string">
  Internal reason recorded by the sync pipeline when orphan is set. null for reactions that synced normally.
</ParamField>


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