For AI agents: markdown of this page — /docs-content-en/entities/categories/update.md documentation index — /llms.txt
Update a pipeline
PATCH /v1/categories/:entityTypeId/:id
Updates the fields of an existing pipeline of the specified CRM entity type. Pass only the fields being changed, flat at the root of the JSON — without a fields wrapper.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ParameterentityTypeId (path) |
Typenumber | Requiredyes | DescriptionCRM entity type ID. 2 for deals, 3 for contacts, 4 for companies, 31 for invoices, and for a smart process, the value from GET /v1/smart-processes |
Parameterid (path) |
Typenumber | Requiredyes | DescriptionPipeline identifier |
Fields to update (body)
| Field | Bitrix24 | Type | Description |
|---|---|---|---|
Fieldname |
Bitrix24name |
Typestring | DescriptionPipeline name |
Fieldsort |
Bitrix24sort |
Typenumber | DescriptionSort order among the pipelines of this type |
Examples
In the examples, entityTypeId = 2 (deals), id = 15 — replace with your values.
curl — personal key
curl -X PATCH "https://vibecode.bitrix24.com/v1/categories/2/15" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Partners pipeline — updated",
"sort": 700
}'
curl — OAuth application
curl -X PATCH "https://vibecode.bitrix24.com/v1/categories/2/15" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Partners pipeline — updated",
"sort": 700
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/categories/2/15', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Partners pipeline — updated',
sort: 700,
}),
})
const { success, data } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/categories/2/15', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Partners pipeline — updated',
sort: 700,
}),
})
const { success, data } = await res.json()
Response fields
Returns the full pipeline object with the applied changes.
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue when the request succeeds |
Fielddata |
Typeobject | DescriptionThe updated pipeline |
Fielddata.id |
Typenumber | DescriptionPipeline identifier |
Fielddata.entityTypeId |
Typenumber | DescriptionCRM entity type ID, mirrors the path parameter |
Fielddata.name |
Typestring | DescriptionPipeline name |
Fielddata.sort |
Typenumber | DescriptionSort order |
Fielddata.isDefault |
Typeboolean | DescriptionWhether this is the type's main pipeline |
Fielddata.originId |
Typestring | null | DescriptionExternal source identifier. null for pipelines with no external binding. Deal pipelines only |
Fielddata.originatorId |
Typestring | null | DescriptionExternal system identifier. null for pipelines with no external binding. Deal pipelines only |
Fielddata.isSystem |
Typestring | DescriptionSystem pipeline: Y — created by Bitrix24, N — created by a user. Contact and company pipelines only |
Fielddata.code |
Typestring | null | DescriptionSymbolic code of a system pipeline, for example CATALOG_CONTRACTOR_CONTACT. null for user-created ones. Contact and company pipelines only |
The field set depends on the entity type. Deals return originId and originatorId. Contacts (3) and companies (4) return isSystem and code. Invoices and smart processes return only the common fields. The createdDate field from the pipeline schema is not returned.
Response example
{
"success": true,
"data": {
"id": 15,
"name": "Partners pipeline — updated",
"sort": 700,
"entityTypeId": 2,
"isDefault": false,
"originId": null,
"originatorId": null
}
}
Error response example
404 — pipeline with the specified id not found:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Item not found"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeREADONLY_FIELD |
DescriptionA read-only field was sent: id, entityTypeId, isDefault, code, createdDate, originId or originatorId. The message names the specific field |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionPipeline with the specified id not found — message Item not found |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionentityTypeId does not match an existing type — message Smart process not found |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionAPI key lacks the crm scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionAPI key has no configured tokens |
Full list of common API errors — Errors.
Known specifics
Only name and sort are writable. All other pipeline fields except isSystem are read-only — leave them out of the request body, or the request returns 400 READONLY_FIELD. isSystem is passed to Bitrix24, which does not apply it on update. The type's main pipeline is assigned in the Bitrix24 interface.