For AI agents: markdown of this page — /docs-content-en/bots/events/user-events.md documentation index — /llms.txt
User events (ONIMV2*)
The common first step is the subscription: POST /v1/chats/events/subscribe (scope im, not imbot). Without an active subscription, Bitrix24 does not register user events.
After that, events are fetched in one of two ways:
- Together with bot events — pass
withUserEvents=trueto bot event polling. Bot events (ONIMBOTV2*) and user events (ONIMV2*) arrive in the sameeventsarray. - As a separate poll on behalf of the user —
GET /v1/chats/events. Does not require a registered bot; suitable for agents acting on behalf of a user.
Event list
| Event | Description |
|---|---|
| EventONIMV2MESSAGEADD | DescriptionNew message in a subscribed chat |
EventONIMV2MESSAGEUPDATE |
DescriptionMessage edited |
EventONIMV2MESSAGEDELETE |
DescriptionMessage deleted |
EventONIMV2JOINCHAT |
DescriptionA participant joined the chat |
EventONIMV2REACTIONCHANGE |
DescriptionReaction changed |
ONIMV2MESSAGEADD
A new message in a subscribed chat. The message object has the same structure as in bot events. In the GET /v1/chats/events response, the keys inside message.params arrive in camelCase.
{
"eventId": 46,
"type": "ONIMV2MESSAGEADD",
"date": "2026-04-13T17:15:14+00:00",
"data": {
"message": {
"id": 1520,
"chatId": 123,
"authorId": 17,
"text": "Yes, I agree",
"isSystem": false,
"forward": null,
"params": { "replyId": "1518" }
},
"chat": { "id": 123, "dialogId": "chat123", "type": "chat", "name": "Work chat" },
"user": { "id": 17, "name": "John Brown", "type": "user" },
"language": "en",
"additionalMessages": [
{ "id": 1518, "chatId": 123, "authorId": 5, "text": "Can you confirm the meeting at 15:00?", "isSystem": false, "params": [] }
]
}
}
data fields:
| Field | Type | Description |
|---|---|---|
Fieldmessage.id |
Typenumber | DescriptionMessage ID |
Fieldmessage.text |
Typestring | DescriptionMessage text |
Fieldmessage.chatId |
Typenumber | DescriptionChat ID |
Fieldmessage.authorId |
Typenumber | DescriptionAuthor ID. List: GET /v1/users |
Fieldmessage.params |
Typeobject | array | DescriptionMessage parameters. For a message without parameters, this is an empty array [] |
Fieldmessage.params.replyId |
Typestring | DescriptionReply to a message: the ID of the quoted message |
Fieldchat.dialogId |
Typestring | DescriptionDialog ID |
Fielduser |
Typeobject | DescriptionMessage author (id, name, etc.) |
Fieldlanguage |
Typestring | DescriptionUser interface language |
FieldadditionalMessages |
Typearray | DescriptionRelated messages. In a reply event, the quoted message arrives here. In other events, it is an empty array |
Known specifics
Separate scope: subscribing and unsubscribing require the im scope, not imbot.