Создать товар

POST /v1/catalog-products

Создаёт товар в каталоге. Поля передаются плоско в корне JSON. В ответ приходит полный объект созданного товара.

Поля запроса (body)

Поле Тип Обяз. Описание
name string да Название товара
iblockId number да ID каталога. Список: GET /v1/catalogs
active boolean нет Активен ли товар. По умолчанию true
iblockSectionId number нет ID раздела каталога. Список: GET /v1/catalog-sections
measure number нет ID единицы измерения
weight number нет Вес единицы товара
vatIncluded boolean нет НДС включён в цену
canBuyZero boolean нет Разрешить покупку при нулевом остатке
quantityTrace boolean нет Включить учёт количества
subscribe boolean нет Разрешить подписку на товар
barcodeMulti boolean нет Отдельные штрихкоды для единиц товара
withoutOrder boolean нет Доступен к заказу без наличия на складе
purchasingPrice number нет Закупочная цена. Не применяется при включённом управлении складом
purchasingCurrency string нет Валюта закупочной цены. Не применяется при включённом управлении складом
quantity number нет Остаток на складе. Не применяется при включённом управлении складом

Примеры

curl — личный ключ

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/catalog-products" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Кабель USB-C",
    "iblockId": 25,
    "active": true,
    "measure": 9
  }'

curl — OAuth-приложение

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/catalog-products" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Кабель USB-C",
    "iblockId": 25,
    "active": true,
    "measure": 9
  }'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/catalog-products', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Кабель USB-C',
    iblockId: 25,
    active: true,
    measure: 9,
  }),
})

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

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/catalog-products', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Кабель USB-C',
    iblockId: 25,
    active: true,
    measure: 9,
  }),
})

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data object Полный объект созданного товара. Набор полей — как у `GET /v1/catalog-products/:id`

URL карточки созданного товара в Битрикс24 строится из iblockId и id:

https://<portal>.bitrix24.ru/shop/catalog/<iblockId>/product/<id>/

<portal> — домен портала. Доступ ограничен правами сотрудника в Битрикс24.

Пример ответа

Показаны основные поля.

JSON
{
  "success": true,
  "data": {
    "id": 7027,
    "iblockId": 25,
    "iblockSectionId": null,
    "name": "Кабель USB-C",
    "active": true,
    "code": null,
    "measure": 9,
    "available": true,
    "bundle": false,
    "canBuyZero": true,
    "quantityTrace": true,
    "subscribe": true,
    "barcodeMulti": false,
    "withoutOrder": false,
    "vatIncluded": false,
    "purchasingPrice": null,
    "purchasingCurrency": null,
    "quantity": null,
    "dateCreate": "2026-06-15T13:11:32.000Z",
    "timestampX": "2026-06-15T13:11:32.000Z",
    "xmlId": "7027"
  }
}

Пример ответа при ошибке

422 — не передано обязательное поле:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Required fields: name"
  }
}

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Не передано обязательное поле — сообщение перечисляет недостающие (Required fields: name, Required fields: iblockId)
422 BITRIX_ERROR Каталог с указанным iblockId не найден (Iblock Not Found)
400 READONLY_FIELD В теле передано поле только для чтения, например available или bundle
403 SCOPE_DENIED Ключу не хватает скоупа catalog
401 MISSING_API_KEY Не передан заголовок X-Api-Key

Полный список общих ошибок API — Ошибки.

Смотрите также