---
title: "Changes to Add a variant"
method: POST
path: "/v1/baskets/{basketId}/items"
---

# Changes to Add a variant

`POST /v1/baskets/{basketId}/items`

> Every recorded change to this endpoint, newest first.

## Timeline

Changed in 2 of 3 revisions.

- **2026-07-17** `8cfa924ae703` — 3 breaking, 6 warning, 43 info
- **2023-08-06** `302b7c443b51` — 13 breaking, 28 warning, 11 info

## Changes

- **2026-07-17** `8cfa924ae703` — 3 breaking, 6 warning, 43 info
  - added the new required `query` request parameter `shopId`
  - the request property `quantity` became required
  - the request property `variantId` became required
  - removed the request property `shopId`
  - removed the optional property `items/items/cost` from the response with the `201` status
  - removed the optional property `items/items/items` from the response with the `201` status
  - added the new `campaign` enum value to the `cost/appliedReductions/items/category` response property for the response status `201`
  - added the new `promotion` enum value to the `cost/appliedReductions/items/category` response property for the response status `201`
  - added the new `sale` enum value to the `cost/appliedReductions/items/category` response property for the response status `201`
  - added the new optional `header` request parameter `X-Customer-Token`
  - added the new optional `header` request parameter `X-Order-Custom-Data`
  - added the new optional request property `customData/pricePromotionKey`
  - added the new optional request property `displayData/attribute-1`
  - added the new optional request property `displayData/attribute-2`
  - added the new optional request property `displayData/attribute-3`
  - added the new optional request property `displayData/identifier`
  - added the new optional request property `displayData/meta`
  - added the new optional request property `displayData/name`
  - added the new optional request property `itemGroup`
  - the `quantity` request property default value `1` was removed
  - added the media type `application/json` for the response with the status `409`
  - added the media type `application/json` for the response with the status `412`
  - added the media type `application/json` for the response with the status `413`
  - added the non-success response with the status `404`
  - removed the non-success response with the status `422`
  - added the optional property `applicablePromotions` to the response with the `201` status
  - added the optional property `cost/reference` to the response with the `201` status
  - added the optional property `items/items/availableQuantity` to the response with the `201` status
  - added the optional property `items/items/customData` to the response with the `201` status
  - added the optional property `items/items/deliveryForecast` to the response with the `201` status
  - added the optional property `items/items/displayData` to the response with the `201` status
  - added the optional property `items/items/itemGroup` to the response with the `201` status
  - added the optional property `items/items/key` to the response with the `201` status
  - added the optional property `items/items/lowestPriorPrice` to the response with the `201` status
  - added the optional property `items/items/packageId` to the response with the `201` status
  - added the optional property `items/items/price` to the response with the `201` status
  - added the optional property `items/items/product` to the response with the `201` status
  - added the optional property `items/items/promotion` to the response with the `201` status
  - added the optional property `items/items/promotionId` to the response with the `201` status
  - added the optional property `items/items/quantity` to the response with the `201` status
  - …12 more
- **2023-08-06** `302b7c443b51` — 13 breaking, 28 warning, 11 info
  - removed the media type `application/json` for the response with the status `409`
  - removed the media type `application/json` for the response with the status `412`
  - removed the media type `application/json` for the response with the status `413`
  - the response property `cost/appliedReductions` became optional for the status `201`
  - the response property `cost/appliedReductions/items/amount` became optional for the status `201`
  - the response property `cost/appliedReductions/items/category` became optional for the status `201`
  - the response property `cost/appliedReductions/items/type` became optional for the status `201`
  - the response property `cost/currencyCode` became optional for the status `201`
  - the response property `cost/withTax` became optional for the status `201`
  - the response property `cost/withoutTax` became optional for the status `201`
  - removed the required property `cost/recommendedRetailPrice` from the response with the `201` status
  - removed the required property `cost/tax` from the response with the `201` status
  - removed the success response with the status `206`
  - deleted the `header` request parameter `X-Customer-Token`
  - deleted the `header` request parameter `X-Order-Custom-Data`
  - deleted the `query` request parameter `shopId`
  - removed the request property `customData/pricePromotionKey`
  - removed the request property `displayData/attribute-1`
  - removed the request property `displayData/attribute-2`
  - removed the request property `displayData/attribute-3`
  - removed the request property `displayData/identifier`
  - removed the request property `displayData/meta`
  - removed the request property `displayData/name`
  - removed the request property `itemGroup`
  - removed the optional property `applicablePromotions` from the response with the `201` status
  - removed the optional property `cost/reference` from the response with the `201` status
  - removed the optional property `items/items/availableQuantity` from the response with the `201` status
  - removed the optional property `items/items/customData` from the response with the `201` status
  - removed the optional property `items/items/deliveryForecast` from the response with the `201` status
  - removed the optional property `items/items/displayData` from the response with the `201` status
  - removed the optional property `items/items/itemGroup` from the response with the `201` status
  - removed the optional property `items/items/key` from the response with the `201` status
  - removed the optional property `items/items/lowestPriorPrice` from the response with the `201` status
  - removed the optional property `items/items/packageId` from the response with the `201` status
  - removed the optional property `items/items/price` from the response with the `201` status
  - removed the optional property `items/items/product` from the response with the `201` status
  - removed the optional property `items/items/promotion` from the response with the `201` status
  - removed the optional property `items/items/promotionId` from the response with the `201` status
  - removed the optional property `items/items/quantity` from the response with the `201` status
  - removed the optional property `items/items/status` from the response with the `201` status
  - …12 more

---

[Operation](https://skmtc.dev/scayle/apis/storefront-api-documentation/docs/v1/baskets/:basketId/items/post.md) · [API](https://skmtc.dev/scayle/apis/storefront-api-documentation.md) · [Page](https://skmtc.dev/scayle/apis/storefront-api-documentation/changes/v1/baskets/:basketId/items/post)
