## Поставить реакцию

`POST /v1/chats/messages/:messageId/reactions`

Ставит на сообщение реакцию текущего пользователя. Чат определяется по сообщению, `dialogId` не нужен.

Реакция задаётся кодом в camelCase: `like`, `fire`, `laugh`, `faceWithThermometer`. Набор кодов задаёт Битрикс24, и он может пополняться. В версии `im 26.1300` их 48: `like`, `faceWithTearsOfJoy`, `redHeart`, `neutralFace`, `fire`, `cry`, `slightlySmilingFace`, `winkingFace`, `laugh`, `kiss`, `wonder`, `slightlyFrowningFace`, `loudlyCryingFace`, `faceWithStuckOutTongue`, `faceWithStuckOutTongueAndWinkingEye`, `smilingFaceWithSunglasses`, `confusedFace`, `flushedFace`, `thinkingFace`, `angry`, `smilingFaceWithHorns`, `faceWithThermometer`, `facepalm`, `poo`, `flexedBiceps`, `clappingHands`, `raisedHand`, `dislike`, `smilingFaceWithHeartEyes`, `smilingFaceWithHearts`, `pleadingFace`, `relievedFace`, `foldedHands`, `okHand`, `signHorns`, `loveYouGesture`, `clownFace`, `partyingFace`, `questionMark`, `exclamationMark`, `lightBulb`, `bomb`, `sleepingSymbol`, `crossMark`, `whiteHeavyCheckMark`, `eyes`, `handshake`, `hundredPoints`.

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|---------|
| `messageId` (path) | number | да | ID сообщения, положительное целое — из [ленты чата](/docs/chats/messages/list) (`GET /v1/chats/:dialogId/messages`) или из ответа [отправки](/docs/chats/messages/send) |

## Поля запроса (body)

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|---------|
| `reaction` | string | да | Код реакции в camelCase |

Другие поля тела и любые параметры запроса отклоняются с `400 INVALID_PARAMS`.

## Примеры

### curl — личный ключ

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/chats/messages/1001/reactions" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reaction":"like"}'
```

### curl — OAuth-приложение

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/chats/messages/1001/reactions" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reaction":"like"}'
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/messages/1001/reactions', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ reaction: 'like' }),
})

const { data } = await res.json()
console.log('Реакция поставлена:', data.result)
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/messages/1001/reactions', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ reaction: 'like' }),
})

const { data } = await res.json()
console.log('Реакция поставлена:', data.result)
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.result` | boolean | `true` — реакция поставлена |

## Пример ответа

```json
{
  "success": true,
  "data": {
    "result": true
  }
}
```

## Пример ответа при ошибке

422 — эта реакция на сообщении уже стоит:

```json
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "REACTION_ALREADY_SET",
    "b24Code": "REACTION_ALREADY_SET"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | `messageId` не положительное целое, нет `reaction`, код реакции не в camelCase (`LIKE`, `face_with`), лишнее поле тела или любой параметр запроса. Проверяется до обращения к Битрикс24 |
| 404 | `ENTITY_NOT_FOUND` | Битрикс24 вернул «не найдено», код портала — в `error.b24Code` |
| 422 | `BITRIX_ERROR` | Битрикс24 вернул ошибку, код — в `error.b24Code`: `REACTION_ALREADY_SET` — реакция уже стоит, `REACTION_NOT_FOUND` — код неизвестен Битрикс24, `MESSAGE_NOT_FOUND` — сообщения нет |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `im` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ только для чтения не может ставить реакции — см. [права доступа](/docs/access-rights) |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов Битрикс24 |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

**Одна реакция одного кода.** Разные коды на одно сообщение ставятся независимо. Повтор того же кода возвращает ошибку `REACTION_ALREADY_SET`.

## Смотрите также

- [Список реакций на сообщение](/docs/chats/messages/reactions-list)
- [Снять реакцию](/docs/chats/messages/reactions-delete)
- [Чтение сообщений](/docs/chats/messages/list)
- [Сообщения](/docs/chats/messages)
