For AI agents: markdown of this page — /docs-content-en/entities/catalog-services/fields.md documentation index — /llms.txt

Service fields

GET /v1/catalog-services/fields

Returns the catalog service field reference with labels, types, write flags and dictionaries of allowed values, plus the fields available for aggregation and the operations available in a batch request.

The reference contains 28 static service fields. Pass ?iblockId=<catalog ID> to also receive catalog properties of the form propertyNNN when Bitrix24 returns the dynamic field metadata successfully. Get the catalog ID from GET /v1/catalogs. Property values arrive in the GET /v1/catalog-services/:id response; their names and types are also available from GET /v1/catalog-product-properties.

The dateCreate, timestampX, dateActiveFrom, and dateActiveTo fields are not accepted in filter: the request returns 400 UNKNOWN_FILTER_FIELD before calling Bitrix24. These dates remain available in select and responses.

Parameters

Parameter Type Required Description
ParameteriblockId (query) Typenumber Requiredno DescriptionProduct catalog ID from GET /v1/catalogs — a catalog whose productIblockId is empty. With it, a successful response is extended with the catalog properties propertyNNN. Without it, and also when Bitrix24 refuses the dynamic field metadata (for example, no catalog has that ID), the response has 28 static fields and the fields_partial warning in meta.warnings

Examples

curl — personal key

