Цены каталога

Цены товаров: список, получение, создание, изменение и удаление. У одного товара может быть несколько цен — по одной на каждый тип цены (catalogGroupId). Цены привязаны к товарам из каталога.

Битрикс24 API: catalog.price.* Скоуп: catalog

Создать цену

POST /v1/catalog-prices

Создаёт цену товара. Поля передаются плоско в корне JSON. У одного товара может быть по одной цене на каждый тип цены (catalogGroupId).

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

Поле Тип Обяз. Описание
productId number да ID товара, к которому относится цена. Список: GET /v1/catalog-products?filter[iblockId]=<id> (значение iblockId — из GET /v1/catalogs)
catalogGroupId number да Тип цены. Базовая цена — 1. Какие типы заведены на портале, видно по значениям catalogGroupId в списке цен
price number да Значение цены
currency string да Валюта цены, например RUB. Список: GET /v1/currencies
quantityFrom number нет Нижняя граница количественного диапазона
quantityTo number нет Верхняя граница количественного диапазона

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/catalog-prices" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": 104,
    "catalogGroupId": 1,
    "price": 1500,
    "currency": "RUB"
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/catalog-prices" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": 104,
    "catalogGroupId": 1,
    "price": 1500,
    "currency": "RUB"
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/catalog-prices', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    productId: 104,
    catalogGroupId: 1,
    price: 1500,
    currency: 'RUB',
  }),
})

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

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/catalog-prices', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    productId: 104,
    catalogGroupId: 1,
    price: 1500,
    currency: 'RUB',
  }),
})

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

Поля ответа

Возвращается полный объект созданной цены.

Поле Тип Описание
id number Идентификатор созданной цены
productId number ID товара
catalogGroupId number Тип цены
price number Значение цены
currency string Валюта цены
quantityFrom number | null Нижняя граница количественного диапазона
quantityTo number | null Верхняя граница количественного диапазона
priceScale number Цена в базовой валюте портала. При создании равна price
extraId number | null Дополнительный идентификатор
timestampX string Дата изменения (ISO 8601 с указанием часового пояса)

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

JSON
{
  "success": true,
  "data": {
    "catalogGroupId": 1,
    "currency": "RUB",
    "extraId": null,
    "id": 5104,
    "price": 1500,
    "priceScale": 1500,
    "productId": 104,
    "quantityFrom": null,
    "quantityTo": null,
    "timestampX": "2026-06-08T14:58:52+03:00"
  }
}

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

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

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

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Не передано обязательное поле — сообщение перечисляет недостающие (Required fields: <имя>)
400 READONLY_FIELD В теле передан id — это поле заполняется системой и не принимается при создании
403 SCOPE_DENIED Ключу не хватает скоупа catalog
401 TOKEN_MISSING Не передан X-Api-Key

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

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