Create a new Flow tasks.flow.Flow.create
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 allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks 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 account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". 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