#Последние диалоги
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 — личный ключ
curl "https://vibecode.bitrix24.tech/v1/chats/recent?limit=20" \
-H "X-Api-Key: YOUR_API_KEY"
#curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/chats/recent?limit=20" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
#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-приложение
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. Сохранён для обратной совместимости |
#Пример ответа
{
"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:
{
"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 и не является частью списка диалогов.