Create a new Flow tasks.flow.Flow.create
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 who is not an extranet user
The method tasks.flow.Flow.create creates a flow.
The flow must be linked to a group. If a group ID is not provided when creating the flow, a new group will be automatically created, consisting of the creator, administrator, and the flow team.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
flowData* |
Field values for creating the flow (detailed description is provided below) |
Parameter flowData
Required parameters are marked with *
|
Name |
Description |
|
name* |
The name of the flow. Must be unique for each flow. You can check the name using the method tasks.flow.Flow.isExists |
|
description |
Description of the flow |
|
groupId |
The ID of the group to which the flow will be linked. If not specified, a new group will be automatically created |
|
ownerId |
The ID of the flow administrator. If not specified, the creator will be the administrator of the flow |
|
templateId |
The ID of the template that users will use to add tasks to the flow |
|
plannedCompletionTime* |
The planned time to complete the task in seconds |
|
distributionType* |
Distribution type:
More about distribution types can be found in the article Flows: Overview of Methods |
|
responsibleList* |
IDs of employees who will receive tasks. For manual distribution, specify the ID of the flow moderator. For self-distribution or queue distribution, specify the IDs of employees or departments. For example:
If you do not add the suffix |
|
taskCreators |
A list of users who can add tasks to the flow in the format
If you do not add the suffix To allow all users to add tasks, specify the value |
|
matchWorkTime |
Skip weekends and holidays when calculating the task deadline. Accepts values |
|
responsibleCanChangeDeadline |
Can the responsible person change the task deadline. Accepts values |
|
notifyAtHalfTime |
Notify the assignee at half the task deadline. Accepts values |
|
taskControl |
Send the completed task to the creator for review. Accepts values |
|
notifyOnQueueOverflow |
Notify the flow administrator when the number of tasks in the queue exceeds this parameter. Default is |
|
notifyOnTasksInProgressOverflow |
Notify the flow administrator when the number of tasks in progress exceeds this parameter. Default is |
|
notifyWhenEfficiencyDecreases |
Notify the flow administrator when efficiency drops below this parameter. Default is |
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"flowData": {
"name": "Unique Flow Name",
"description": "Flow description",
"plannedCompletionTime": 7200,
"distributionType": "manually",
"responsibleList": [["user","3"]],
"taskCreators": [["meta-user","all-users"]],
"matchWorkTime": 1,
"notifyAtHalfTime": 0
}
}' \
https://your-domain.bitrix24.com/rest/_USER_ID_/_CODE_/tasks.flow.Flow.create
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"flowData": {
"name": "Unique Flow Name",
"description": "Flow description",
"plannedCompletionTime": 7200,
"distributionType": "manually",
"responsibleList": [["user","3"]],
"taskCreators": [["meta-user","all-users"]],
"matchWorkTime": 1,
"notifyAtHalfTime": 0
}
}' \
https://your-domain.bitrix24.com/rest/tasks.flow.Flow.create
try
{
const response = await $b24.callMethod(
'tasks.flow.Flow.create',
{
flowData: {
name: 'Unique Flow Name',
description: 'Flow description',
plannedCompletionTime: 7200,
distributionType: 'manually',
responsibleList: [
[
'user','3'
]
],
taskCreators: [
[
'meta-user','all-users'
]
],
matchWorkTime: 1,
notifyAtHalfTime: 0
}
}
);
const result = response.getData().result;
console.info(result);
}
catch( error )
{
console.error(error);
}
try {
$response = $b24Service
->core
->call(
'tasks.flow.Flow.create',
[
'flowData' => [
'name' => 'Unique Flow Name',
'description' => 'Flow description',
'plannedCompletionTime' => 7200,
'distributionType' => 'manually',
'responsibleList' => [
['user', '3']
],
'taskCreators' => [
['meta-user', 'all-users']
],
'matchWorkTime' => 1,
'notifyAtHalfTime' => 0
]
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error creating flow: ' . $e->getMessage();
}
BX24.callMethod(
'tasks.flow.Flow.create',
{
flowData: {
name: 'Unique Flow Name',
description: 'Flow description',
plannedCompletionTime: 7200,
distributionType: 'manually',
responsibleList: [
[
'user','3'
]
],
taskCreators: [
[
'meta-user','all-users'
]
],
matchWorkTime: 1,
notifyAtHalfTime: 0
}
},
function(result) {
if (result.error()) {
console.error(result.error());
} else {
console.info(result.data());
}
}
);
require_once('crest.php'); // connect CRest PHP SDK
$flowData = [
"name" => "Unique Flow Name",
"description" => "Flow description",
"plannedCompletionTime" => 7200,
"distributionType" => "manually",
"responsibleList" => [["user", "3"]],
"taskCreators" => [["meta-user", "all-users"]],
"matchWorkTime" => 1,
"notifyAtHalfTime" => 0
];
// execute the request to the REST API
$result = CRest::call(
'tasks.flow.Flow.create',
[
'flowData' => $flowData
]
);
// Process the response from Bitrix24
if ($result['error']) {
echo 'Error: '.$result['error_description'];
} else {
print_r($result['result']);
}
Response Handling
HTTP status: 200
{
"result": {
"id": 517,
"creatorId": 1,
"ownerId": 1,
"groupId": 178,
"templateId": 0,
"efficiency": 0,
"active": true,
"plannedCompletionTime": 7200,
"activity": "2024-09-02T15:27:29+00:00",
"name": "Updated Flow Name",
"description": "Updated description",
"distributionType": "manually",
"responsibleList": [
[
"user",
"3"
]
],
"demo": false,
"responsibleCanChangeDeadline": true,
"matchWorkTime": true,
"taskControl": false,
"notifyAtHalfTime": false,
"notifyOnQueueOverflow": 10,
"notifyOnTasksInProgressOverflow": 50,
"notifyWhenEfficiencyDecreases": null,
"taskCreators": [
[
"meta-user",
"all-users"
]
],
"team": [
[
"user",
"3"
]
],
"trialFeatureEnabled": false
}
}
Returned Data
|
Name |
Description |
|
result |
Object with flow data |
|
id |
ID of the created flow |
|
creatorId |
ID of the flow creator. Read-only |
|
ownerId |
ID of the flow administrator |
|
groupId |
ID of the group to which the flow is linked |
|
templateId |
ID of the template used to create tasks in the flow |
|
efficiency |
Efficiency of the flow in percentage. Read-only |
|
active |
Status of the flow's activity |
|
plannedCompletionTime |
Planned time to complete the task in seconds |
|
activity |
Date and time of the last activity in the flow. Read-only |
|
name |
Name of the flow |
|
description |
Description of the flow |
|
distributionType |
Type of task distribution in the flow |
|
responsibleList |
List of responsible persons for tasks in the flow. For manual distribution, this is the flow moderator |
|
demo |
Indicates whether the flow is a demo. System parameter. Read-only |
|
responsibleCanChangeDeadline |
Can the responsible person change the task deadline |
|
matchWorkTime |
Whether to skip weekends and holidays when calculating the task deadline |
|
taskControl |
Whether to send the completed task to the creator for review |
|
notifyAtHalfTime |
Whether to notify the assignee at half the task deadline |
|
notifyOnQueueOverflow |
Number of tasks in the queue, exceeding which will send a notification to the flow administrator (if |
|
notifyOnTasksInProgressOverflow |
Number of tasks in progress, exceeding which will send a notification to the flow administrator (if |
|
notifyWhenEfficiencyDecreases |
Efficiency in percentage, below which a notification will be sent to the flow administrator (if |
|
taskCreators |
List of users who can add tasks to the flow in the format The element |
|
team |
Flow team. For manual distribution, this includes all project participants to which the flow is linked, except for the moderator. For queue and self-distribution, the team is the same as in |
|
trialFeatureEnabled |
Indicates whether the trial period is enabled for the flow. System parameter. Read-only |
Error Handling
HTTP status: 400
{
"error": "0",
"error_description": "Access denied or flow not found"
}
|
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 |
Additional Information |
|
|
Access denied or flow not found |
The account plan does not allow working with flows or the user does not have permission to create a flow |
|
|
|
Unknown error |
|
|
|
Invalid value for |
|
|
A flow with this name already exists |
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
- Update Flow tasks.flow.Flow.update
- Get Flow tasks.flow.Flow.get
- Delete Flow tasks.flow.Flow.delete
- Check the existence of the Flow tasks.flow.Flow.isExists
- Activate/Deactivate Flow tasks.flow.Flow.activate
- Pin or Unpin Flow tasks.flow.Flow.pin