Для AI-агентов: markdown этой страницы — /docs-content/chats/messages/pins.md индекс документации — /llms.txt

Список закреплённых сообщений

GET /v1/chats/:dialogId/pins

Возвращает постранично список сообщений, закреплённых в групповом чате или личном диалоге.

Параметры

Параметр Тип Обяз. По умолч. Описание
dialogId (path) string да — ID диалога: числовой ID пользователя для личных сообщений, chatXXX для групповых — поле dialogId строки последних диалогов, ID пользователя — из списка пользователей. Специальный алиас me — личный диалог текущего пользователя, подробнее в Обзоре чатов
lastId (query) number нет — Курсор: id последнего закрепа предыдущей страницы — ID закрепа, а не сообщения. Сама граница в страницу не входит
order (query) string нет desc desc — сначала последние закрепы, asc — сначала ранние
limit (query) number нет 50 Закрепов на странице, от 1 до 200: значение вне диапазона срезается, эхо — meta.requestedLimit и meta.appliedLimit

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

Примеры

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

Terminal
curl -X GET "https://vibecode.bitrix24.tech/v1/chats/chat42/pins" \
  -H "X-Api-Key: YOUR_API_KEY"

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

Terminal
curl -X GET "https://vibecode.bitrix24.tech/v1/chats/chat42/pins" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/chat42/pins', {
  method: 'GET',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { data } = await res.json()
const byId = new Map((data.additionalMessages ?? []).map((m) => [m.id, m]))
console.log('Закреплено:', data.pins.map((p) => byId.get(p.messageId)?.text))

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/chat42/pins', {
  method: 'GET',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
const byId = new Map((data.additionalMessages ?? []).map((m) => [m.id, m]))
console.log('Закреплено:', data.pins.map((p) => byId.get(p.messageId)?.text))

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data.pins array Закрепы страницы
data.pins[].id number ID закрепа — курсор lastId следующей страницы
data.pins[].messageId number ID закреплённого сообщения
data.pins[].chatId number ID чата
data.pins[].authorId number ID пользователя, закрепившего сообщение
data.pins[].dateCreate string Когда сообщение закреплено (ISO 8601)
data.additionalMessages array Закреплённые сообщения: id, chatId, authorId, date, text, params и другие поля сообщения v2
data.users array Пользователи закрепов и сообщений
data.files array Файлы закреплённых сообщений
data.reactions array Реакции на закреплённые сообщения
data.tariffRestrictions object Ограничения тарифа на историю: isHistoryLimitExceeded
meta.requestedLimit number Переданный limit, когда он вышел за диапазон от 1 до 200
meta.appliedLimit number Применённое значение limit — только если он был приведён к границе

Приходят также stickers, forwardSource и copilot — коллекции ленты v2, общие для ответов с сообщениями.

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

Показаны основные поля пользователя.

JSON
{
  "success": true,
  "data": {
    "users": [
      {
        "id": 5,
        "active": true,
        "name": "Анна Смирнова",
        "firstName": "Анна",
        "lastName": "Смирнова",
        "avatar": "",
        "bot": false,
        "type": "user"
      }
    ],
    "additionalMessages": [
      {
        "id": 1001,
        "chatId": 42,
        "authorId": 5,
        "date": "2026-10-06T09:18:11+03:00",
        "text": "Проверьте макет главной страницы",
        "isSystem": false,
        "uuid": null,
        "forward": null,
        "params": { "isPinned": "Y" },
        "viewedByOthers": false,
        "block": null,
        "unread": false,
        "viewed": true,
        "viewedCount": 0
      }
    ],
    "tariffRestrictions": { "isHistoryLimitExceeded": false },
    "forwardSource": null,
    "files": [],
    "copilot": null,
    "stickers": [],
    "reactions": [],
    "pins": [
      {
        "id": 1,
        "messageId": 1001,
        "chatId": 42,
        "authorId": 5,
        "dateCreate": "2026-10-06T09:18:20+03:00"
      }
    ]
  }
}

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

422 — чата нет:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "CHAT_NOT_FOUND",
    "hint": "dialogId must be a userId (number as string) for DMs or \"chat{N}\" for group chats. Examples: \"1\" for user 1, \"chat123\" for group chat 123. Create a group chat first via POST /v1/bots/:botId/chats if needed.",
    "b24Code": "CHAT_NOT_FOUND"
  }
}

Ошибки

HTTP Код Описание
400 INVALID_PARAMS Параметр кроме lastId, order, limit, повтор параметра или некорректное значение. Проверяется до обращения к Битрикс24
404 ENTITY_NOT_FOUND Битрикс24 вернул «не найдено», код портала — в error.b24Code
422 BITRIX_ERROR Битрикс24 вернул ошибку, код — в error.b24Code, например CHAT_NOT_FOUND — чата нет
403 SCOPE_DENIED API-ключ не имеет скоупа im
403 WRITE_BLOCKED_READONLY_KEY Режим только чтения: существующий чат не подтверждён в ограниченном окне последних диалогов либо передан создающий или неоднозначный алиас. Вызывающий создание метод не отправляется на портал
403 WRITE_BLOCKED_READONLY_KEY Чтение в режиме READONLY недоступно ключу приложения, менеджмент-ключу или ключу с неподтверждённым видом владельца
401 TOKEN_MISSING API-ключ не имеет настроенных токенов Битрикс24
502 ME_ALIAS_RESOLUTION_FAILED Алиас me не удалось разрешить: Битрикс24 не вернул ID текущего пользователя

Полный список общих ошибок API — Ошибки.

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

Список закрепов может сделать вас участником. Если чат разрешает автовступление, чтение списка может добавить текущего пользователя в участники, как загрузка чата. Обычному личному ключу сотрудника в режиме READONLY это чтение доступно. Сообщения прочитанными оно не отмечает.

Признака следующей страницы нет. В ответе нет hasNextPage. Страница короче limit — последняя.

Ответ без закрепов короче. У чата без закрепов приходят только pins, users и tariffRestrictions. Остальные коллекции появляются с первым закрепом, поэтому читайте их с запасным значением.

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