Для AI-агентов: markdown этой страницы — /docs-content/openlines/ratings.md индекс документации — /llms.txt
Оценки (CSAT)
⚠️ Метод выходит в обновлении
imopenlines 26.700.0и доступен пока не на всех порталах Битрикс24. Если обновление на ваш портал ещё не пришло, API вернёт422 METHOD_NOT_YET_AVAILABLE— это признак того, что метод на портале ещё не выпущен, а не ошибка интеграции.
POST /v1/openlines/ratings/search
Список сессий с выставленной клиентом оценкой (лайк/дизлайк) за период — для отчётов CSAT и выгрузки отзывов. Сессии без клиентской оценки в список не попадают.
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
dateVoteFrom |
string | да | Начало периода оценки, ISO 8601. Период dateVoteFrom..dateVoteTo — не больше 1 года |
dateVoteTo |
string | да | Конец периода оценки, ISO 8601 |
configId |
number | нет | Идентификатор линии. Источник: GET /v1/openline-configs |
configIdList |
number[] | нет | Список линий |
operatorId |
number | нет | Идентификатор оператора. Источник: GET /v1/users |
operatorIdList |
number[] | нет | Список операторов |
source |
string | нет | Код канала |
sourceList |
string[] | нет | Список кодов каналов |
vote |
string | нет | Клиентская оценка: like / dislike. Без параметра возвращаются все оценённые сессии |
hasVoteHead |
boolean | нет | Есть ли оценка руководителя. Принимает true/false и Y/N |
limit |
number | нет | Размер страницы, 1..200 (по умолчанию 50) |
offset |
number | нет | Смещение для пагинации (по умолчанию 0) |
Период dateVoteFrom/dateVoteTo обязателен — ограничение защищает от тяжёлых выборок по таблице сессий. Если на линии отключена клиентская оценка, метод вернёт пустой список (оценённых сессий на такой линии не появляется).
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/openlines/ratings/search" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"configId": 3,
"vote": "like",
"dateVoteFrom": "2026-06-01T00:00:00+03:00",
"dateVoteTo": "2026-06-30T23:59:59+03:00"
}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/openlines/ratings/search" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"configId": 3,
"vote": "like",
"dateVoteFrom": "2026-06-01T00:00:00+03:00",
"dateVoteTo": "2026-06-30T23:59:59+03:00"
}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/ratings/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
configId: 3,
vote: 'like',
dateVoteFrom: '2026-06-01T00:00:00+03:00',
dateVoteTo: '2026-06-30T23:59:59+03:00',
}),
})
const { data } = await res.json()
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/openlines/ratings/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
configId: 3,
vote: 'like',
dateVoteFrom: '2026-06-01T00:00:00+03:00',
dateVoteTo: '2026-06-30T23:59:59+03:00',
}),
})
const { data } = await res.json()
Поля ответа
Ответ — { "success": true, "data": { "ratings": [...], "hasNextPage": bool } }.
| Ключ | Описание |
|---|---|
ratings[].sessionId |
Идентификатор сессии |
ratings[].configId |
Идентификатор линии |
ratings[].operatorId |
Идентификатор оператора |
ratings[].source |
Код канала |
ratings[].vote |
Клиентская оценка (like / dislike) |
ratings[].voteHead |
Оценка руководителя, число 1..5 (null, если нет права) |
ratings[].commentHead |
Комментарий руководителя (null, если нет права) |
ratings[].dateVote |
Дата выставления оценки клиентом |
ratings[].dateSessionClose |
Дата закрытия сессии |
hasNextPage |
Есть ли следующая страница (поле конверта data, не элемента) |
Пример ответа
{
"success": true,
"data": {
"ratings": [
{
"sessionId": 1024,
"configId": 3,
"operatorId": 42,
"source": "livechat",
"vote": "like",
"voteHead": 5,
"commentHead": "Отличная работа",
"dateVote": "2026-06-15T14:53:00+03:00",
"dateSessionClose": "2026-06-15T14:52:10+03:00"
}
],
"hasNextPage": false
}
}
Пример ответа при ошибке
400 — не передан период оценки:
{
"success": false,
"error": { "code": "MISSING_PARAMS", "message": "Required: dateVoteFrom, dateVoteTo (ISO 8601 strings)" }
}
Ошибки
| HTTP | Код | Когда |
|---|---|---|
| 403 | B24_TARIFF_RESTRICTION |
Тариф не включает статистику Открытых линий (report_open_lines) |
| 400 | MISSING_PARAMS |
Не переданы обязательные dateVoteFrom/dateVoteTo |
| 422 | BITRIX_ERROR (error.b24Code: INVALID_FILTER) |
Недопустимое значение vote или формат даты |
| 422 | BITRIX_ERROR (error.b24Code: PERIOD_TOO_LARGE) |
Период превышает 1 год |
| 422 | BITRIX_ERROR (error.b24Code: OFFSET_TOO_LARGE) |
offset превышает максимум — сузьте период |
| 422 | METHOD_NOT_YET_AVAILABLE |
Обновление imopenlines 26.700.0 ещё не приехало на портал |
Пагинация без дрейфа страниц
Метод листается через offset/limit. При постраничной выгрузке фиксируйте верхнюю границу периода — dateVoteTo равным моменту старта выгрузки, чтобы новые оценки не сдвигали страницы.
Полный список системных кодов — Ошибки API.