Обновить цену

PATCH /v1/catalog-prices/:id

Изменяет существующую цену. Поля передаются плоско в корне JSON. Передавайте только изменяемые поля — остальные сохраняют текущие значения.

Параметры

Параметр Тип Обяз. Описание
id (path) number да Идентификатор цены

Поля запроса (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 нет Верхняя граница количественного диапазона

id передаётся в пути (/v1/catalog-prices/:id), в теле его передавать нельзя — он только для чтения.

Примеры

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

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/catalog-prices/5104" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 1750
  }'

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

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/catalog-prices/5104" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 1750
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/catalog-prices/5104', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    price: 1750,
  }),
})

const { success, data } = await res.json()
console.log('Новая цена:', data.price)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/catalog-prices/5104', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    price: 1750,
  }),
})

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 Цена в базовой валюте портала
extraId number | null Дополнительный идентификатор
timestampX string Дата изменения (ISO 8601 с указанием часового пояса)

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

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

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

422 — цена с указанным id не существует:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Price is not exists"
  }
}

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Цена с указанным id не существует (Price is not exists)
400 READONLY_FIELD В теле передан id — это поле заполняется системой и не принимается при обновлении
403 SCOPE_DENIED Ключу не хватает скоупа catalog
401 TOKEN_MISSING Не передан X-Api-Key

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

Известные особенности

priceScale не пересчитывается при изменении price. При создании priceScale совпадает с price. Если обновить только price, в ответе priceScale сохранит прежнее значение.

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