For AI agents: markdown of this page — /docs-content-en/entities/tasks/flows-list.md documentation index — /llms.txt
List flows
GET /v1/tasks/flows
Returns one page of task flows in the Bitrix24 account, with filtering, sorting, and field selection passed as JSON in the query parameters.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Parameterselect (query) |
Typestring | Requiredno | Defaultall fields | DescriptionJSON array of field names in uppercase: ID, OWNER_ID, CREATOR_ID, GROUP_ID, TEMPLATE_ID, EFFICIENCY, ACTIVE, PLANNED_COMPLETION_TIME, ACTIVITY, NAME, DESCRIPTION, DISTRIBUTION_TYPE, DEMO. Example: ["ID","NAME","ACTIVE"] |
Parameterfilter (query) |
Typestring | Requiredno | Default— | DescriptionJSON object of filter conditions: the key is a field name in uppercase, as in select, and the value is the value to match. A comparison operator can precede the name: {">ID":10}. The ACTIVE and DEMO flags accept true and false or 1 and 0. The strings "Y" and "N" cause no error and are read as false. Example: {"ACTIVE":true} |
Parameterorder (query) |
Typestring | Requiredno | Defaultascending id |
DescriptionJSON sort object: the key is a field name in uppercase, and the value is ASC or DESC, case-insensitive. A field name in lowercase, such as {"id":"desc"}, causes no error and is ignored. Example: {"ID":"DESC"} |
Parametergroup (query) |
Typestring | Requiredno | Default— | DescriptionJSON array of field names in uppercase. It does not change the output: with ["ACTIVE"] you get the same list as without the parameter |
Parameterstart (query) |
Typenumber | Requiredno | Default0 |
DescriptionPage offset in steps of 50. See the Pagination paragraph below |
The method accepts no other query parameters. URL-encode the values of select, filter, order, and group.
Pagination. The response is one page of up to 50 flows and has no meta.total or meta.next fields. start selects the page in steps of 50: values from 0 to 49 return the first page, and 50 returns the second. Request the next page with start increased by exactly 50. Do not add the number of received flows to start: after an incomplete page, such a request returns the same page, and a loop that waits for an empty response never ends. A page with fewer than 50 flows is the last one. Pages are not loaded automatically.
Examples
curl — personal key
curl -G "https://vibecode.bitrix24.com/v1/tasks/flows" \
--data-urlencode 'select=["ID","NAME","ACTIVE"]' \
--data-urlencode 'filter={">ID":10}' \
--data-urlencode 'order={"ID":"DESC"}' \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl -G "https://vibecode.bitrix24.com/v1/tasks/flows" \
--data-urlencode 'select=["ID","NAME","ACTIVE"]' \
--data-urlencode 'filter={">ID":10}' \
--data-urlencode 'order={"ID":"DESC"}' \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const query = new URLSearchParams({
select: JSON.stringify(['ID', 'NAME', 'ACTIVE']),
filter: JSON.stringify({ '>ID': 10 }),
order: JSON.stringify({ ID: 'DESC' }),
})
const res = await fetch(`https://vibecode.bitrix24.com/v1/tasks/flows?${query}`, {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Flows:', data.map((flow) => `${flow.id}: ${flow.name}`))
JavaScript — OAuth application
const query = new URLSearchParams({
select: JSON.stringify(['ID', 'NAME', 'ACTIVE']),
filter: JSON.stringify({ '>ID': 10 }),
order: JSON.stringify({ ID: 'DESC' }),
})
const res = await fetch(`https://vibecode.bitrix24.com/v1/tasks/flows?${query}`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue on success |
Fielddata |
Typearray | DescriptionFlows on the page. Past the last page, an empty array |
Fielddata[].id |
Typenumber | DescriptionFlow ID |
Fielddata[].ownerId |
Typenumber | DescriptionID of the flow administrator. List: GET /v1/users |
Fielddata[].creatorId |
Typenumber | DescriptionID of the employee who created the flow. List: GET /v1/users |
Fielddata[].groupId |
Typenumber | DescriptionID of the flow's workgroup. List: GET /v1/workgroups |
Fielddata[].templateId |
Typenumber | DescriptionID of the template used to create tasks in the flow. 0 means no template. List: GET /v1/task-templates |
Fielddata[].efficiency |
Typenumber | DescriptionFlow efficiency as a percentage |
Fielddata[].active |
Typeboolean | Descriptiontrue means the flow is enabled |
Fielddata[].plannedCompletionTime |
Typenumber | DescriptionTime to complete a task, in seconds |
Fielddata[].activity |
Typestring | DescriptionDate and time of the flow's last activity, ISO 8601 with a time zone offset |
Fielddata[].name |
Typestring | DescriptionFlow name |
Fielddata[].description |
Typestring | DescriptionFlow description. An empty string when there is no description |
Fielddata[].distributionType |
Typestring | DescriptionHow tasks reach assignees: manually — a moderator distributes them, queue — in turn among employees, himself — employees take tasks themselves |
Fielddata[].demo |
Typeboolean | Descriptiontrue means a Bitrix24 demo flow |
With select, an item contains only the listed fields and id: id is returned even when it is not in select. The list does not return responsible users, team members, or deadline and notification settings — they are returned by GET /v1/tasks/flows/:flowId.
Response example
{
"success": true,
"data": [
{
"id": 15,
"active": true,
"name": "Request handling"
},
{
"id": 13,
"active": false,
"name": "Legal department"
},
{
"id": 11,
"active": false,
"name": "Certificate requests to accounting"
}
]
}
Error response example
422 — the field names in select are in lowercase:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "Invalid select data",
"b24Code": "0"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeINVALID_PARAMS |
DescriptionA query parameter other than select, filter, order, group, and start was passed: query contains unsupported fields |
| HTTP400 | CodeINVALID_PARAMS |
Descriptionselect or group is not a JSON array: select must be a JSON array, group must be a JSON array |
| HTTP400 | CodeINVALID_PARAMS |
Descriptionfilter or order is not a JSON object: filter must be a JSON object, order must be a JSON object |
| HTTP400 | CodeINVALID_PARAMS |
Descriptionselect, filter, order, or group was passed in bracket notation filter[…]=… instead of a JSON string: filter must be JSON, and likewise for the others |
| HTTP400 | CodeINVALID_PARAMS |
Descriptionstart is not a non-negative integer: start must be a non-negative safe integer |
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header is missing |
| HTTP401 | CodeINVALID_API_KEY |
DescriptionThe key is not found |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe key has no Bitrix24 tokens |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe key does not have the task or tasks scope |
| HTTP422 | CodeBITRIX_ERROR |
Descriptionselect contains an unknown field name or a name not in uppercase: Invalid select data |
| HTTP422 | CodeBITRIX_ERROR |
Descriptionfilter contains an unknown field name or a name not in uppercase: Invalid filter data |
| HTTP422 | CodeBITRIX_ERROR |
Descriptiongroup contains an unknown field name or a name not in uppercase: Invalid group data |
| HTTP422 | CodeBITRIX_ERROR |
Descriptionorder contains an unknown field name: Incorrect sort field |
| HTTP429 | CodeRATE_LIMITED |
DescriptionThe request rate limit of Bitrix24 or the platform was exceeded. Retry after the delay in the Retry-After header |
Full list of common API errors — Errors.
Known specifics
Demo flows in the output. The list includes Bitrix24 demo flows with demo: true. Their groupId and plannedCompletionTime are 0. To exclude demo flows, pass filter={"DEMO":false}.