For AI agents: markdown of this page — /docs-content-en/entities/items/fields.md documentation index — /llms.txt
Smart process item fields
GET /v1/items/:entityTypeId/fields
Returns a description of all fields for the given smart process type, including user fields (ufCrmN_*) and parent references (parentIdN).
The field set depends on entityTypeId — each smart process type has its own user fields.
Use the entityTypeId field from GET /v1/smart-processes in the /v1/items/:entityTypeId path. The type record's internal id is a different identifier. For example, if a type is returned as { "id": 3, "entityTypeId": 174 }, the path starts with /v1/items/174. Use the returned value rather than assuming all type IDs start at 1030.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ParameterentityTypeId (path) |
Typenumber | Requiredyes | DescriptionSmart process type ID. List: GET /v1/smart-processes |
Examples
The examples use entityTypeId = 156; replace it with the ID of your smart process.
curl — personal key
curl -X GET https://vibecode.bitrix24.com/v1/items/156/fields \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl -X GET https://vibecode.bitrix24.com/v1/items/156/fields \
-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/items/156/fields', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/items/156/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
The label and description values are returned in English, while those the platform takes straight from the Bitrix24 account come in the account language. Request headers do not switch the language.
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata |
Typeobject | DescriptionThe item field schema and the operations available for items of this smart process. Its keys are in the rows below |
Fielddata.fields |
Typeobject | DescriptionThe item field schema: field name → an object with type, readonly, label and description. Some fields also carry extra attributes such as nullable, multiple and importable. The standard fields are listed below, and the ufCrmN_* user fields and parentIdN parent references of this smart process are added to them |
Fielddata.products |
Typeobject | DescriptionOperations on the item's product rows, the setWarning notice that set replaces all rows, and the product row field schema. See Item product fields |
Fielddata.aggregatable |
Typearray | DescriptionStandard fields allowed in the aggregation groupBy: stageId, assignedById, categoryId, createdBy, updatedBy. Numeric functions accept fields of type number |
Fielddata.batch |
Typearray | DescriptionItem write operations available in batch calls: create, update, delete |
Fielddata.import |
Typeobject | DescriptionMethod, path and maximum batch size for importing records |
Standard item fields
| Field | Type | RO | Description |
|---|---|---|---|
Fieldid |
Typenumber | ROyes | DescriptionItem ID |
Fieldtitle |
Typestring | RO | DescriptionName |
FieldxmlId |
Typestring | RO | DescriptionExternal code |
FieldstageId |
Typestring | RO | DescriptionStage. Format: DT{typeId}_{catId}:{stage} |
FieldcategoryId |
Typenumber | RO | DescriptionPipeline ID. List: GET /v1/categories/:entityTypeId |
FieldassignedById |
Typenumber | RO | DescriptionResponsible person. List: GET /v1/users |
FieldcompanyId |
Typenumber | RO | DescriptionCompany ID. Search: GET /v1/companies. Requires the smart process to have the "Client" block enabled, otherwise 400 CLIENT_BLOCK_DISABLED |
FieldcontactId |
Typenumber | RO | DescriptionContact ID. Search: GET /v1/contacts. Requires the smart process to have the "Client" block enabled, otherwise 400 CLIENT_BLOCK_DISABLED |
FieldcontactIds |
Typearray | RO | DescriptionLinked contacts. Send the full list — it replaces the existing links instead of adding to them. Requires the smart process to have the "Client" block enabled, otherwise 400 CLIENT_BLOCK_DISABLED |
Fieldopportunity |
Typenumber | RO | DescriptionAmount. Stored only on types with product rows enabled (isLinkWithProductsEnabled: true); a request with an explicit isManualOpportunity: true on a type without them is refused with 422 AMOUNT_NOT_APPLIED instead of a false success |
FieldcurrencyId |
Typestring | RO | DescriptionCurrency. List: GET /v1/currencies |
Fieldopened |
Typeboolean | RO | DescriptionAvailable to everyone |
Fieldbegindate |
Typedatetime | RO | DescriptionStart date. Stored without time — the passed time is dropped |
Fieldclosedate |
Typedatetime | RO | DescriptionCompletion date. Stored without time — the passed time is dropped |
FieldsourceId |
Typestring | RO | DescriptionSource |
FieldsourceDescription |
Typestring | RO | DescriptionFree-form description of the source |
Fieldobservers |
Typearray | RO | DescriptionObservers |
FieldmycompanyId |
Typenumber | RO | DescriptionOwn company ID |
FieldcreatedBy |
Typenumber | ROyes | DescriptionCreator |
FieldupdatedBy |
Typenumber | ROyes | DescriptionLast editor |
FieldmovedBy |
Typenumber | ROyes | DescriptionWho moved the item to its current stage |
FieldcreatedTime |
Typedatetime | ROyes | DescriptionCreation date |
FieldupdatedTime |
Typedatetime | ROyes | DescriptionModification date |
FieldmovedTime |
Typedatetime | ROyes | DescriptionStage change date |
FieldisManualOpportunity |
Typeboolean | RO | DescriptionAmount set manually (Y/N → true/false). Stored only on types with product rows enabled (isLinkWithProductsEnabled: true); a request with an explicit isManualOpportunity: true on a type without them is refused with 422 AMOUNT_NOT_APPLIED instead of a false success |
FieldisRecurring |
Typeboolean | ROyes | DescriptionRecurring item flag |
FieldlastActivityTime |
Typedatetime | ROyes | DescriptionLast activity time |
FieldentityTypeId |
Typenumber | ROyes | DescriptionSmart process type ID. Taken from the path segment, not accepted in the request body |
FieldwebformId |
Typenumber | ROyes | DescriptionID of the CRM form the item was created from. 0 — the item was not created through a form |
FieldutmSource |
Typestring | null | ROyes | Descriptionutm_source tag of the traffic source |
FieldutmMedium |
Typestring | null | ROyes | Descriptionutm_medium tag — the traffic channel, for example cpc or email |
FieldutmCampaign |
Typestring | null | ROyes | Descriptionutm_campaign tag — the advertising campaign name |
FieldutmContent |
Typestring | null | ROyes | Descriptionutm_content tag — the advertisement content or variant |
FieldutmTerm |
Typestring | null | ROyes | Descriptionutm_term tag — the advertisement keyword |
Bitrix24 returns the UTM fields in list/get, but for smart process items it does not accept them in the request body, in a filter or in sorting — hence the read-only mark, and a request with filter[utmSource] returns an error.
isManualOpportunity and isRecurring arrive from Bitrix24 as the string "Y"/"N" — the platform normalizes them to a JSON boolean on read (and accepts true/false on write for isManualOpportunity), just like opened.
User fields (ufCrmN_*) and parent references (parentIdN) depend on the specific smart process. For enumeration-type fields the response contains an items array with the available values.
Nullability. Many fields arrive as
nullwhen not filled in — in particularxmlId,sourceDescription,lastActivityTimeand the UTM fields (utmSource/utmMedium/utmCampaign/utmContent/utmTerm, if enabled on the Bitrix24 account). For type-safe clients (TS), declare such fields asT | null.
/fieldsreflects the live Bitrix24 contract, not the shape of the platform docs. This is a passthrough of the Bitrix24 field schema as is: types arrive in Bitrix24 notation (number,string,boolean,datetime,double,enumeration,crm_contact,crm_status,userand others), the flag isreadonly(notisReadOnly), some fields have alabel, and there is no separateisRequiredortitle. Linked contacts are read and written throughcontactIdandcontactIds. The platform does not list thecontactsservice field of the Bitrix24 schema in this response: no value for it arrives in either list or get responses, and on write Bitrix24 accepts only an empty array — it rejects any non-empty value with an error from its own data layer. The field would be a promise with nothing behind it. System fields that Bitrix24 returns in list/get but that are not described above (taxValue,previousStageId,lastActivityBy,lastCommunication*) are passed through as-is. The fields in the table above are described by the platform itself, so they carry a human-readablelabelanddescription.
Response example
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true },
"title": { "type": "string", "readonly": false },
"stageId": { "type": "string", "readonly": false },
"begindate": { "type": "datetime", "readonly": false },
"ufCrm156_custom": { "type": "string", "readonly": false },
"parentId156": { "type": "number", "readonly": false }
}
}
}
Error response example
400 — the entityTypeId is reserved for a dedicated API:
{
"success": false,
"error": {
"code": "INVALID_DYNAMIC_PARAM",
"message": "entityTypeId 7 has a dedicated API: use /v1/quotes instead"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key does not have the crm scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe API key has no configured tokens |
| HTTP400 | CodeINVALID_DYNAMIC_PARAM |
DescriptionentityTypeId is not a positive integer or is reserved (1, 2, 3, 4, 7, 31) |
| HTTP429 | CodeRATE_LIMITED |
DescriptionRate limit exceeded: 300 requests per minute per portal. All API keys of the portal share one limit. The current limit is returned in the x-ratelimit-limit header. Retry after the delay in the Retry-After header |
For the full list of common API errors, see Errors.