---
title: "Update a product associated with a given ID in the eCommerce system. The update API uses the PATCH HTTP verb, so only those fields provided in the product object will be updated, and those fields not provided will be left alone. Updating a product with a specified ID that does not exist will result in an error response. <p><strong>Update supports the following fields: sku, quantity, trackQuantity, quantityDelta, warningLimit, name, price, weight, tangible, enabled, fixedShippingRateOnly, fixedShippingRate, description, wholesalePrices, compareAtPrice, productClassId</strong>"
method: PATCH
path: "/products/{id}"
tags: ["products"]
---

# Update a product associated with a given ID in the eCommerce system. The update API uses the PATCH HTTP verb, so only those fields provided in the product object will be updated, and those fields not provided will be left alone. Updating a product with a specified ID that does not exist will result in an error response. <p><strong>Update supports the following fields: sku, quantity, trackQuantity, quantityDelta, warningLimit, name, price, weight, tangible, enabled, fixedShippingRateOnly, fixedShippingRate, description, wholesalePrices, compareAtPrice, productClassId</strong>

`PATCH /products/{id}`

## Path parameters

- `id` string, required

## Headers

- `Authorization` string, required

## Request body

- ProductPatch
  - `attributes` Attribute[]
    - `id` integer
    - `internalName` string
    - `name` string
    - `value` string
  - `categoryIds` integer[]
  - `compareAtPrice` number, double — Product’s sale price displayed strike-out in the customer
  - `compareToPrice` number, double
  - `defaultCategoryId` integer
  - `description` string — Product description in HTML
  - `dimensions` ProductDimensions
    - `height` number, double
    - `length` number, double
    - `width` number, double
  - `enabled` boolean — true/false
  - `fixedShippingRate` number, double
  - `fixedShippingRateOnly` boolean — true/false
  - `galleryImages` GalleryImage[]
    - `alt` string
    - `height` integer
    - `thumbnail` string
    - `url` string
    - `width` integer
  - `googleItemCondition` string — Google Item Condition Status
  - `isShippingRequired` boolean
  - `name` string — Product title
  - `options` Option[]
    - `choices` Choice[]
      - `priceModifier` number, double
      - `priceModifierType` string — PERCENT, ABSOLUTE
      - `text` string
    - `defaultChoice` integer
    - `name` string, required
    - `required` boolean, required — true/false
    - `type` string, required
  - `price` number, double — Base Product price
  - `productClassId` integer — Id of the product type that this product belongs to.
  - `quantity` integer — Amount of product items in stock.
  - `relatedProducts` RelatedProducts
    - `productIds` number[]
    - `relatedCategory` RelatedCategory
      - `categoryId` number, double
      - `enabled` boolean
      - `productCount` number, double
  - `seoDescription` string
  - `seoTitle` string
  - `shipping` Shipping
    - `disabledMethods` string[]
    - `enabledMethods` string[]
    - `flatRate` number, double
    - `methodMarkup` number, double
    - `type` string
  - `showOnFrontpage` number, double
  - `sku` string — Product SKU
  - `tax` ProductTax
    - `defaultLocationIncludedTaxRate` number, double
    - `enabledManualTaxes` integer[]
  - `taxes` Tax[]
    - `name` string
    - `total` number, double
    - `value` number, double
  - `warningLimit` integer
  - `weight` number, double — Product weight in the units defined in store settings
  - `wholesalePrices` WholesalePrices
    - `{quantity}` number, double

## Response `200`

OK - Everything worked as expected

## Other responses

- `400` — Bad Request - Often due to a missing request parameter
- `401` — Unauthorized - An invalid element token, user secret and/or org secret provided
- `403` — Forbidden - Access to the resource by the provider is forbidden
- `404` — Not found - The requested resource is not found
- `405` — Method not allowed - Incorrect HTTP verb used, e.g., GET used when POST expected
- `406` — Not acceptable - The response content type does not match the 'Accept' header value
- `409` — Conflict - If a resource being created already exists
- `415` — Unsupported media type - The server cannot handle the requested Content-Type
- `500` — Server error - Something went wrong on the Cloud Elements server
- `502` — Provider server error - Something went wrong on the Provider or Endpoint's server

---

[API](https://skmtc.net/cloud-elements/apis/ecwid.md) · [All operations](https://skmtc.net/cloud-elements/apis/ecwid/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cloud-elements/ecwid/versions/6c2a6ade2a5b/schema)