Terminal
curl "https://vibecode.bitrix24.com/v1/catalog-services/fields?iblockId=25" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl "https://vibecode.bitrix24.com/v1/catalog-services/fields?iblockId=25" \
  -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/catalog-services/fields?iblockId=25', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-services/fields?iblockId=25', {
  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 keyed by field name; each value contains the type, the write flags, a display label and — for fields with a fixed set of values — their dictionary. The set of keys is broken down in the table after the field list. data.aggregatable lists the fields for groupBy in aggregation. data.batch lists the operations available in a batch request.

Field Type RO Description
Fieldid Typenumber ROyes DescriptionService ID
Fieldname Typestring ROno DescriptionService name. Required on create
Fieldactive Typeboolean ROno DescriptionWhether the service is active
Fieldavailable Typeboolean ROno DescriptionWhether the service is available for purchase. Without an explicit value, the service is created with false
FieldiblockId Typenumber ROno¹ DescriptionProduct catalog ID. List: GET /v1/catalogs. Required on create, set on create only
Fieldtype Typenumber ROyes DescriptionRecord type, always 7 for a service. Set by Bitrix24
FieldiblockSectionId Typenumber | null ROno DescriptionPrimary catalog section ID. null — the service is not linked to a section. List: GET /v1/catalog-sections
FieldiblockSection Typeobject ROno DescriptionArray of IDs of all catalog sections the service belongs to. Returned in the single-service response, not supported in the list select. List: GET /v1/catalog-sections
Fieldmeasure Typenumber ROno DescriptionUnit of measure ID. List: GET /v1/catalog-measures
FieldvatIncluded Typeboolean ROno DescriptionVAT is included in the price
FieldvatId Typenumber ROno DescriptionVAT rate ID. List: GET /v1/catalog-vat-rates
Fieldbundle Typeboolean ROyes DescriptionWhether the service is a bundle. Computed by Bitrix24
Fieldcode Typestring | null ROno DescriptionSymbolic code. null if not set
FieldxmlId Typestring ROno DescriptionExternal identifier. If not set, equals the service id as a string
Fieldsort Typenumber ROno DescriptionSort order. Defaults to 500
FielddateActiveFrom Typedatetime ROno DescriptionActivity start date. Not accepted in filters (400 UNKNOWN_FILTER_FIELD)
FielddateActiveTo Typedatetime ROno DescriptionActivity end date. Not accepted in filters (400 UNKNOWN_FILTER_FIELD)
FieldcreatedBy Typenumber ROyes DescriptionID of the user who created the service. List: GET /v1/users
FieldmodifiedBy Typenumber ROyes DescriptionID of the user who last modified the service. List: GET /v1/users
FielddateCreate Typedatetime ROyes DescriptionCreation date. Not accepted in filters (400 UNKNOWN_FILTER_FIELD)
FieldtimestampX Typedatetime ROyes DescriptionLast modification date. Not accepted in filters (400 UNKNOWN_FILTER_FIELD)
FieldpreviewText Typestring ROno DescriptionPreview text
FieldpreviewTextType Typestring ROno DescriptionPreview text format: text or html
FielddetailText Typestring ROno DescriptionDetailed description
FielddetailTextType Typestring ROno DescriptionDetailed description format: text or html
FieldpreviewPicture Typeobject ROno DescriptionPreview image
FielddetailPicture Typeobject ROno DescriptionDetail image
FieldpriceType Typestring ROno DescriptionDeclared in the reference, but not returned in the list or single-service responses. Service prices are set via POST /v1/catalog-prices
FieldpropertyNNN Typeproductproperty ROno DescriptionCatalog property, where NNN is the property id from GET /v1/catalog-product-properties. Returned only with iblockId; multiple-value properties carry multiple: true. The type arrives from Bitrix24 as is and is not one of the five static-field types

¹ iblockId is writable on create only — in the reference it comes back with readonly: false and createOnly: true.

Field labels label and descriptions description arrive in English. Fields with a fixed set of values — previewTextType and detailTextType — also carry an enum dictionary: an array of { value, label }. Send value; label is meant for display.

Field Type Description
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata.fields.<name>.type Typestring DescriptionField type. For the 28 static fields — number, string, boolean, datetime, object. For the dynamic catalog fields returned with iblockId — the Bitrix24 type as is, for example productproperty for a catalog property
Fielddata.fields.<name>.label Typestring DescriptionShort field label
Fielddata.fields.<name>.description Typestring DescriptionExtended field description: its purpose, where to get the list of allowed values, write-time behavior
Fielddata.fields.<name>.readonly Typeboolean Descriptiontrue — the field is filled by the system and is not accepted on create or update
Fielddata.fields.<name>.createOnly Typeboolean Descriptiontrue — the field is accepted on create only; on PATCH it is rejected with READONLY_FIELD. Present on iblockId
Fielddata.fields.<name>.writeOnly Typeboolean Descriptiontrue — the field is accepted on write. Present on iblockSection
Fielddata.fields.<name>.notReturned Typeboolean Descriptiontrue — the field name is not supported in select: list and search reject it with SELECT_FIELD_NOT_RETURNED. Present on iblockSection
Fielddata.fields.<name>.nullable Typeboolean Descriptiontrue — the field can come back as null. The key is present only on such fields
Fielddata.fields.<name>.multiple Typeboolean Descriptiontrue — the dynamic catalog field stores several values and arrives as an array. The key is present only on such fields
Fielddata.fields.<name>.items Typearray DescriptionList items of a dynamic field of type enumeration, as Bitrix24 returned them. The key is present only on such fields
Fielddata.fields.<name>.values Typearray DescriptionDictionary of a dynamic field's values: an array of { value, label }. The key is present when Bitrix24 returned such a dictionary
Fielddata.fields.<name>.default Typenumber | string | boolean | null DescriptionDefault value of a dynamic field. The key is present when Bitrix24 returned it as a scalar or null
Fielddata.aggregatable Typestring[] DescriptionFields for groupBy in aggregation: iblockSectionId
Fielddata.batch Typestring[] DescriptionService operations available in a batch request: create, update, delete
Fieldmeta.warnings Typearray DescriptionWarnings. An element with code: fields_partial arrives without iblockId or when Bitrix24 does not return the dynamic field metadata

Response example

Response without iblockId: static fields only, with the fields_partial warning.

JSON
{
  "success": true,
  "data": {
    "fields": {
      "id": {
        "type": "number",
        "readonly": true,
        "label": "Service identifier",
        "description": "Unique identifier of the catalog service."
      },
      "iblockId": {
        "type": "number",
        "readonly": false,
        "createOnly": true,
        "label": "Catalog ID",
        "description": "Catalog the service belongs to. Available values: GET /v1/catalogs. Set on create only — changing it via PATCH is rejected, a service cannot be moved between catalogs."
      },
      "type": {
        "type": "number",
        "readonly": true,
        "label": "Service type",
        "description": "Bitrix24 service type (7); set by Bitrix24 and read only."
      },
      "iblockSectionId": {
        "type": "number",
        "readonly": false,
        "nullable": true,
        "label": "Catalog section ID",
        "description": "Primary catalog section of the service; null when it is not linked to a section. Available values: GET /v1/catalog-sections."
      },
      "iblockSection": {
        "type": "object",
        "readonly": false,
        "writeOnly": true,
        "notReturned": true,
        "label": "Catalog sections",
        "description": "Array of catalog section IDs the service belongs to. Accepted on create and update only — on read the primary section arrives as the scalar iblockSectionId. Available values: GET /v1/catalog-sections."
      },
      "previewTextType": {
        "type": "string",
        "readonly": false,
        "label": "Preview text format",
        "description": "Format of previewText.",
        "enum": [
          { "value": "text", "label": "Plain text" },
          { "value": "html", "label": "HTML" }
        ]
      }
    },
    "aggregatable": [
      "iblockSectionId"
    ],
    "batch": [
      "create",
      "update",
      "delete"
    ]
  },
  "meta": {
    "warnings": [
      {
        "code": "fields_partial",
        "message": "Dynamic field metadata from Bitrix24 was unavailable; the response carries static schema fields only and some labels may be missing. Retry to obtain the complete set."
      }
    ]
  }
}

The example is trimmed to six fields — one each for the readonly and createOnly flags, the computed type, nullable, the writeOnly + notReturned pair and the enum dictionary. The static reference contains 28 fields; a successful response with iblockId contains the same static fields plus the catalog properties propertyNNN, and carries no fields_partial warning. For a catalog property, type arrives from Bitrix24 as is (productproperty), a multiple-value property carries multiple: true, and when Bitrix24 returned a value dictionary or a default, the keys values, items and default are present too.

Error response example

401 — the key was not passed:

JSON
{
  "success": false,
  "error": {
    "code": "MISSING_API_KEY",
    "message": "API key required. Pass via X-Api-Key header."
  }
}

Errors

HTTP Code Description
HTTP403 CodeSCOPE_DENIED DescriptionThe API key does not have the catalog scope
HTTP401 CodeMISSING_API_KEY DescriptionThe X-Api-Key header was not passed
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.

Known specifics

Catalog properties require iblockId. Without a catalog ID, the response contains static fields and fields_partial. With ?iblockId=<catalog ID>, a successful Bitrix24 response adds propertyNNN properties to the reference and the warning is absent. If Bitrix24 does not return the dynamic fields, the static response with the warning is preserved.

Some fields are not returned in the list by default. The symbolic code code, the external code xmlId, the sort order sort, the VAT rate vatId, the texts, the images and the propertyNNN properties are not returned in the GET /v1/catalog-services response without an explicit ?select=. List the names you need in select to get them in the list. The single-service response, GET /v1/catalog-services/:id, always returns them.

See also