For AI agents: markdown of this page — /docs-content-en/entities/categories/get.md documentation index — /llms.txt
Get pipeline
GET /v1/categories/:entityTypeId/:id
Returns a single pipeline by ID within the specified CRM entity type.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ParameterentityTypeId (path) |
Typenumber | Requiredyes | DescriptionCRM entity type ID. Deals — 2, contacts — 3, companies — 4, invoices — 31, smart processes — from GET /v1/smart-processes |
Parameterid (path) |
Typenumber | Requiredyes | DescriptionPipeline ID. List: GET /v1/categories/:entityTypeId |
Parameterselect (query) |
Typestring | Requiredno | DescriptionComma-separated response fields, for example id,name. Without the parameter, all fields are returned. The id field is always returned. Names come from Pipeline fields |
Examples
In the examples, entityTypeId = 2, id = 1 — replace with your values.
curl — personal key
curl -X GET https://vibecode.bitrix24.com/v1/categories/2/1 \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl -X GET https://vibecode.bitrix24.com/v1/categories/2/1 \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/categories/2/1', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { success, data } = await res.json()
console.log('Pipeline:', data.name)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/categories/2/1', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata |
Typeobject | DescriptionPipeline object |
Fielddata.id |
Typenumber | DescriptionPipeline ID. For deals the main pipeline has ID 0 |
Fielddata.name |
Typestring | DescriptionPipeline name |
Fielddata.sort |
Typenumber | DescriptionSort order |
Fielddata.entityTypeId |
Typenumber | DescriptionCRM entity type ID, mirrors the path parameter |
Fielddata.isDefault |
Typeboolean | DescriptionMarks the main pipeline of the type |
Fielddata.originId |
Typestring | null | DescriptionExternal identifier. null for pipelines with no external binding. Deal pipelines only |
Fielddata.originatorId |
Typestring | null | DescriptionSource of the external binding. null for pipelines with none. 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 the main pipeline and for user-created ones. Contact and company pipelines only |
Fieldmeta.warnings |
Typearray | DescriptionReturned when select lists a name that is absent from the pipeline schema, or the createdDate field, which Bitrix24 does not return. The request still runs: a field with an unknown name comes back if the pipeline has it, and is absent otherwise. Each warning is an object with code, field and message, and the code is UNKNOWN_SELECT_FIELD |
The field set depends on the entity type. Deal pipelines return originId and originatorId, except for the main pipeline (id 0). Contact (3) and company (4) pipelines return isSystem and code. Invoice and smart process pipelines return only the common fields. The createdDate field from the pipeline schema is not returned for any type, even when listed in select.
For deals (entityTypeId = 2), get the stages of the main pipeline (id = 0) from GET /v1/statuses?filter[entityId]=DEAL_STAGE and the stages of an additional pipeline (id = N) from GET /v1/statuses?filter[entityId]=DEAL_STAGE_{id} (for example, id = 1 → DEAL_STAGE_1). This deal-stage directory naming rule does not apply to invoices or smart processes.
Response example
{
"success": true,
"data": {
"id": 1,
"name": "Newest",
"sort": 100,
"entityTypeId": 2,
"isDefault": false,
"originId": null,
"originatorId": null
}
}
The main deal pipeline (id 0) comes without originId and originatorId:
{
"success": true,
"data": {
"id": 0,
"name": "General",
"sort": 300,
"entityTypeId": 2,
"isDefault": true
}
}
A contact or company pipeline comes back with isSystem and code:
{
"success": true,
"data": {
"id": 15,
"name": "Vendor contacts",
"sort": 500,
"entityTypeId": 3,
"isDefault": false,
"isSystem": "Y",
"code": "CATALOG_CONTRACTOR_CONTACT"
}
}
Error response example
404 — pipeline not found:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Item not found"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionNo pipeline with the given id in this type |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionentityTypeId does not match an existing CRM type |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionThe CRM type does not support pipelines. Quotes (type 7) have no pipelines |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key lacks the crm scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
Full list of common API errors — Errors.