---
title: "Delete an item"
method: DELETE
path: "/v1/baskets/{basketId}/items/{itemKey}"
tags: ["baskets"]
---

# Delete an item

`DELETE /v1/baskets/{basketId}/items/{itemKey}`

Removes a specific item from a given basket using the item's key.
The item key can be found when fetching the Basket.

The response will return the updated content of the basket.

## Path parameters

- `basketId` string, required
- `itemKey` string, required

## Query parameters

- `campaignKey` string
- `includeItemsWithoutProductData` boolean
- `with` string[]
- `shopId` string, required

## Headers

- `X-Order-Custom-Data` string
- `X-Customer-Token` string

## Response `200`

The Basket Item was successfully deleted.

- Basket
  - `key` string — A unique key identifying the basket.
  - `items` BasketItem[]
    - `key` string — A unique key for the basket item which can be used for updating or deleting it.
    - `packageId` integer — The package in which the basket item will be send. Corresponds to a package id in the `packages` list of a `Basket`.
    - `quantity` integer — The quantity of the item.
    - `availableQuantity` integer — The total available quantity for the variant which can be added to the basket.
    - `status` 'available' | 'unavailable' — The status of the basket item, either it is 'available' which means in stock or it's unavailable meaning it's out of stock.
    - `variant` Variant
      - `id` integer, required
      - `advancedAttributes` object
      - `appliedPricePromotionKey` string
      - `attributes` object
      - `lowestPriorPrice` LowestPriorPrice — Information about the lowest price in the past 30 days.
        - `withTax` integer, nullable, required — The lowest price including tax.
        - `relativeDifferenceToPrice` number, float, nullable, required — The relative difference from the lowest prior price to the current price. If the value is positive, it means that the current price is higher than the lowest prior price. If the value is negative, it means that the current price is lower than the lowest prior price.
      - `price` Price, required
        - `appliedReductions` AppliedReduction[], required
          - `amount` AppliedReductionAmount, required
            - `absoluteWithTax` integer
            - `relative` number
          - `category` 'sale' | 'campaign' | 'promotion', required
          - `type` string, required
        - `currencyCode` string, required — The currency of the price.
        - `reference` object
          - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
          - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
          - `withoutTax` integer — Reference price excluding the taxes.
          - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
        - `tax` Tax, required
          - `vat` Vat
            - `amount` number
            - `rate` number
        - `withoutTax` integer, required
        - `withTax` integer, required
        - `recommendedRetailPrice` integer, required
      - `productId` integer, required
      - `referenceKey` string, required
      - `firstLiveAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `stock` Stock, required
        - `supplierId` integer, required
        - `warehouseId` integer, nullable, required
        - `quantity` integer, required
        - `isSellableWithoutStock` boolean, required
        - `expectedAvailabilityAt` string, nullable, required
      - `customData` object, required
      - `merchant` Merchant
        - `id` integer, required
        - `key` string, required
        - `name` string, required
        - `legal` object
          - `legaName` string
          - `parentCompanyLegalName` string
          - `streetWithNumber` string
          - `zip` string
          - `city` string
          - `country` string
          - `telephone` string
          - `email` string
          - `registryCourtCity` string
          - `registerNumber` string
          - `parentCompanyRegistryCourtCity` string
          - `parentCompanyRegisterNumber` string
          - `managingDirectors` string
          - `representative` string
          - `shippingMerchantName` string
          - `registryCourtType` string
          - `parentCompanyRegistryCourtType` string
          - `vatId` string
      - `createdAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `updatedAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
    - `product` Product
      - `id` integer, required
      - `advancedAttributes` object
      - `attributes` object
      - `baseCategories` BaseCategory[]
        - `categoryId` integer, required — Unique identifier of the category
        - `categoryName` string, required — Name of the category
        - `categoryParentId` integer, required — Parent ID of the category
        - `categoryPath` string, required — Category path as text
      - `categories` array[]
        - ProductCategory[]
          - `categoryId` integer
          - `categoryHidden` boolean
          - `categoryName` string
          - `categoryProperties` object
            - `is_inheritable` integer
            - `name` string
            - `value` string
          - `shopLevelCustomData` object
            - `appCatName` object
            - `appCatLocalizedConfig` object
          - `countryLevelCustomData` object
            - `appCatCountryName` string
            - `appCatCountryScore` number
            - `appCatCountryBubbleUp` boolean
            - `appCatCountrySampleName` string
            - `appCatCountrySampleConfig` object
            - `appCatCountryLocalizedConfig` object
          - `categoryUrl` string
          - `categorySlug` string
      - `definingAttributes` DefiningAttribute
        - `id` integer, required
        - `label` string, required
      - `images` Image[], required
        - `attributes` object
        - `hash` string
      - `customData` ResponseCustomData, required
      - `isActive` boolean, required — Identifies whether a product is active or not
      - `isNew` boolean, required — Identifies whether a product is new or not
      - `isSoldOut` boolean, required — Identifies if a product is still available to sell
      - `masterKey` string, required — Identifies the master product which this product belongs
      - `firstLiveAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `priceRange` PriceRange
        - `max` Price, required
          - `appliedReductions` AppliedReduction[], required
            - `amount` AppliedReductionAmount, required
              - …
            - `category` 'sale' | 'campaign' | 'promotion', required
            - `type` string, required
          - `currencyCode` string, required — The currency of the price.
          - `reference` object
            - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
            - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
            - `withoutTax` integer — Reference price excluding the taxes.
            - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
          - `tax` Tax, required
            - `vat` Vat
              - …
          - `withoutTax` integer, required
          - `withTax` integer, required
          - `recommendedRetailPrice` integer, required
        - `min` Price, required
          - `appliedReductions` AppliedReduction[], required
            - `amount` AppliedReductionAmount, required
              - …
            - `category` 'sale' | 'campaign' | 'promotion', required
            - `type` string, required
          - `currencyCode` string, required — The currency of the price.
          - `reference` object
            - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
            - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
            - `withoutTax` integer — Reference price excluding the taxes.
            - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
          - `tax` Tax, required
            - `vat` Vat
              - …
          - `withoutTax` integer, required
          - `withTax` integer, required
          - `recommendedRetailPrice` integer, required
      - `reductionRange` ReductionRange
        - `max` Price
          - `appliedReductions` AppliedReduction[], required
            - `amount` AppliedReductionAmount, required
              - …
            - `category` 'sale' | 'campaign' | 'promotion', required
            - `type` string, required
          - `currencyCode` string, required — The currency of the price.
          - `reference` object
            - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
            - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
            - `withoutTax` integer — Reference price excluding the taxes.
            - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
          - `tax` Tax, required
            - `vat` Vat
              - …
          - `withoutTax` integer, required
          - `withTax` integer, required
          - `recommendedRetailPrice` integer, required
        - `min` Price
          - `appliedReductions` AppliedReduction[], required
            - `amount` AppliedReductionAmount, required
              - …
            - `category` 'sale' | 'campaign' | 'promotion', required
            - `type` string, required
          - `currencyCode` string, required — The currency of the price.
          - `reference` object
            - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
            - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
            - `withoutTax` integer — Reference price excluding the taxes.
            - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
          - `tax` Tax, required
            - `vat` Vat
              - …
          - `withoutTax` integer, required
          - `withTax` integer, required
          - `recommendedRetailPrice` integer, required
      - `lowestPriorPrice` LowestPriorPrice — Information about the lowest price in the past 30 days.
        - `withTax` integer, nullable, required — The lowest price including tax.
        - `relativeDifferenceToPrice` number, float, nullable, required — The relative difference from the lowest prior price to the current price. If the value is positive, it means that the current price is higher than the lowest prior price. If the value is negative, it means that the current price is lower than the lowest prior price.
      - `referenceKey` string, required
      - `searchCategoryIds` integer[]
      - `siblings` Product[] — list of Products
      - `variants` Variant[]
        - `id` integer, required
        - `advancedAttributes` object
        - `appliedPricePromotionKey` string
        - `attributes` object
        - `lowestPriorPrice` LowestPriorPrice — Information about the lowest price in the past 30 days.
          - `withTax` integer, nullable, required — The lowest price including tax.
          - `relativeDifferenceToPrice` number, float, nullable, required — The relative difference from the lowest prior price to the current price. If the value is positive, it means that the current price is higher than the lowest prior price. If the value is negative, it means that the current price is lower than the lowest prior price.
        - `price` Price, required
          - `appliedReductions` AppliedReduction[], required
            - `amount` AppliedReductionAmount, required
              - …
            - `category` 'sale' | 'campaign' | 'promotion', required
            - `type` string, required
          - `currencyCode` string, required — The currency of the price.
          - `reference` object
            - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
            - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
            - `withoutTax` integer — Reference price excluding the taxes.
            - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
          - `tax` Tax, required
            - `vat` Vat
              - …
          - `withoutTax` integer, required
          - `withTax` integer, required
          - `recommendedRetailPrice` integer, required
        - `productId` integer, required
        - `referenceKey` string, required
        - `firstLiveAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
        - `stock` Stock, required
          - `supplierId` integer, required
          - `warehouseId` integer, nullable, required
          - `quantity` integer, required
          - `isSellableWithoutStock` boolean, required
          - `expectedAvailabilityAt` string, nullable, required
        - `customData` object, required
        - `merchant` Merchant
          - `id` integer, required
          - `key` string, required
          - `name` string, required
          - `legal` object
            - `legaName` string
            - `parentCompanyLegalName` string
            - `streetWithNumber` string
            - `zip` string
            - `city` string
            - `country` string
            - `telephone` string
            - `email` string
            - `registryCourtCity` string
            - `registerNumber` string
            - `parentCompanyRegistryCourtCity` string
            - `parentCompanyRegisterNumber` string
            - `managingDirectors` string
            - `representative` string
            - `shippingMerchantName` string
            - `registryCourtType` string
            - `parentCompanyRegistryCourtType` string
            - `vatId` string
        - `createdAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
        - `updatedAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `createdAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `updatedAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `indexedAt` string, required — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
    - `price` BasketItemPrice
      - `total` Price
        - `appliedReductions` AppliedReduction[], required
          - `amount` AppliedReductionAmount, required
            - `absoluteWithTax` integer
            - `relative` number
          - `category` 'sale' | 'campaign' | 'promotion', required
          - `type` string, required
        - `currencyCode` string, required — The currency of the price.
        - `reference` object
          - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
          - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
          - `withoutTax` integer — Reference price excluding the taxes.
          - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
        - `tax` Tax, required
          - `vat` Vat
            - `amount` number
            - `rate` number
        - `withoutTax` integer, required
        - `withTax` integer, required
        - `recommendedRetailPrice` integer, required
      - `unit` Price
        - `appliedReductions` AppliedReduction[], required
          - `amount` AppliedReductionAmount, required
            - `absoluteWithTax` integer
            - `relative` number
          - `category` 'sale' | 'campaign' | 'promotion', required
          - `type` string, required
        - `currencyCode` string, required — The currency of the price.
        - `reference` object
          - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
          - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
          - `withoutTax` integer — Reference price excluding the taxes.
          - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
        - `tax` Tax, required
          - `vat` Vat
            - `amount` number
            - `rate` number
        - `withoutTax` integer, required
        - `withTax` integer, required
        - `recommendedRetailPrice` integer, required
    - `lowestPriorPrice` LowestPriorPrice — Information about the lowest price in the past 30 days.
      - `withTax` integer, nullable, required — The lowest price including tax.
      - `relativeDifferenceToPrice` number, float, nullable, required — The relative difference from the lowest prior price to the current price. If the value is positive, it means that the current price is higher than the lowest prior price. If the value is negative, it means that the current price is lower than the lowest prior price.
    - `promotionId` string — The promotion which will be applied to the item.
    - `itemGroup` ItemGroup — An item group allows to define multiple basket items into a unit.
      - `id` string — A unique identifier for the item group which should be used for all basket items of the item group. Any string based identifier can be chosen and it only has to be unique within the current basket.
      - `isMainItem` boolean — Whether or not the current item is the main item within the item group. This property can be used for display purposes to only show the main item within the Checkout.
      - `isRequired` boolean — Whether or not the item is required to be present for the item group. When you delete an item from your basket which is required for the item group, all other items assigned to the item group will also be deleted.
    - `customData` BasketItemCustomData — Custom Data allows to store additional data on each basket item. The information is persisted during the order flow and will be accessible after Scayle's Checkout process on each order item.
      - `pricePromotionKey` string — A price promotion key which will be used for this item during the Checkout process.
    - `displayData` BasketItemDisplayData — Display Data allows to show additional information next to each item during the SCAYLE Checkout process. The properties will remain attached to the basket item during the checkout and order process.
      - `meta` DisplayDataValue
        - `key` string — A key identifying which data is displayed here. The value is not shown in the Scayle Checkout.
        - `label` string — The label explaining the value which will be displayed in the Scayle Checkout for the Basket Item.
        - `value` string — The value which will be displayed in the Scayle Checkout for the Basket Item.
      - `name` DisplayDataValue
        - `key` string — A key identifying which data is displayed here. The value is not shown in the Scayle Checkout.
        - `label` string — The label explaining the value which will be displayed in the Scayle Checkout for the Basket Item.
        - `value` string — The value which will be displayed in the Scayle Checkout for the Basket Item.
      - `identifier` DisplayDataValue
        - `key` string — A key identifying which data is displayed here. The value is not shown in the Scayle Checkout.
        - `label` string — The label explaining the value which will be displayed in the Scayle Checkout for the Basket Item.
        - `value` string — The value which will be displayed in the Scayle Checkout for the Basket Item.
      - `attribute-1` DisplayDataValue
        - `key` string — A key identifying which data is displayed here. The value is not shown in the Scayle Checkout.
        - `label` string — The label explaining the value which will be displayed in the Scayle Checkout for the Basket Item.
        - `value` string — The value which will be displayed in the Scayle Checkout for the Basket Item.
      - `attribute-2` DisplayDataValue
        - `key` string — A key identifying which data is displayed here. The value is not shown in the Scayle Checkout.
        - `label` string — The label explaining the value which will be displayed in the Scayle Checkout for the Basket Item.
        - `value` string — The value which will be displayed in the Scayle Checkout for the Basket Item.
      - `attribute-3` DisplayDataValue
        - `key` string — A key identifying which data is displayed here. The value is not shown in the Scayle Checkout.
        - `label` string — The label explaining the value which will be displayed in the Scayle Checkout for the Basket Item.
        - `value` string — The value which will be displayed in the Scayle Checkout for the Basket Item.
    - `deliveryForecast` DeliveryForecast
      - `deliverable` Deliverable
        - `key` string
        - `quantity` integer
      - `subsequentDelivery` SubsequentDelivery
        - `key` string
        - `quantity` integer
    - `promotion` BasketItemPromotion
      - `id` string — The unique identifier of the promotion
      - `name` string — Promotion name
      - `schedule` object — Promotion's initial and end date, formatted according to RFC 3339.
        - `from` string — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
        - `to` string — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `isActive` boolean — Promotion's status
      - `effect` union
        - AutomaticDiscountEffect — Promotion's effect
          - `type` 'buy_x_get_y' | 'automatic_discount'
          - `additionalData` object
            - `type` 'absolute' | 'relative' — The type is either `absolute` or `relative`.
            - `value` number, float — The value is either a relative percentage or an absolute reduction in cents, determined by the additionalData.type field. If the type is relative, the value should be expressed as a percentage; if the type is absolute, the value will be in cents.
        - BuyXGetYEffect — Promotion's effect
          - `type` 'buy_x_get_y' | 'automatic_discount'
          - `additionalData` object
            - `eligibleItemsQuantity` integer
            - `maxCount` integer
            - `maxCountType` 'per_eligible_items_quantity' | 'per_eligible_uniq_items'
            - `variantIds` integer[]
      - `conditions` Condition[] — Promotion's conditions
        - `level` string
        - `key` string
        - `condition` string
      - `customData` object — Promotion's custom data
      - `priority` number — The priority of the promotion compared to other promotions. This can be used to decide which promotion to apply if there is a conflict between two.
      - `tiers` Tier[]
        - `id` integer
        - `name` string
        - `MOV` integer
        - `effect` object
          - `additionalData` object
            - `type` string
            - `value` number, float
      - `isValid` boolean
      - `failedConditions` object[]
        - `key` string
        - `level` string
  - `cost` Price
    - `appliedReductions` AppliedReduction[], required
      - `amount` AppliedReductionAmount, required
        - `absoluteWithTax` integer
        - `relative` number
      - `category` 'sale' | 'campaign' | 'promotion', required
      - `type` string, required
    - `currencyCode` string, required — The currency of the price.
    - `reference` object
      - `size` integer — Size of the reference (100m, 100ml), but in this field fill in only the value without the unit of measurement.
      - `unit` string — The size of reference unit (KG, ml, L, etc.) without the value
      - `withoutTax` integer — Reference price excluding the taxes.
      - `withTax` integer — Item price including taxes. The price is calculated including taxes and all applicable reductions such as discounts for sale and campaigns (should a campaign key be provided on the request).
    - `tax` Tax, required
      - `vat` Vat
        - `amount` number
        - `rate` number
    - `withoutTax` integer, required
    - `withTax` integer, required
    - `recommendedRetailPrice` integer, required
  - `packages` Package[]
    - `id` integer
    - `carrierKey` string — The carrier key which will deliver the package
    - `deliveryDate` DeliveryDate — The estimated delivery date for the package
      - `min` string
      - `max` string
  - `applicablePromotions` ApplicablePromotion[]
    - `itemId` string, nullable — The Basket Item ID to which the promotion should be applied. This can be null in case of a `bux_x_get_y` effect where the free item is not in the basket yet.
    - `promotion` Promotion
      - `id` string — The unique identifier of the promotion
      - `name` string — Promotion name
      - `schedule` object — Promotion's initial and end date, formatted according to RFC 3339.
        - `from` string — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
        - `to` string — Date string, formatted according to RFC 3339, e.g. 2018-06-01T14:56:08+02:00
      - `isActive` boolean — Promotion's status
      - `effect` union
        - AutomaticDiscountEffect — Promotion's effect
          - `type` 'buy_x_get_y' | 'automatic_discount'
          - `additionalData` object
            - `type` 'absolute' | 'relative' — The type is either `absolute` or `relative`.
            - `value` number, float — The value is either a relative percentage or an absolute reduction in cents, determined by the additionalData.type field. If the type is relative, the value should be expressed as a percentage; if the type is absolute, the value will be in cents.
        - BuyXGetYEffect — Promotion's effect
          - `type` 'buy_x_get_y' | 'automatic_discount'
          - `additionalData` object
            - `eligibleItemsQuantity` integer
            - `maxCount` integer
            - `maxCountType` 'per_eligible_items_quantity' | 'per_eligible_uniq_items'
            - `variantIds` integer[]
      - `conditions` Condition[] — Promotion's conditions
        - `level` string
        - `key` string
        - `condition` string
      - `customData` object — Promotion's custom data
      - `priority` number — The priority of the promotion compared to other promotions. This can be used to decide which promotion to apply if there is a conflict between two.
      - `tiers` Tier[]
        - `id` integer
        - `name` string
        - `MOV` integer
        - `effect` object
          - `additionalData` object
            - `type` string
            - `value` number, float

## Other responses

- `400` — Required parameter is missing or invalid.
- `401` — Authentication failed.
- `404` — The Basket Item doesn't exist for the referenced Basket.
- `408` — Basket is currently locked due to another request, please retry.
- `424` — The API Request failed due to an underlying dependency error.

## Changes

- **2026-07-17** `8cfa924ae703` — 1 breaking, 5 warning, 31 info
  - added the new required `query` request parameter `shopId`
  - removed the optional property `items/items/cost` from the response with the `200` status
  - removed the optional property `items/items/items` from the response with the `200` status
  - added the new `campaign` enum value to the `cost/appliedReductions/items/category` response property for the response status `200`
  - …33 more
- **2023-08-06** `302b7c443b51` — 9 breaking, 20 warning, 8 info
  - the response property `cost/appliedReductions` became optional for the status `200`
  - the response property `cost/appliedReductions/items/amount` became optional for the status `200`
  - the response property `cost/appliedReductions/items/category` became optional for the status `200`
  - the response property `cost/appliedReductions/items/type` became optional for the status `200`
  - …33 more

[Change history](https://skmtc.dev/scayle/apis/storefront-api-documentation/changes/v1/baskets/:basketId/items/:itemKey/delete.md)

---

[API](https://skmtc.dev/scayle/apis/storefront-api-documentation.md) · [All operations](https://skmtc.dev/scayle/apis/storefront-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/scayle/storefront-api-documentation/revisions/8cfa924ae703/schema)
