For AI agents: markdown of this page — /docs-content-en/entities/smart-processes/create.md documentation index — /llms.txt
Create a smart process type
POST /v1/smart-processes
Creates a new smart process type with an automatically assigned entityTypeId. After creation, the type is available at /v1/items/:entityTypeId for CRUD operations on items.
Request fields (body)
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
title |
string | yes | — | Smart process name |
isCategoriesEnabled |
boolean | false |
Use custom pipelines and sales tunnels in the smart process | |
isStagesEnabled |
boolean | false |
Use custom stages and kanban in the smart process | |
isBeginCloseDatesEnabled |
boolean | false |
"Start date" and "End date" fields | |
isClientEnabled |
boolean | false |
"Client" field linked to contacts and companies | |
isLinkWithProductsEnabled |
boolean | false |
Linking catalog products | |
isMycompanyEnabled |
boolean | false |
"Your company details" field | |
isObserversEnabled |
boolean | false |
"Observers" field | |
isSourceEnabled |
boolean | false |
"Source" and "More about the source" fields | |
isAutomationEnabled |
boolean | false |
Automation rules and triggers | |
isBizProcEnabled |
boolean | false |
Workflow designer | |
isDocumentsEnabled |
boolean | false |
Document printing | |
isRecyclebinEnabled |
boolean | false |
Recycle bin usage | |
isSetOpenPermissions |
boolean | true |
Make new pipelines available to everyone | |
isUseInUserfieldEnabled |
boolean | false |
Use the smart process in a user field | |
isRecurringEnabled |
boolean | false |
"Recurrence" field | |
isPaymentsEnabled |
boolean | false |
Online payment | |
isCountersEnabled |
boolean | false |
Counters (notifications and badges) | |
relations |
object | {} |
Relations with other CRM entities — see "Relations and user fields" below | |
linkedUserFields |
object | {} |
Set of user fields in which the smart process will be displayed — see "Relations and user fields" below |
Full list of fields: GET /v1/smart-processes/fields.
Examples
curl — personal key
curl -X POST https://vibecode.bitrix24.com/v1/smart-processes \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Supply contracts",
"isStagesEnabled": true,
"isCategoriesEnabled": true,
"isAutomationEnabled": true,
"isBizProcEnabled": true,
"isLinkWithProductsEnabled": true
}'
curl — OAuth application
curl -X POST https://vibecode.bitrix24.com/v1/smart-processes \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Supply contracts",
"isStagesEnabled": true,
"isCategoriesEnabled": true,
"isAutomationEnabled": true,
"isBizProcEnabled": true,
"isLinkWithProductsEnabled": true
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/smart-processes', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
title: 'Supply contracts',
isStagesEnabled: true,
isCategoriesEnabled: true,
isAutomationEnabled: true,
isBizProcEnabled: true,
isLinkWithProductsEnabled: true,
}),
})
const { success, data } = await res.json()
console.log('Type created, entityTypeId:', data.entityTypeId)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/smart-processes', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
title: 'Supply contracts',
isStagesEnabled: true,
isCategoriesEnabled: true,
isAutomationEnabled: true,
isBizProcEnabled: true,
isLinkWithProductsEnabled: true,
}),
})
const { success, data } = await res.json()
Relations and user fields
The relations and linkedUserFields fields are not described in /fields, but they are accepted on creation and saved by Bitrix24.
`relations` — relations with CRM entities
An object with two arrays: parent (parent types) and child (child types).
{
"title": "Supply contracts",
"relations": {
"parent": [
{ "entityTypeId": 2, "isChildrenListEnabled": "Y" }
],
"child": [
{ "entityTypeId": 3, "isChildrenListEnabled": "Y" }
]
}
}
| Record field | Type | Description |
|---|---|---|
entityTypeId |
number | ID of the related type (2 = deals, 3 = contacts, 4 = companies, 7 = quotes, 31 = invoices, 1030+ = smart processes) |
isChildrenListEnabled |
boolean / string | Whether to show the list of this smart process's records in the related type's card |
isChildrenListEnabledformat. The field accepts a booleantrue/false, the strings"Y"/"N", or"true"/"false"— the value is normalized automatically (true,"Y","yes",1→ enabled;false,"N","no",0→ disabled). In responses the flag is always returned as"Y"/"N".
Side effect of isClientEnabled: true: Bitrix24 automatically adds relations with contacts (entityTypeId: 3) and companies (entityTypeId: 4) to relations.parent with the isPredefined: "Y" flag — you do not need to pass them manually.
`linkedUserFields` — display in user fields
An object where the key is a field identifier from another entity in the {ENTITY_CODE}|{FIELD_NAME} format, and the value enables (true) or disables (false) the display.
Value format. The field accepts a boolean
true/false, the strings"Y"/"N", or"true"/"false"— the value is normalized automatically (true,"Y","yes",1→ enabled;false,"N","no",0→ disabled). In responses the flag is always returned as"Y"/"N".
{
"title": "Supply contracts",
"linkedUserFields": {
"TASKS_TASK|UF_CRM_TASK": "Y",
"TASKS_TASK_TEMPLATE|UF_CRM_TASK": "Y",
"CALENDAR_EVENT|UF_CRM_CAL_EVENT": "Y"
}
}
3 fixed keys are supported:
| Key | Where the smart process is displayed |
|---|---|
TASKS_TASK|UF_CRM_TASK |
"CRM item" field in tasks |
TASKS_TASK_TEMPLATE|UF_CRM_TASK |
"CRM item" field in task templates |
CALENDAR_EVENT|UF_CRM_CAL_EVENT |
"CRM item" field in calendar events |
Response fields
| Field | Type | Description |
|---|---|---|
id |
number | Internal record ID of the type |
entityTypeId |
number | Assigned entityTypeId — used in /v1/items/:entityTypeId |
title |
string | Name |
createdBy |
number | Creator |
updatedBy |
number | Last editor |
createdTime |
datetime | Creation date |
updatedTime |
datetime | Modification date |
customSectionId |
number | null | Digital workplace ID (if linked) |
Plus all isXxxEnabled flags in the state that was passed (or false by default). Full list — Type fields.
The list of items of the created type opens in Bitrix24 by entityTypeId:
https://<portal>.bitrix24.com/crm/type/<entityTypeId>/list/category/0/
0 — the main pipeline. <portal> — the Bitrix24 account domain. Access is restricted by the employee's permissions in Bitrix24.
Response example
{
"success": true,
"data": {
"id": 31,
"entityTypeId": 1050,
"title": "Supply contracts",
"createdBy": 1,
"createdTime": "2026-04-21T13:46:45+00:00",
"updatedTime": "2026-04-21T13:46:45+00:00",
"updatedBy": 1,
"customSectionId": null,
"isCategoriesEnabled": true,
"isStagesEnabled": true,
"isBeginCloseDatesEnabled": false,
"isClientEnabled": false,
"isLinkWithProductsEnabled": true,
"isMycompanyEnabled": false,
"isObserversEnabled": false,
"isSourceEnabled": false,
"isAutomationEnabled": true,
"isBizProcEnabled": true,
"isDocumentsEnabled": false,
"isRecyclebinEnabled": false,
"isSetOpenPermissions": true,
"isUseInUserfieldEnabled": false,
"isRecurringEnabled": false,
"isPaymentsEnabled": false,
"isCountersEnabled": false,
"isInitialized": false
}
}
Error response example
422 — a required field was not passed:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "Required field \"Title\" is not filled in"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 401 | MISSING_API_KEY |
The X-Api-Key header was not passed |
| 401 | INVALID_API_KEY |
The key was not found or was revoked |
| 403 | SCOPE_DENIED |
The API key does not have the crm scope |
| 401 | TOKEN_MISSING |
The API key has no configured tokens |
| 400 | READONLY_FIELD |
A read-only field was passed in the body (id, isInitialized, createdTime, and others) |
| 422 | BITRIX_ERROR |
Any error from Bitrix24: title not passed, entityTypeId out of range, the portal's smart process limit exceeded, etc. The specific reason is in the message field |
Typical message values for BITRIX_ERROR:
Required field "Title" is not filled in—titlewas omittedEntityTypeId should be more or equal than 128 and less than 192— anentityTypeIdout of range was passedMaximum number of smart processes exceeded— the Bitrix24 account limit was reached
Full list of general API errors — Errors.
Known specifics
Auto-generation of entityTypeId. Bitrix24 assigns a free identifier itself. If you want to pass your own, the value must be unique and fall into one of the ranges: from 128 to 191 (≥ 128 and < 192), or an even number ≥ 1030. The value is returned in the entityTypeId field of the response — save it and use it in all requests to the type and its items.
After creation isInitialized: false. Bitrix24 has not yet generated the standard stages and pipelines. They are created on the first access to the type in the interface or programmatically — via /v1/statuses and /v1/categories/:entityTypeId.
relations are bidirectional. If you specified parent: [{entityTypeId: 2, ...}], then in deals (type 2) a link to your new type automatically appears in the relations.child field with the isPredefined: "N" flag (a user-defined relation).
isSetOpenPermissions defaults to true — this is the only flag with a positive default. If you need private pipelines, pass false explicitly.