#Последние диалоги

GET /v1/chats/recent

Возвращает список последних диалогов текущего пользователя, отсортированных по дате последнего сообщения. Каждый элемент содержит краткую информацию о диалоге, последнем сообщении и счётчике непрочитанных.

#Параметры

Параметр Тип Обяз. По умолч. Описание
skipOpenLines string нет Исключить линии открытых каналов. Принимает true, Y или y
skipChat string нет Исключить групповые чаты. Принимает true, Y или y
skipDialog string нет Исключить личные диалоги. Принимает true, Y или y
unreadOnly string нет Только диалоги с непрочитанными сообщениями. Принимает true, Y или y
onlyOpenLines string нет Только линии открытых каналов. Принимает true, Y или y
onlyCopilot string нет Только чаты с AI-ассистентом. Принимает true, Y или y
onlyChannel string нет Только каналы. Принимает true, Y или y
lastMessageDate string нет Дата последнего сообщения для постраничной навигации (ISO 8601)
limit number нет Количество элементов в ответе. Максимум 200
offset number нет 0 Смещение для пагинации

#Примеры

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/recent?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"

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

Terminal
curl "https://vibecode.bitrix24.tech/v1/chats/recent?limit=20" \
  -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/recent?limit=20', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
console.log('Последние диалоги:', data.items)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/recent?limit=20', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const { data } = await res.json()

#Поля ответа

Поле Тип Описание
data object Объект результата
data.items array Массив последних диалогов
data.items[].id string Идентификатор диалога (chatXXX для группового чата или числовой ID для личного диалога)
data.items[].chatId number Числовой ID чата
data.items[].type string Тип диалога: chat, openlines, copilot, channel
data.items[].title string Название диалога
data.items[].avatar object Аватар диалога
data.items[].avatar.url string URL изображения аватара. Пустая строка, если аватар не задан
data.items[].avatar.color string Цвет аватара в шестнадцатеричном формате, например #4ba984
data.items[].message object Последнее сообщение в диалоге
data.items[].message.id number ID сообщения
data.items[].message.text string Текст сообщения
data.items[].message.authorId number ID автора сообщения
data.items[].message.date string Дата сообщения (ISO 8601)
data.items[].message.file boolean Содержит ли сообщение файл
data.items[].message.attach boolean Содержит ли сообщение вложение
data.items[].message.sticker string | null Стикер сообщения или null
data.items[].message.status string Статус сообщения (например, received)
data.items[].lastId number ID последнего прочитанного сообщения
data.items[].unread boolean Есть ли непрочитанные сообщения
data.items[].counter number Количество непрочитанных сообщений
data.items[].pinned boolean Диалог закреплён
data.items[].dateUpdate string Дата последнего обновления диалога (ISO 8601)
data.items[].dateLastActivity string Дата последней активности (ISO 8601)
data.items[].chat object Расширенная информация о чате
data.items[].chat.id number Числовой ID чата
data.items[].chat.name string Системное название чата
data.items[].chat.type string Тип чата: chat, general, openlines, copilot, channel, mail, crm и другие
data.items[].chat.owner number ID владельца чата
data.items[].chat.userCounter number Количество участников
data.items[].chat.role string Роль текущего пользователя: OWNER, MANAGER, MEMBER
data.items[].chat.entityType string Тип связанной сущности (CRM, TASKS, MAIL, GENERAL и другие)
data.items[].chat.entityId string ID связанной сущности
data.hasMorePages boolean true, если есть следующая страница
data.hasMore boolean Дублирует hasMorePages. Сохранён для обратной совместимости

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

JSON
{
  "success": true,
  "data": {
    "items": [
      {
        "id": "chat456",
        "chatId": 456,
        "type": "chat",
        "title": "Команда разработки",
        "avatar": {
          "url": "",
          "color": "#4ba984"
        },
        "message": {
          "id": 1201,
          "text": "Обновление задачи готово",
          "authorId": 1,
          "date": "2026-06-03T16:51:12+03:00",
          "file": false,
          "attach": false,
          "sticker": null,
          "status": "received"
        },
        "lastId": 1195,
        "pinned": false,
        "unread": false,
        "counter": 0,
        "dateUpdate": "2026-06-03T16:51:12+03:00",
        "dateLastActivity": "2026-06-03T16:51:12+03:00",
        "chat": {
          "id": 456,
          "name": "Команда разработки",
          "type": "chat",
          "owner": 1,
          "userCounter": 5,
          "role": "OWNER",
          "entityType": "",
          "entityId": ""
        }
      },
      {
        "id": "chat123",
        "chatId": 123,
        "type": "crm",
        "title": "Чат по сделке",
        "avatar": {
          "url": "",
          "color": "#f76187"
        },
        "message": {
          "id": 980,
          "text": "Договор согласован",
          "authorId": 7,
          "date": "2026-06-02T14:08:10+03:00",
          "file": false,
          "attach": false,
          "sticker": null,
          "status": "received"
        },
        "lastId": 0,
        "pinned": false,
        "unread": false,
        "counter": 0,
        "dateUpdate": "2026-06-02T14:08:10+03:00",
        "dateLastActivity": "2026-06-02T14:08:10+03:00",
        "chat": {
          "id": 123,
          "name": "Чат по сделке",
          "type": "crm",
          "owner": 1,
          "userCounter": 2,
          "role": "MEMBER",
          "entityType": "CRM",
          "entityId": "DEAL|42"
        }
      }
    ],
    "hasMorePages": true,
    "hasMore": true
  }
}

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

403 — нет скоупа im:

JSON
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'im' scope"
  }
}

#Ошибки

HTTP Код Описание
403 SCOPE_DENIED API-ключ не имеет скоупа im
401 TOKEN_MISSING API-ключ не имеет настроенных токенов Битрикс24
422 BITRIX_ERROR Битрикс24 вернул ошибку (подробности в message)
502 BITRIX_UNAVAILABLE Битрикс24 недоступен или вернул ошибку сервера

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

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

  • Флаги skipOpenLines и onlyOpenLines взаимоисключающие: включение обоих приводит к результату, при котором ни один из чатов открытых линий не попадёт в список.
  • Параметр lastMessageDate используется для постраничной навигации: передайте значение dateLastActivity последнего элемента текущей страницы, чтобы получить следующую порцию. При этом передавайте и offset, чтобы избежать дублирования записей на границе страниц.
  • Ответ содержит поле data.copilot с конфигурацией AI-ассистента портала. Структура используется для отображения ролей в интерфейсе Битрикс24 и не является частью списка диалогов.

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