For AI agents: markdown of this page — /docs-content-en/chats/messages/reactions-list.md documentation index — /llms.txt

List reactions to a message

GET /v1/chats/messages/:messageId/reactions

Returns, page by page, who reacted to a message and how.

The chat is resolved from the message, so no dialogId is needed. Reaction codes are listed on the Add a reaction page.

Parameters

Parameter Type Required Default Description
messageId (path) number yes — Message ID, a positive integer — from the chat feed (GET /v1/chats/:dialogId/messages) or from the response of sending
reaction (query) string no — Only reactions with this code, in camelCase
lastId (query) number no — Cursor: the id of the last reaction of the previous page. The boundary itself is not included
order (query) string no desc desc — newest first, asc — oldest first
limit (query) number no 50 Reactions per page, from 1 to 200: a value outside the range is clamped and echoed in meta.requestedLimit and meta.appliedLimit

Any other parameter or a repeated parameter is rejected with 400 INVALID_PARAMS.

Examples

curl — personal key

Terminal
curl -X GET "https://vibecode.bitrix24.com/v1/chats/messages/1001/reactions?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl -X GET "https://vibecode.bitrix24.com/v1/chats/messages/1001/reactions?limit=20" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/chats/messages/1001/reactions?limit=20', {
  method: 'GET',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { data } = await res.json()
console.log('Reactions:', data.reactions.map((r) => `${r.userId}: ${r.reaction}`))

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/chats/messages/1001/reactions?limit=20', {
  method: 'GET',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
console.log('Reactions:', data.reactions.map((r) => `${r.userId}: ${r.reaction}`))

Response fields

Field Type Description
success boolean Always true on success
data.reactions array Reactions on the page
data.reactions[].id number Reaction ID — the lastId cursor for the next page
data.reactions[].messageId number Message ID
data.reactions[].userId number ID of the user who reacted
data.reactions[].reaction string Reaction code
data.reactions[].dateCreate string When the reaction was added (ISO 8601)
data.users array Users who added the reactions on this page: id, name, firstName, lastName, avatar and other messenger user fields
data.hasNextPage boolean There are more reactions after this page
meta.requestedLimit number The limit you passed, when it fell outside the 1 to 200 range
meta.appliedLimit number The limit value applied — only when it was clamped to a bound

Response example

The main user fields are shown.

JSON
{
  "success": true,
  "data": {
    "users": [
      {
        "id": 5,
        "active": true,
        "name": "Anna Smith",
        "firstName": "Anna",
        "lastName": "Smith",
        "avatar": "",
        "bot": false,
        "type": "user"
      }
    ],
    "reactions": [
      {
        "id": 13,
        "messageId": 1001,
        "userId": 5,
        "reaction": "fire",
        "dateCreate": "2026-10-06T09:18:54+00:00"
      },
      {
        "id": 9,
        "messageId": 1001,
        "userId": 5,
        "reaction": "like",
        "dateCreate": "2026-10-06T09:18:53+00:00"
      }
    ],
    "hasNextPage": false
  }
}

Error response example

422 — there is no such message:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "MESSAGE_NOT_FOUND",
    "b24Code": "MESSAGE_NOT_FOUND"
  }
}

Errors

HTTP Code Description
400 INVALID_PARAMS messageId is not a positive integer, a parameter other than reaction, lastId, order, limit, a repeated parameter, a reaction code not in camelCase or an invalid value. Checked before any call to Bitrix24
404 ENTITY_NOT_FOUND Bitrix24 reported "not found"; the portal code is in error.b24Code
422 BITRIX_ERROR Bitrix24 returned an error; the code is in error.b24Code, for example MESSAGE_NOT_FOUND — there is no such message
403 SCOPE_DENIED The API key does not have the im scope
403 WRITE_BLOCKED_READONLY_KEY Reading in READONLY mode is not available to an application key, a management key or a key whose owner type is unconfirmed
401 TOKEN_MISSING The API key has no Bitrix24 tokens configured

Full list of common API errors — Errors.

Known specifics

The reactions list may make you a member. When the message's chat allows auto-join, reading the list may add the current user as a member — as loading a chat does. An ordinary employee personal key in READONLY mode may read the list. This read does not itself mark messages read.

Counters are in the feed. The reaction summary per message on a page — reactionCounters, ownReactions — comes in the reactions collection of the feed in v2 mode. This endpoint is for finding out who exactly reacted.

See also