Для 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
Список сессий с выставленной клиентом оценкой (like / dislike) за период — для отчётов об удовлетворённости клиентов (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 | Код | Когда |
|---|---|---|
| HTTP403 | КодB24_TARIFF_RESTRICTION |
КогдаТариф не включает статистику Открытых линий (report_open_lines) |
| HTTP400 | КодINVALID_JSON_BODY |
КогдаТело запроса не разобралось как JSON. JSON разбирается до проверки полей, поэтому про отсутствующие параметры ответ ничего не говорит |
| HTTP400 | КодMISSING_PARAMS |
КогдаНе переданы обязательные dateVoteFrom/dateVoteTo |
| HTTP422 | КодBITRIX_ERROR (error.b24Code: INVALID_FILTER) |
КогдаНедопустимое значение vote или формат даты |
| HTTP422 | КодBITRIX_ERROR (error.b24Code: PERIOD_TOO_LARGE) |
КогдаПериод превышает 1 год |
| HTTP422 | КодBITRIX_ERROR (error.b24Code: OFFSET_TOO_LARGE) |
Когдаoffset превышает максимум — сузьте период |
| HTTP422 | КодMETHOD_NOT_YET_AVAILABLE |
КогдаОбновление imopenlines 26.700.0 ещё не пришло на портал. Ответ содержит поле error.release со значением imopenlines 26.700.0 |
Пагинация без сдвига страниц
Страницы перебираются через offset/limit. При постраничной выгрузке фиксируйте верхнюю границу периода — dateVoteTo равным моменту начала выгрузки, чтобы новые оценки не сдвигали страницы.
Полный список системных кодов — Ошибки API.