[{"data":1,"prerenderedAt":7},["ShallowReactive",2],{"docs-entities\u002Ftasks\u002Fflows-list":3,"docs-tabs-entities\u002Ftasks\u002Fflows-list":6},{"content":4,"lastmod":5},"## List flows\n\n`GET \u002Fv1\u002Ftasks\u002Fflows`\n\nReturns one page of task flows in the Bitrix24 account, with filtering, sorting, and field selection passed as JSON in the query parameters.\n\n## Parameters\n\n| Parameter | Type | Required | Default | Description |\n|----------|-----|:-----:|-----------|----------|\n| `select` (query) | string | no | all fields | JSON 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\"]` |\n| `filter` (query) | string | no | — | JSON 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}` |\n| `order` (query) | string | no | ascending `id` | JSON 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\"}` |\n| `group` (query) | string | no | — | JSON array of field names in uppercase. It does not change the output: with `[\"ACTIVE\"]` you get the same list as without the parameter |\n| `start` (query) | number | no | `0` | Page offset in steps of 50. See the **Pagination** paragraph below |\n\nThe method accepts no other query parameters. URL-encode the values of `select`, `filter`, `order`, and `group`.\n\n**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.\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -G \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Ftasks\u002Fflows\" \\\n  --data-urlencode 'select=[\"ID\",\"NAME\",\"ACTIVE\"]' \\\n  --data-urlencode 'filter={\">ID\":10}' \\\n  --data-urlencode 'order={\"ID\":\"DESC\"}' \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth application\n\n```bash\ncurl -G \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Ftasks\u002Fflows\" \\\n  --data-urlencode 'select=[\"ID\",\"NAME\",\"ACTIVE\"]' \\\n  --data-urlencode 'filter={\">ID\":10}' \\\n  --data-urlencode 'order={\"ID\":\"DESC\"}' \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — personal key\n\n```javascript\nconst query = new URLSearchParams({\n  select: JSON.stringify(['ID', 'NAME', 'ACTIVE']),\n  filter: JSON.stringify({ '>ID': 10 }),\n  order: JSON.stringify({ ID: 'DESC' }),\n})\n\nconst res = await fetch(`https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Ftasks\u002Fflows?${query}`, {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Flows:', data.map((flow) => `${flow.id}: ${flow.name}`))\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst query = new URLSearchParams({\n  select: JSON.stringify(['ID', 'NAME', 'ACTIVE']),\n  filter: JSON.stringify({ '>ID': 10 }),\n  order: JSON.stringify({ ID: 'DESC' }),\n})\n\nconst res = await fetch(`https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Ftasks\u002Fflows?${query}`, {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|----------|\n| `success` | boolean | `true` on success |\n| `data` | array | Flows on the page. Past the last page, an empty array |\n| `data[].id` | number | Flow ID |\n| `data[].ownerId` | number | ID of the flow administrator. List: [`GET \u002Fv1\u002Fusers`](\u002Fdocs\u002Fentities\u002Fusers\u002Flist) |\n| `data[].creatorId` | number | ID of the employee who created the flow. List: [`GET \u002Fv1\u002Fusers`](\u002Fdocs\u002Fentities\u002Fusers\u002Flist) |\n| `data[].groupId` | number | ID of the flow's workgroup. List: [`GET \u002Fv1\u002Fworkgroups`](\u002Fdocs\u002Fentities\u002Fworkgroups\u002Flist) |\n| `data[].templateId` | number | ID of the template used to create tasks in the flow. `0` means no template. List: [`GET \u002Fv1\u002Ftask-templates`](\u002Fdocs\u002Fentities\u002Ftasks\u002Ftemplates-list) |\n| `data[].efficiency` | number | Flow efficiency as a percentage |\n| `data[].active` | boolean | `true` means the flow is enabled |\n| `data[].plannedCompletionTime` | number | Time to complete a task, in seconds |\n| `data[].activity` | string | Date and time of the flow's last activity, ISO 8601 with a time zone offset |\n| `data[].name` | string | Flow name |\n| `data[].description` | string | Flow description. An empty string when there is no description |\n| `data[].distributionType` | string | How tasks reach assignees: `manually` — a moderator distributes them, `queue` — in turn among employees, `himself` — employees take tasks themselves |\n| `data[].demo` | boolean | `true` means a Bitrix24 demo flow |\n\nWith `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 \u002Fv1\u002Ftasks\u002Fflows\u002F:flowId`](\u002Fdocs\u002Fentities\u002Ftasks\u002Fflows-get).\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": 15,\n      \"active\": true,\n      \"name\": \"Request handling\"\n    },\n    {\n      \"id\": 13,\n      \"active\": false,\n      \"name\": \"Legal department\"\n    },\n    {\n      \"id\": 11,\n      \"active\": false,\n      \"name\": \"Certificate requests to accounting\"\n    }\n  ]\n}\n```\n\n## Error response example\n\n422 — the field names in `select` are in lowercase:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Invalid select data\",\n    \"b24Code\": \"0\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|----------|\n| 400 | `INVALID_PARAMS` | A query parameter other than `select`, `filter`, `order`, `group`, and `start` was passed: `query contains unsupported fields` |\n| 400 | `INVALID_PARAMS` | `select` or `group` is not a JSON array: `select must be a JSON array`, `group must be a JSON array` |\n| 400 | `INVALID_PARAMS` | `filter` or `order` is not a JSON object: `filter must be a JSON object`, `order must be a JSON object` |\n| 400 | `INVALID_PARAMS` | `select`, `filter`, `order`, or `group` was passed in bracket notation `filter[…]=…` instead of a JSON string: `filter must be JSON`, and likewise for the others |\n| 400 | `INVALID_PARAMS` | `start` is not a non-negative integer: `start must be a non-negative safe integer` |\n| 401 | `MISSING_API_KEY` | The `X-Api-Key` header is missing |\n| 401 | `INVALID_API_KEY` | The key is not found |\n| 401 | `TOKEN_MISSING` | The key has no Bitrix24 tokens |\n| 403 | `SCOPE_DENIED` | The key does not have the `task` or `tasks` scope |\n| 422 | `BITRIX_ERROR` | `select` contains an unknown field name or a name not in uppercase: `Invalid select data` |\n| 422 | `BITRIX_ERROR` | `filter` contains an unknown field name or a name not in uppercase: `Invalid filter data` |\n| 422 | `BITRIX_ERROR` | `group` contains an unknown field name or a name not in uppercase: `Invalid group data` |\n| 422 | `BITRIX_ERROR` | `order` contains an unknown field name: `Incorrect sort field` |\n| 429 | `RATE_LIMITED` | The request rate limit of Bitrix24 or the platform was exceeded. Retry after the delay in the `Retry-After` header |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\n**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}`.\n\n## See also\n\n- [Flows and flow tasks](\u002Fdocs\u002Fentities\u002Ftasks\u002Fflows)\n- [Get a flow](\u002Fdocs\u002Fentities\u002Ftasks\u002Fflows-get)\n- [Create a flow](\u002Fdocs\u002Fentities\u002Ftasks\u002Fflows-create)\n- [Update a flow](\u002Fdocs\u002Fentities\u002Ftasks\u002Fflows-update)\n- [Tasks](\u002Fdocs\u002Fentities\u002Ftasks)\n","2026-10-20",{},1794739434770]