#List tasks

GET /v1/tasks

Returns a list of portal tasks with support for filtering, sorting, and auto-pagination.

#Parameters

Parameter Type Default Description
limit number 50 Number of records (up to 5000). With limit > 50 the API automatically requests several pages
offset number 0 Skip N records. With offset > 0, limit ≤ 500 is recommended
select string Field selection: ?select=id,title,status,responsibleId
order object id desc Sorting: ?order[id]=desc, ?order[createdDate]=desc
filter object Filtering by GET /v1/tasks/fields fields.
Filtering syntax. Example: ?filter[status]=2&filter[responsibleId]=1

Which dates are filterable. B24 tasks.task.list supports filters by createdDate, changedDate, closedDate, deadline, dateStart. The fields statusChangedDate and activityDate are not filterable on the Bitrix24 side (they are not in the method's list of filterable fields) — such a filter is silently ignored; use changedDate as the closest substitute. Collaborators/watchers are filtered by a single user: ?filter[accomplices]=25, ?filter[auditors]=25; tags — ?filter[tags]=tag.

#Examples

#curl — personal key

Terminal
curl "https://vibecode.bitrix24.com/v1/tasks?limit=10&filter[status]=2&order[id]=desc" \
  -H "X-Api-Key: YOUR_API_KEY"

#curl — OAuth application

Terminal
curl "https://vibecode.bitrix24.com/v1/tasks?limit=10&filter[status]=2&order[id]=desc" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

#JavaScript — personal key

javascript
const url = 'https://vibecode.bitrix24.com/v1/tasks?limit=10&filter[status]=2&order[id]=desc'
const res = await fetch(url, {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, meta } = await res.json()
console.log(`Received ${data.length} of ${meta.total} tasks`)

#JavaScript — OAuth application

javascript
const url = 'https://vibecode.bitrix24.com/v1/tasks?limit=10&filter[status]=2&order[id]=desc'
const res = await fetch(url, {
  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 tasks (all fields — see Task fields)
meta.total number Total number of records matching the filter
meta.hasMore boolean Whether there are more records beyond limit

The card URL of any task from the data array is built from its id and the employee ID:

https://<portal>.bitrix24.com/company/personal/user/<responsibleId>/tasks/task/view/<id>/

<responsibleId> — the responsible person's ID (the responsibleId field of each element): the task opens in their personal workspace. The user/<...> segment defines whose workspace shows the tasks page — substitute the desired employee's ID, for example the current one. <portal> — the portal domain. Access is limited by the employee's permissions in Bitrix24.

#Response example

JSON
{
  "success": true,
  "data": [
    {
      "id": "289",
      "title": "Prepare the quarterly report",
      "status": "2",
      "priority": "1",
      "responsibleId": "79",
      "createdBy": "99",
      "createdDate": "2026-05-12T09:11:18+03:00",
      "deadline": "2026-05-19T18:00:00+03:00",
      "groupId": "0",
      "accomplices": [],
      "auditors": [],
      "creator": {
        "id": "99",
        "name": "Anna Sokolova",
        "link": "/company/personal/user/99/"
      },
      "responsible": {
        "id": "79",
        "name": "Dmitry Orlov",
        "link": "/company/personal/user/79/"
      }
    }
  ],
  "meta": {
    "total": 184,
    "hasMore": true
  }
}

#Error response example

403 — no scope:

JSON
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'tasks' scope"
  }
}

#Errors

HTTP Code Description
403 SCOPE_DENIED The API key does not have the tasks scope
401 TOKEN_MISSING The API key has no configured tokens
401 MISSING_API_KEY The X-Api-Key header was not passed
401 INVALID_API_KEY An invalid or non-existent key was passed

The full list of common API errors — Errors.

#Known specifics

When to switch to POST /v1/tasks/search. If a request has many filter conditions or you need to export over a large date range, choose POST /v1/tasks/search — parameters are passed in the body, plus automatic splitting of the request into time windows is available for selections over 5000 records. See Search tasks.

Numeric values as strings. Identifier fields and numeric enumerations (id, status, priority, responsibleId, createdBy, groupId) come as strings. For arithmetic and comparisons, convert via Number(value).

#See also