Para agentes de IA: markdown desta página — /docs-content-en/entities/catalog-skus.md índice da documentação — /llms.txt

Os artigos da documentação estão disponíveis atualmente em inglês.

Catalog SKUs

An SKU, or parent product, is the shared card of a product with offers: it has one name, description, and catalog section, while sizes, colors, and other variants are stored in catalog offers. The methods in this section create, read, update, and delete parent products.

Bitrix24 API: catalog.product.sku.* Scope: catalog

Create an SKU

POST /v1/catalog-skus

Creates a parent product in the product catalog — a shared card to which offers are then linked. Fields are passed flat at the root of the JSON.

Request fields (body)

Field Type Required Description
Fieldname Typestring Requiredyes DescriptionParent product name
FieldiblockId Typenumber Requiredyes DescriptionProduct catalog ID. List: GET /v1/catalogs. An offer catalog — one with productIblockId filled in — is not accepted
Fieldactive Typeboolean Requiredno DescriptionWhether the product is active. Defaults to true
FieldiblockSectionId Typenumber Requiredno DescriptionID of the main catalog section. List: GET /v1/catalog-sections
FieldiblockSection Typenumber[] Requiredno DescriptionArray of IDs of all sections the product is linked to. List: GET /v1/catalog-sections
Fieldcode Typestring Requiredno DescriptionProduct symbolic code
FieldxmlId Typestring Requiredno DescriptionExternal code. If omitted, Bitrix24 sets it to the product id as a string
Fieldsort Typenumber Requiredno DescriptionSort order. Defaults to 500
FielddateActiveFrom Typedatetime Requiredno DescriptionActivity start date
FielddateActiveTo Typedatetime Requiredno DescriptionActivity end date
FieldpreviewText Typestring Requiredno DescriptionPreview text
FieldpreviewTextType Typestring Requiredno DescriptionPreview text format: text or html. Defaults to text
FielddetailText Typestring Requiredno DescriptionDetailed description
FielddetailTextType Typestring Requiredno DescriptionDetailed description format: text or html. Defaults to text
FieldpreviewPicture Typeobject Requiredno DescriptionPreview picture: { "fileData": ["name.png", "<base64>"] }
FielddetailPicture Typeobject Requiredno DescriptionDetail picture, same format
FieldpropertyNNN Typestring Requiredno DescriptionCatalog property value, where NNN is the property id from GET /v1/catalog-product-properties: "property301": "cotton"

The type, available, and bundle fields are computed by Bitrix24 — in the request body they are rejected with 400 READONLY_FIELD.

Examples

curl — personal key

Terminal
curl -X POST "https://vibecode.bitrix24.com/v1/catalog-skus" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Basic T-shirt",
    "iblockId": 25,
    "active": true
  }'

curl — OAuth application

Terminal
curl -X POST "https://vibecode.bitrix24.com/v1/catalog-skus" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Basic T-shirt",
    "iblockId": 25,
    "active": true
  }'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-skus', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Basic T-shirt',
    iblockId: 25,
    active: true,
  }),
})

const { success, data } = await res.json()
console.log('Parent product ID:', data.id)

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-skus', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Basic T-shirt',
    iblockId: 25,
    active: true,
  }),
})

const { success, data } = await res.json()

Response fields

Field Type Description
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata Typeobject DescriptionFull object of the created parent product. The field set is the same as for GET /v1/catalog-skus/:id

Response example

The main fields are shown; propertyNNN properties are omitted. A newly created parent product has type equal to 6.

JSON
{
  "success": true,
  "data": {
    "id": 7203,
    "iblockId": 25,
    "iblockSectionId": null,
    "iblockSection": null,
    "name": "Basic T-shirt",
    "type": 6,
    "active": true,
    "available": false,
    "bundle": false,
    "code": null,
    "xmlId": "7203",
    "sort": 500,
    "previewText": null,
    "previewTextType": "text",
    "detailText": null,
    "detailTextType": "text",
    "createdBy": 1295,
    "modifiedBy": 1295,
    "dateCreate": "2026-10-08T18:45:34.000Z",
    "timestampX": "2026-10-08T18:45:34.000Z"
  }
}

Error response example

400 — a required field was not passed:

JSON
{
  "success": false,
  "error": {
    "code": "MISSING_REQUIRED_FIELDS",
    "message": "Body field \"name\" is required to create catalogSku."
  }
}

Errors

HTTP Code Description
HTTP400 CodeMISSING_REQUIRED_FIELDS DescriptionThe required field name or iblockId was not passed — the message names it. The request is rejected before it reaches Bitrix24
HTTP400 CodeREADONLY_FIELD DescriptionA read-only field was passed in the body: type, available, bundle
HTTP422 CodeBITRIX_ERROR DescriptioniblockId points to an offer catalog (productType is not allowed for this catalog)
HTTP422 CodeBITRIX_ERROR DescriptioniblockId is not a catalog (iblock is not catalog)
HTTP403 CodeSCOPE_DENIED DescriptionThe key lacks the catalog scope
HTTP401 CodeMISSING_API_KEY DescriptionThe X-Api-Key header was not passed

Full list of common API errors — Errors.

Known specifics

The type changes once an offer is linked. A new parent product has type: 6. When the first offer is linked to it — POST /v1/catalog-offers with parentId — the type becomes 3. There is no need to change the type separately, and it cannot be passed.

See also