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
ParametermessageId (path) Typenumber Requiredyes Default— DescriptionMessage ID, a positive integer — from the chat feed (GET /v1/chats/:dialogId/messages) or from the response of sending
Parameterreaction (query) Typestring Requiredno Default— DescriptionOnly reactions with this code, in camelCase
ParameterlastId (query) Typenumber Requiredno Default— DescriptionCursor: the id of the last reaction of the previous page. The boundary itself is not included
Parameterorder (query) Typestring Requiredno Defaultdesc Descriptiondesc — newest first, asc — oldest first
Parameterlimit (query) Typenumber Requiredno Default50 DescriptionReactions 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
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata.reactions Typearray DescriptionReactions on the page
Fielddata.reactions[].id Typenumber DescriptionReaction ID — the lastId cursor for the next page
Fielddata.reactions[].messageId Typenumber DescriptionMessage ID
Fielddata.reactions[].userId Typenumber DescriptionID of the user who reacted
Fielddata.reactions[].reaction Typestring DescriptionReaction code
Fielddata.reactions[].dateCreate Typestring DescriptionWhen the reaction was added (ISO 8601)
Fielddata.users Typearray DescriptionUsers who added the reactions on this page: id, name, firstName, lastName, avatar and other messenger user fields
Fielddata.hasNextPage Typeboolean DescriptionThere are more reactions after this page
Fieldmeta.requestedLimit Typenumber DescriptionThe limit you passed, when it fell outside the 1 to 200 range
Fieldmeta.appliedLimit Typenumber DescriptionThe 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
HTTP400 CodeINVALID_PARAMS DescriptionmessageId 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
HTTP404 CodeENTITY_NOT_FOUND DescriptionBitrix24 reported "not found"; the portal code is in error.b24Code
HTTP422 CodeBITRIX_ERROR DescriptionBitrix24 returned an error; the code is in error.b24Code, for example MESSAGE_NOT_FOUND — there is no such message
HTTP403 CodeSCOPE_DENIED DescriptionThe API key does not have the im scope
HTTP403 CodeWRITE_BLOCKED_READONLY_KEY DescriptionReading in READONLY mode is not available to an application key, a management key or a key whose owner type is unconfirmed
HTTP401 CodeTOKEN_MISSING DescriptionThe 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