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 the 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.

Examples

In the examples entityTypeId = 156 — replace it with your smart process ID.

curl — personal key

Terminal
curl -X GET https://vibecode.bitrix24.com/v1/items/156/fields \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
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

javascript
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).length)

JavaScript — OAuth application

javascript
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

Field Type Read-only Description
id number yes Item ID
title string Name
xmlId string External code
stageId string Stage. Format: DT{typeId}_{catId}:{stage}
categoryId number Pipeline ID. List: GET /v1/categories/:entityTypeId
assignedById number Person responsible. List: GET /v1/users
companyId number Company ID. Search: GET /v1/companies
contactId number Contact ID. Search: GET /v1/contacts
contactIds array yes Linked contacts
opportunity number Amount
currencyId string Currency. List: GET /v1/currencies
opened boolean Available to everyone
begindate datetime Start date. Stored without time — the passed time is dropped
closedate datetime Completion date. Stored without time — the passed time is dropped
sourceId string Source
observers array Observers
mycompanyId number Own company ID
createdBy number yes Creator
updatedBy number yes Last editor
movedBy number yes Moved the stage
createdTime datetime yes Creation date
updatedTime datetime yes Modification date
movedTime datetime yes Stage change date
isManualOpportunity boolean Amount set manually (Y/Ntrue/false)
isRecurring boolean yes Recurring item flag
lastActivityTime datetime yes Last activity time

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 null when not filled in — in particular xmlId, sourceDescription, lastActivityTime and the UTM fields (utmSource/utmMedium/utmCampaign/utmContent/utmTerm, if enabled on the Bitrix24 account). For type-safe clients (TS), declare such fields as T | null.

/fields reflects the live Bitrix24 contract, not the platform docs shape. 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, user and others), the flag is readonly (not isReadOnly), some fields have a label, and there is no separate isRequired or title. The schema also declares binding fields like contacts (type crm_contact) — this is the input format for create/update. There are no such keys in list/get data; bindings are read via contactId / contactIds. System fields that Bitrix24 returns in list/get but that are not described above (taxValue, webformId, previousStageId, lastActivityBy, lastCommunication*, utm*) are passed through as-is.

Response example

JSON
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true },
      "title": { "type": "string", "readonly": false },
      "stageId": { "type": "string", "readonly": false },
      "begindate": { "type": "datetime", "readonly": false },
      "contacts": { "type": "crm_contact", "readonly": false, "label": "Contacts" },
      "ufCrm156_custom": { "type": "string", "readonly": false },
      "parentId156": { "type": "number", "readonly": false }
    }
  }
}

Fields arrive inside data.fields. The response object also contains data.products (the product rows schema), data.aggregatable (fields available in aggregation) and data.batch.

Error response example

404 — not found:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Item not found"
  }
}

Errors

HTTP Code Description
403 SCOPE_DENIED API key does not have the crm scope
401 TOKEN_MISSING API key has no configured tokens
400 INVALID_DYNAMIC_PARAM entityTypeId is not a positive integer or is reserved (1, 2, 3, 4, 7, 31)

Full list of common API errors — Errors.

See also