For AI agents: markdown of this page — /docs-content-en/entities/product-sections/fields.md documentation index — /llms.txt
Section fields
GET /v1/product-sections/fields
Returns a reference listing product section fields, their types, and whether they are read-only, plus the list of operations available in a batch request.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/product-sections/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/product-sections/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/product-sections/fields', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { success, data } = await res.json()
console.log('Total fields:', Object.keys(data.fields).length)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/product-sections/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
data.fields is an object whose key matches the field name and whose value contains type (the field type), readonly (true — the field cannot be passed on create or update), label (a human-readable field name in English) and — on a field whose value Bitrix24 never returns — notReturned: true together with a description. Request headers do not switch the language. data.batch is the list of operations accepted by a batch request.
| Field | Bitrix24 | Type | RO | Description |
|---|---|---|---|---|
Fieldid |
Bitrix24ID |
Typenumber | ROyes | DescriptionSection identifier |
Fieldname |
Bitrix24NAME |
Typestring | RO | DescriptionSection name |
FieldcatalogId |
Bitrix24CATALOG_ID |
Typenumber | RO | DescriptionCatalog identifier. List: GET /v1/catalogs |
FieldsectionId |
Bitrix24SECTION_ID |
Typenumber | RO | DescriptionParent section identifier for nesting. null for a root section |
FieldxmlId |
Bitrix24XML_ID |
Typestring | RO | DescriptionExternal identifier for synchronization |
Fieldsort |
Bitrix24SORT |
Typenumber | ROyes | DescriptionSort order, lower comes first. The value is not saved on write and is not returned on read (notReturned: true) — it only works for ordering |
Fieldcode |
Bitrix24CODE |
Typestring | RO | DescriptionSection symbolic code |
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata.fields.<name>.type |
Typestring | DescriptionField type: number, string |
Fielddata.fields.<name>.readonly |
Typeboolean | Descriptiontrue — the field is filled in by the system and not accepted on create or update |
Fielddata.fields.<name>.label |
Typestring | DescriptionHuman-readable field name in English |
Fielddata.fields.<name>.description |
Typestring | DescriptionLonger field description, when there is one |
Fielddata.fields.<name>.notReturned |
Typeboolean | Descriptiontrue — Bitrix24 never returns this field's value in any response. The key is present only on such fields |
Fielddata.batch |
Typestring[] | DescriptionSection operations available in a batch request: create, update, delete |
The sort field is not accepted on write and not returned on read. Verified on a live Bitrix24 account: a value passed on create or update is not saved (and Bitrix24 still reports success for the update), and no response — list, get, search, or the create response — carries it. An explicit select=sort is refused with 400 SELECT_FIELD_NOT_RETURNED. So sending sort in POST or PATCH is now refused with 400 READONLY_FIELD instead of a silent success, and the field reference marks it notReturned: true. Ordering by it does work — ?sort=sort&order=asc and order=desc return sections in different orders. Filtering by it is not supported. To change the order of sections, edit them in the Bitrix24 interface. The id, name, sectionId, xmlId, and code fields support exact-match filtering (and $in); operators return 400 UNSUPPORTED_FILTER. The sectionId, xmlId, and code fields come back with a null value if not set. If code is not provided on create, it is generated from name.
The filter accepts catalogId, but it does not narrow the results: list and search return only sections of the CRM product catalog.
Available includes
The GET /v1/product-sections/fields endpoint returns the list of available includes: catalog, parentSection.
Usage example: Get a product section.
More on includes: Related data.
Response example
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true },
"name": { "type": "string", "readonly": false },
"catalogId": { "type": "number", "readonly": false },
"sectionId": { "type": "number", "readonly": false },
"xmlId": { "type": "string", "readonly": false },
"sort": {
"type": "number",
"readonly": true,
"notReturned": true,
"label": "Sort order",
"description": "Sort order of the section among its siblings. Bitrix24 neither saves a value passed on create or update nor returns one on read, so the field is refused on write with 400 READONLY_FIELD and its value is never returned. The field is listed here so callers can find it and read the explanation. Ordering by it DOES work: pass ?sort=sort&order=asc|desc and Bitrix24 sorts by the stored column. To change the order, edit the section in the Bitrix24 interface."
},
"code": { "type": "string", "readonly": false }
},
"batch": ["create", "update", "delete"]
}
}
Error response example
403 — no scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'crm' scope"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe API key does not have the crm scope |
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header was not provided |
| 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.