Для AI-агентов: markdown этой страницы — /docs-content/entities/tasks/time/list.md индекс документации — /llms.txt
Список записей учёта времени
GET /v1/tasks/:taskId/time
Возвращает все записи учёта времени конкретной задачи, отсортированные по id (сначала новые).
Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
taskId (path) |
number | да | — | ID задачи |
limit (query) |
number | 50 |
Размер страницы | |
offset (query) |
number | 0 |
Пропустить N записей |
Формат фильтра. Задача задаётся path-параметром taskId. Generic-envelope filter не поддерживается: любой bracket-ключ filter[...], непустое значение filter, JSON-вариант, включая filter={}, или повтор параметра filter возвращает 400 UNSUPPORTED_FILTER. Единственный пустой параметр filter= означает отсутствие фильтра и сохраняет статус 200. Для отбора по сотруднику или периоду используйте GET /v1/task-time с именованными параметрами userId, taskId, from и to.
Примеры
curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/tasks/289/time" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/tasks/289/time" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/tasks/289/time', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data, meta } = await res.json()
const totalSeconds = data.reduce((sum, r) => sum + r.seconds, 0)
console.log(`Всего по задаче: ${totalSeconds / 60} мин`)
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/tasks/289/time', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data, meta } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
array | Массив записей учёта времени |
data[].id |
number | Идентификатор записи |
data[].taskId |
number | ID родительской задачи |
data[].userId |
number | Автор. Профиль: GET /v1/users/:userId |
data[].seconds |
number | Длительность в секундах |
data[].minutes |
number | Длительность в минутах (производное от seconds) |
data[].commentText |
string | Комментарий к записи |
data[].source |
string | Источник: 2 — REST API |
data[].createdDate |
datetime | Когда запись была создана |
data[].dateStart |
datetime | Начало учтённого интервала (заполняется автоматически) |
data[].dateStop |
datetime | Окончание учтённого интервала (заполняется автоматически) |
meta.total |
number | Общее число записей учёта времени по задаче |
Пример ответа
{
"success": true,
"data": [
{
"id": 163,
"taskId": 289,
"userId": 1,
"commentText": "Подготовка черновика",
"seconds": 1800,
"minutes": 30,
"source": "2",
"createdDate": "2026-05-13T16:15:43+03:00",
"dateStart": "2026-05-13T17:15:43+03:00",
"dateStop": "2026-05-13T17:15:43+03:00"
},
{
"id": 161,
"taskId": 289,
"userId": 1,
"commentText": "",
"seconds": 600,
"minutes": 10,
"source": "2",
"createdDate": "2026-05-13T16:15:41+03:00",
"dateStart": "2026-05-13T17:15:41+03:00",
"dateStop": "2026-05-13T17:15:41+03:00"
}
],
"meta": {
"total": 2
}
}
Пример ответа при ошибке
403 — нет скоупа:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'task' scope"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | UNSUPPORTED_FILTER |
Передан неподдерживаемый filter; задача задаётся в path, а отбор по сотруднику или периоду доступен в GET /v1/task-time |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа task |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
| 422 | BITRIX_ERROR |
Битрикс24 вернул ошибку при чтении — например, родительская задача отсутствует или удалена |
Полный список общих ошибок API — Ошибки.
Известные особенности
Сортировка по убыванию id. Сначала возвращаются последние добавленные записи. limit и offset работают поверх этой сортировки.