For AI agents: markdown of this page — /docs-content-en/entities/tasks/time/list.md documentation index — /llms.txt
List time-tracking entries
GET /v1/tasks/:taskId/time
Returns all time-tracking entries of a specific task, sorted by id (newest first).
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
taskId (path) |
number | yes | — | Task ID |
limit (query) |
number | 50 |
Page size | |
offset (query) |
number | 0 |
Skip N entries |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/tasks/289/time" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/tasks/289/time" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/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 + Number(r.seconds), 0)
console.log(`Total for the task: ${totalSeconds / 60} min`)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/tasks/289/time', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data, meta } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
array | Array of time-tracking entries |
data[].id |
string | Entry identifier |
data[].taskId |
string | Parent task ID |
data[].userId |
string | Author. Profile: GET /v1/users/:userId |
data[].seconds |
string | Duration in seconds |
data[].minutes |
string | Duration in minutes (derived from seconds) |
data[].commentText |
string | Comment for the entry |
data[].source |
string | Source: 2 — REST API |
data[].createdDate |
datetime | When the entry was created |
data[].dateStart |
datetime | Start of the tracked interval (filled automatically) |
data[].dateStop |
datetime | End of the tracked interval (filled automatically) |
meta.total |
number | Total number of time-tracking entries for the task |
Response example
{
"success": true,
"data": [
{
"id": "163",
"taskId": "289",
"userId": "1",
"commentText": "Draft preparation",
"seconds": "1800",
"minutes": "30",
"source": "2",
"createdDate": "2026-05-13T16:15:43+00:00",
"dateStart": "2026-05-13T17:15:43+00:00",
"dateStop": "2026-05-13T17:15:43+00:00"
},
{
"id": "161",
"taskId": "289",
"userId": "1",
"commentText": "",
"seconds": "600",
"minutes": "10",
"source": "2",
"createdDate": "2026-05-13T16:15:41+00:00",
"dateStart": "2026-05-13T17:15:41+00:00",
"dateStop": "2026-05-13T17:15:41+00:00"
}
],
"meta": {
"total": 2
}
}
Error response example
403 — no scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'task' scope"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 403 | SCOPE_DENIED |
The API key lacks the task scope |
| 401 | TOKEN_MISSING |
The API key has no configured tokens |
| 422 | BITRIX_ERROR |
Bitrix24 returned an error while reading — e.g. the parent task is missing or deleted |
Full list of common API errors — Errors.
Known specifics
Descending sort by id. The most recently added entries are returned first. limit and offset work on top of this sort.
See also
- Get an entry — a single entry by
id - Add an entry — create a new entry
- Update an entry — change the duration or comment
- Delete an entry — remove an entry
- Tasks — parent entity