#Обновить позицию корзины

PATCH /v1/basket-items/:id

Обновляет поля существующей позиции корзины. Передавайте только изменяемые поля плоско в корне JSON — без обёртки fields.

#Параметры

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

#Поля для обновления (body)

Параметр Тип Описание
quantity number Количество
price number Цена за единицу
basePrice number Базовая цена до скидки
discountPrice number Размер скидки за единицу
currency string Валюта
name string Переопределение названия товара
vatRate number Ставка НДС в долях единицы
vatIncluded boolean Включён ли НДС в цену
customPrice boolean Защита цены от автопересчёта
weight number Вес в граммах
measureCode number Код единицы измерения
xmlId string Внешний идентификатор

Редактируются все поля позиции, кроме служебных (id, orderId, productId, productXmlId, catalogXmlId, dateInsert, dateUpdate, dateRefresh). Полный набор доступных полей виден в ответе `GET /v1/basket-items/:id`.

#Примеры

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

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/basket-items/9" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "quantity": 3,
    "discountPrice": 50
  }'

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

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/basket-items/9" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "quantity": 3,
    "discountPrice": 50
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/basket-items/9', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    quantity: 3,
    discountPrice: 50,
  }),
})

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

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/basket-items/9', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    quantity: 3,
    discountPrice: 50,
  }),
})

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

#Поля ответа

Поле Тип Описание
data object Обновлённый объект позиции со всеми полями

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

JSON
{
  "success": true,
  "data": {
    "id": 9,
    "orderId": 33,
    "productId": 119,
    "name": "Домашние Тапочки Любимый Спорт",
    "price": 470,
    "basePrice": 470,
    "discountPrice": 50,
    "currency": "RUB",
    "quantity": 3,
    "vatRate": 0,
    "vatIncluded": true,
    "customPrice": false,
    "canBuy": true,
    "weight": 0,
    "measureCode": 796,
    "measureName": "шт",
    "dateUpdate": "2026-05-13T11:58:14.000Z"
  }
}

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

422 — позиция не найдена:

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

#Ошибки

HTTP Код Описание
422 BITRIX_ERROR Позиция с таким ID не найдена
400 BITRIX_ERROR Некорректное значение поля
403 SCOPE_DENIED API-ключ не имеет скоупа sale
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

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

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

Поля id, orderId, productId, productXmlId, catalogXmlId, dateInsert доступны только для чтения. Битрикс24 проставляет их при создании; попытка изменить — игнорируется. Чтобы перенести позицию в другой заказ, удалите её через `DELETE /v1/basket-items/:id` и создайте новую через `POST /v1/basket-items`.

Защита цены через customPrice. При customPrice: true цена позиции не будет пересчитана автоматически при изменении цены товара в каталоге.

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