For AI agents: markdown of this page — /docs-content-en/task-history.md documentation index — /llms.txt

Task change history

GET /v1/tasks/:taskId/history

Returns the full change history of a single task in one call — kanban column transitions, moves between sprint and backlog, changes of status, responsible person, deadline and other events. Used to reconstruct a task's actual path across the board with real transition dates.

Bitrix24 API: tasks.task.history.list Scope: task

Parameters

Parameter Type Required Default Description
taskId (path) number yes Task identifier. Source: GET /v1/tasks
field (query) string no Filter by event type. A single value — ?field=STAGE, multiple values — comma-separated ?field=STAGE,MOVE_TO_SPRINT. Kanban column transition — value STAGE. Other values: MOVE_TO_SPRINT, MOVE_TO_BACKLOG, STATUS, RESPONSIBLE_ID, DEADLINE, NEW, COMMENT, TAGS and others
order (query) string no asc Order by date: asc — oldest to newest, desc — newest to oldest

Without the field parameter the method returns events of all types. The method returns the entire task history in one call — there is no page-by-page traversal, meta.hasMore is always false.

Examples

curl — personal key

Terminal
curl "https://vibecode.bitrix24.com/v1/tasks/61/history?field=STAGE&order=asc" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl "https://vibecode.bitrix24.com/v1/tasks/61/history?field=STAGE&order=asc" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const params = new URLSearchParams({ field: 'STAGE', order: 'asc' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/tasks/61/history?${params}`, {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { success, data, meta } = await res.json()

JavaScript — OAuth application

javascript
const params = new URLSearchParams({ field: 'STAGE', order: 'asc' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/tasks/61/history?${params}`, {
  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 events, order set by the order parameter
data[].id number Log record identifier. Stable, suitable for deduplication
data[].createdDate string Event timestamp in the user's timezone (ISO 8601)
data[].field string Event type: STAGE, MOVE_TO_SPRINT, STATUS and others
data[].value object Previous and new value of the field
data[].value.from string | null Previous value. For STAGE — the column name. An empty string or null when there is no previous value
data[].value.to string | null New value. For STAGE — the column name. null for events without a value, e.g. NEW
data[].user object Change author
data[].user.id number Author identifier. Source: GET /v1/users
meta.total number Number of records in the response
meta.hasMore boolean Always false — the response contains the entire task history

Response example

Task 61, filtered by kanban columns field=STAGE:

JSON
{
  "success": true,
  "data": [
    {
      "id": 378,
      "createdDate": "2026-06-11T14:14:14+02:00",
      "field": "STAGE",
      "value": { "from": "", "to": "Backlog" },
      "user": { "id": 1 }
    },
    {
      "id": 413,
      "createdDate": "2026-06-17T00:35:43+02:00",
      "field": "STAGE",
      "value": { "from": "Working on specifications", "to": "Code review" },
      "user": { "id": 1 }
    }
  ],
  "meta": {
    "total": 22,
    "hasMore": false
  }
}

Error response example

400 — taskId is not a positive number:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "taskId must be a positive integer"
  }
}

Errors

HTTP Code Description
400 INVALID_PARAMS taskId is less than one or not a number
403 SCOPE_DENIED The key is missing the task scope
401 TOKEN_MISSING The key has no access tokens configured
401 MISSING_API_KEY The X-Api-Key header was not passed

Full list of common API errors — Errors.

Known specifics

The value field for STAGE is the column name. The value.from and value.to fields for a STAGE event contain the kanban column name at the moment of the transition, not its identifier. The value.from value is empty on the task's first arrival on the board.

See also