Get Task List tasks.task.list
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
Scope:
taskWho can execute the method: any user
The method tasks.task.list retrieves a list of tasks with pagination.
Access to data depends on permissions:
- Administrators can see all tasks,
- Managers can see their employees' tasks,
- Others can only see tasks available to them.
Method Parameters
|
Name |
Description |
|
order |
An object for sorting the task list in the format The sorting direction can take the following values:
By default, it sorts in descending order by The field for sorting can take the following values:
|
|
filter |
An object for filtering the task list in the format
To get tasks from Favorites, add the filter parameter You can specify the type of filtering before the name of the filterable field:
By default, records are not filtered |
|
select |
An array containing a list of fields to select. By default, the system returns only those fields stored in the record — without additional data calculated on the fly. Warning Always specify fields in |
|
params |
Additional information that can be retrieved about the task:
|
|
start |
This parameter is used to manage pagination. The page size is always static — 50 records. To select the second page of results, you need to pass the value The formula for calculating the
|
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"order":{"DEADLINE":"asc","PRIORITY":"desc"},"filter":{"!STATUS":6,">=DEADLINE":"'"$(date +%Y-%m-%d)"'","RESPONSIBLE_ID":547,"::SUBFILTER-PARAMS":{"FAVORITE":"Y"}},"select":["ID","TITLE","DESCRIPTION","STATUS","subStatus","DEADLINE","CREATED_DATE","RESPONSIBLE_ID","ACCOMPLICES","AUDITORS","TAGS","COUNTERS","PRIORITY","MARK"],"params":{"WITH_TIMER_INFO":true,"WITH_RESULT_INFO":true,"WITH_PARSED_DESCRIPTION":true}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/tasks.task.list
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"order":{"DEADLINE":"asc","PRIORITY":"desc"},"filter":{"!STATUS":6,">=DEADLINE":"'"$(date +%Y-%m-%d)"'","RESPONSIBLE_ID":547,"::SUBFILTER-PARAMS":{"FAVORITE":"Y"}},"select":["ID","TITLE","DESCRIPTION","STATUS","subStatus","DEADLINE","CREATED_DATE","RESPONSIBLE_ID","ACCOMPLICES","AUDITORS","TAGS","COUNTERS","PRIORITY","MARK"],"params":{"WITH_TIMER_INFO":true,"WITH_RESULT_INFO":true,"WITH_PARSED_DESCRIPTION":true},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/tasks.task.list
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of a single task in result.tasks. Only the fields read below are typed here;
// the request selects more — add them to this type as you start using them.
type TaskListItem = {
id: string
title: string
status: string
deadline: ISODate | null
responsibleId: string
}
try {
// tasks.task.list returns a single page (max 50 records). For the whole result set
// use a list helper: $b24.actions.v2.callList.make() returns every record as one
// array, $b24.actions.v2.fetchList.make() yields them in chunks (async generator).
// NOTE: the list helpers do not accept `order` (it is excluded from their params, so
// passing it is a TS error) — keep this call.make + `start` variant when sort matters.
const response = await $b24.actions.v2.call.make<{ tasks: TaskListItem[] }>({
method: 'tasks.task.list',
params: {
// Sorting: nearest deadline first, then higher priority
order: { DEADLINE: 'asc', PRIORITY: 'desc' },
filter: {
'!STATUS': 6, // exclude deferred tasks
'>=DEADLINE': new Date().toISOString().split('T')[0], // not overdue (UTC date; adjust to the account time zone if needed)
RESPONSIBLE_ID: 547, // tasks of a specific responsible person
'::SUBFILTER-PARAMS': { FAVORITE: 'Y' } // favorites only
},
// Request only the fields you need
select: [
'ID', 'TITLE', 'DESCRIPTION', 'STATUS', 'subStatus',
'DEADLINE', 'CREATED_DATE', 'RESPONSIBLE_ID',
'ACCOMPLICES', 'AUDITORS', 'TAGS', 'COUNTERS',
'PRIORITY', 'MARK'
],
// Extra computed data
params: {
WITH_TIMER_INFO: true,
WITH_RESULT_INFO: true,
WITH_PARSED_DESCRIPTION: true
},
// Page offset (not the page number): the page size is fixed at 50, so the
// Nth page is start = (N - 1) * 50.
start: 0
},
requestId: Text.getUuidRfc4122() // optional unique tracking id for this request
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const tasks = response.getData()!.result.tasks
// getTotal() is deprecated (removed in SDK 2.0); for the full match count fetch
// everything via a list helper (see above) and read its length.
console.info(`Loaded ${tasks.length} tasks (one page)`)
for (const task of tasks) {
console.info(`#${task.id}: ${task.title}`)
}
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function listTasks() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
// tasks.task.list returns a single page (max 50 records). For the whole result set
// use a list helper: $b24.actions.v2.callList.make() returns every record as one
// array, $b24.actions.v2.fetchList.make() yields them in chunks (async generator).
// NOTE: the list helpers do not accept `order` (it is excluded from their params, so
// passing it is a TS error) — keep this call.make + `start` variant when sort matters.
const response = await $b24.actions.v2.call.make({
method: 'tasks.task.list',
params: {
// Sorting: nearest deadline first, then higher priority
order: { DEADLINE: 'asc', PRIORITY: 'desc' },
filter: {
'!STATUS': 6, // exclude deferred tasks
'>=DEADLINE': new Date().toISOString().split('T')[0], // not overdue (UTC date; adjust to the account time zone if needed)
RESPONSIBLE_ID: 547, // tasks of a specific responsible person
'::SUBFILTER-PARAMS': { FAVORITE: 'Y' } // favorites only
},
// Request only the fields you need
select: [
'ID', 'TITLE', 'DESCRIPTION', 'STATUS', 'subStatus',
'DEADLINE', 'CREATED_DATE', 'RESPONSIBLE_ID',
'ACCOMPLICES', 'AUDITORS', 'TAGS', 'COUNTERS',
'PRIORITY', 'MARK'
],
// Extra computed data
params: {
WITH_TIMER_INFO: true,
WITH_RESULT_INFO: true,
WITH_PARSED_DESCRIPTION: true
},
// Page offset (not the page number): the page size is fixed at 50, so the
// Nth page is start = (N - 1) * 50.
start: 0
},
requestId: B24Js.Text.getUuidRfc4122() // optional unique tracking id for this request
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const tasks = response.getData().result.tasks
// getTotal() is deprecated (removed in SDK 2.0); for the full match count fetch
// everything via a list helper (see above) and read its length.
console.info(`Loaded ${tasks.length} tasks (one page)`)
for (const task of tasks) {
console.info(`#${task.id}: ${task.title}`)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', listTasks)
</script>
try {
$response = $b24Service
->core
->call(
'tasks.task.list',
[
'order' => [
'DEADLINE' => 'asc',
'PRIORITY' => 'desc'
],
'filter' => [
'!STATUS' => 6,
'>=DEADLINE' => date('Y-m-d'),
'RESPONSIBLE_ID' => 547,
'::SUBFILTER-PARAMS' => ['FAVORITE' => 'Y']
],
'select' => [
'ID', 'TITLE', 'DESCRIPTION', 'STATUS', 'subStatus',
'DEADLINE', 'CREATED_DATE', 'RESPONSIBLE_ID',
'ACCOMPLICES', 'AUDITORS', 'TAGS', 'COUNTERS',
'PRIORITY', 'MARK'
],
'params' => [
'WITH_TIMER_INFO' => true,
'WITH_RESULT_INFO' => true,
'WITH_PARSED_DESCRIPTION' => true,
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
processData($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error fetching tasks: ' . $e->getMessage();
}
BX24.callMethod(
'tasks.task.list',
{
// Sorting
order: {
'DEADLINE': 'asc',
'PRIORITY': 'desc'
},
// Filtering
filter: {
'!STATUS': 6, // Exclude deferred tasks
'>=DEADLINE': new Date().toISOString().split('T')[0], // Not overdue
'RESPONSIBLE_ID': 547, // Tasks of a specific responsible person
'::SUBFILTER-PARAMS': { 'FAVORITE': 'Y' } // Favorite tasks only
},
// Fields to select
select: [
'ID',
'TITLE',
'DESCRIPTION',
'STATUS',
'subStatus',
'DEADLINE',
'CREATED_DATE',
'RESPONSIBLE_ID',
'ACCOMPLICES',
'AUDITORS',
'TAGS',
'COUNTERS',
'PRIORITY',
'MARK'
],
// Additional parameters
params: {
'WITH_TIMER_INFO': true,
'WITH_RESULT_INFO': true,
'WITH_PARSED_DESCRIPTION': true,
},
},
function(result){
console.info(result.data());
console.log(result);
}
);
require_once('crest.php');
$result = CRest::call(
'tasks.task.list',
[
'order' => [
'DEADLINE' => 'asc',
'PRIORITY' => 'desc'
],
'filter' => [
'!STATUS' => 6,
'>=DEADLINE' => date('Y-m-d'),
'RESPONSIBLE_ID' => 547,
'::SUBFILTER-PARAMS' => ['FAVORITE' => 'Y']
],
'select' => [
'ID', 'TITLE', 'DESCRIPTION', 'STATUS', 'subStatus',
'DEADLINE', 'CREATED_DATE', 'RESPONSIBLE_ID',
'ACCOMPLICES', 'AUDITORS', 'TAGS', 'COUNTERS',
'PRIORITY', 'MARK'
],
'params' => [
'WITH_TIMER_INFO' => true,
'WITH_RESULT_INFO' => true,
'WITH_PARSED_DESCRIPTION' => true,
],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
Response Handling
HTTP Status: 200
{
"result": {
"tasks": [
{
"id": "8017",
"title": "Task Example",
"description": "Task description with [B]formatting[/B]",
"deadline": "2025-10-24T19:00:00+02:00",
"createdDate": "2025-06-04T16:15:55+02:00",
"responsibleId": "547",
"priority": "2",
"mark": "",
"descriptionInBbcode": "Y",
"lengthDeadline": "1",
"status": "2",
"auditors": [
"13",
"103"
],
"accomplices": [],
"group": [],
"responsible": {
"id": "547",
"name": "Maria",
"link": "/company/personal/user/547/",
"icon": "/bitrix/images/tasks/default_avatar.png",
"workPosition": "Tester"
},
"accomplicesData": [],
"auditorsData": {
"13": {
"id": "13",
"name": "John Smith",
"link": "/company/personal/user/13/",
"icon": "https://mysite.com/b17053/resize_cache/209/c0120a8d7c10d63c83e32398d1ec4d9e/main/c8dd225a1c6ea0a25722d01644b90fe4/8b.jpg",
"workPosition": "System Administrator"
},
"103": {
"id": "103",
"name": "Samantha Johnson",
"link": "/company/personal/user/103/",
"icon": "https://mysite.com/b17053/resize_cache/8644/c0120a8d7c10d63c83e32398d1ec4d9e/main/45f/45fff10d17d398a5583184c8350cd197/buh.jpg",
"workPosition": "Accountant"
}
},
"taskRequireResult": "Y",
"taskHasOpenResult": "N",
"taskHasResult": "Y",
"timeElapsed": null,
"timerIsRunningForCurrentUser": "N",
"parsedDescription": "Task description with [B]formatting[/B]",
"counter": {
"counters": {
"expired": 0,
"newComments": 0,
"projectExpired": 0,
"projectNewComments": 0,
"mutedExpired": 0,
"mutedNewComments": 0
},
"color": "gray",
"value": 0
},
"tags": {
"35": {
"id": 35,
"title": "arpar"
}
},
"subStatus": "2"
}
]
},
"total": 1,
"time": {
"start": 1761054322,
"finish": 1761054322.348041,
"duration": 0.3480410575866699,
"processing": 0,
"date_start": "2025-10-21T16:45:22+02:00",
"date_finish": "2025-10-21T16:45:22+02:00",
"operating_reset_at": 1761054922,
"operating": 0
}
}
Returned Data
|
Name |
Description |
|
result |
An object containing the response data |
|
tasks |
An array of objects, where each object contains a task description. The set of fields depends on the |
|
total |
Total number of records found |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400
{
"error": "0",
"error_description": "Invalid sorting key (internal error)"
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
Value |
|
|
Invalid sorting key (internal error) |
The |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred. Please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred. Please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not permitted for calls using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The HTTPS protocol is required for method calls |
|
|
|
The REST API is blocked due to overload. This is a manual individual block; please contact Bitrix24 technical support to lift it |
|
|
|
The REST API is only available on commercial plans |
|
|
|
The user associated with the access token or webhook used to call the method lacks the necessary permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the portal administrator has restricted access to this application to specific users only |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the "Temporary closure of the public part of the site" option. Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- Tasks: method overview
- Add Task tasks.task.add
- Update Task tasks.task.update
- Get Task by ID tasks.task.get
- Delete Task tasks.task.delete
- Get the List of Fields tasks.task.getFields
- How to Create a Comment in a Task and Attach a File
- How to Upload a File to a Task
- How to Create a Task with an Attached File