---
title: "Update products"
method: PATCH
path: "/v1/catalog/products"
tags: ["Products"]
---

# Update products

`PATCH /v1/catalog/products`

Update products with specified `sku` and `source` values to replace existing field data with the data supplied in the request.
When the update is processed, the merge strategy is used to apply changes to `scalar` and `object` type fields.

For `array` type fields, a new value can be appended to the existing list. For an object list, you can update a specific object by matching on a key field. The following fields are supported:
* `attributes` - match on `code`
* `images` - match on `url`
* `routes` - match on `path`
* `links` - match on `type` and `sku`
* `bundles` match on `type` and `group`
* `configurations` match on `type` and `attributeCode`
* `externalIds` match on `type` and `origin`

> **Note:** Before submitting an update request, verify that the target entity exists using the [products](https://developer.adobe.com/commerce/services/includes/autogenerated/merchandising-api#products) GraphQL query. Update operations do not verify that the entity exists. Requests targeting a nonexistent entity are accepted, but the update has no effect.

## Headers

- `Authorization` string, required — Authorization Bearer token
- `Content-Type` 'application/json', required
- `Content-Encoding` 'gzip'

## Request body

- FeedProductUpdate[]
  - `sku` string, required — SKU (Stock Keeping Unit) is a unique identifier for a product.
  - `source` Source, required — Source of the entity, for example, "en-US" for US English.
    - `locale` string, required — A single value that represents content locale, for example, English.
  - `name` string — Product name
  - `slug` string — The URL key for the product.
  - `description` string, nullable — The main description for the product
  - `shortDescription` string, nullable — A short description of the product
  - `status` 'ENABLED' | 'DISABLED' — Indicates whether the product is visible on the storefront. The value is "Enabled" if it is visible, and "Disabled" if it is not visible.
  - `visibleIn` string[] — Storefront area where the product is visible. An empty list means that it is not visible as a stand alone product. * `CATALOG`: Product is visible on Product Listing Page and Product Detail Page. * `SEARCH`: Product is visible on Search Results Page and Product Detail Page.
  - `metaTags` ProductMetaAttribute — Meta attributes that are specified in <meta> tags.
    - `title` string — A meta title
    - `keywords` string[] — A meta keywords
    - `description` string — A meta description
  - `attributes` ProductAttribute[] — A list of product attributes.
    - `code` string, required — Product Attribute Code
    - `values` string[], required — A list of value(s) associated with a specified attribute code.
    - `variantReferenceId` string, nullable — The variant reference ID establishes a link between a product variant and the corresponding [Option Value ID](#operation/createProducts!path=options/values/id&t=request) in a configurable product. A variant reference ID can be specified only for a product that represents a variant of a configurable product.
  - `images` ProductImage[] — A list of product images.
    - `url` string, required — Media resource URL
    - `label` string — Media resource label
    - `roles` string[] — Roles associated with this image that determine how the image is used on the storefront. - `BASE`: Product image is visible as a main image on the Product Detail Page. - `SMALL`: Product image is visible as a main image on the Category or search result page or other product listing pages. - `THUMBNAIL`: Thumbnail images appear in the thumbnail gallery, shopping cart, etc. - `SWATCH`: A swatch can be used to illustrate the color, pattern, or texture.
    - `customRoles` string[] — Custom image role. Merchants can define custom roles in addition to the predefined values.
  - `links` ProductLink[] — A list of linked SKUs. For product variants, this is a required field that establishes a link between a product variant and the corresponding configurable product. `VARIANT_OF` link type must be specified to establish a connection to the configurable product SKU.
    - `type` string, required — Product link type. Merchants can define custom types in addition to the predefined values. - `VARIANT_OF` link type must be specified to establish a connection to the configurable product SKU. - `IN_BUNDLE` link type must be specified to establish a connection to the bundle product SKU.
    - `sku` string, required — Product SKU
  - `routes` ProductRoutes[] — A list of product routes.
    - `path` string, required — URL path
    - `position` integer — Position of a product in the URL path. The default value is 0.
  - `configurations` ProductConfiguration[] — Composite products, such as configurable products, must provide a list of product options that a shopper can select (for example, "color", "size", etc.).
    - `attributeCode` string, required — Product option attribute code. For `CONFIGURABLE` or `SWATCH` option types, this ID must match the ["attribute code"](#operation/createProducts!path=attributes/code&t=request) used for the configurable product (for example, "color").
    - `label` string — Option label
    - `defaultVariantReferenceId` string, nullable — Specifies the pre-selected value variant reference id of the current option.
    - `type` 'CONFIGURABLE' | 'SWATCH', required — Option type. Indicates the product type the option can be assigned to. - `CONFIGURABLE`: Configurable product option - `SWATCH`: Swatch product option. Must be used for color or text swatches attributes
    - `values` ProductOptionValue[], required — A list of option values. Defines option values available to shoppers (for example, "red" color or "large" size).
      - `variantReferenceId` string, required — Option value ID. For `CONFIGURABLE` or `SWATCH` option types, this ID must match the ["variantReferenceId"](#operation/createProducts!path=attributes/variantReferenceId&t=request) defined in the product variant.
      - `label` string — Option value label
      - `colorHex` string — A hex representation of the color of the option value. Can be used for option with a SWATCH type.
      - `imageUrl` string — Image URL of the option value. Can be used for option with a SWATCH type.
  - `bundles` ProductBundle[] — Composite products, such as bundle products, must include a list of individual products that are part of the bundle, organized into groups (for example, "shirts", "pants", "accessories").
    - `group` string, required — Name of the group that organizes the bundle items. This helps in categorizing the items within the bundle for better organization. For example, groups can be "shirts", "pants", "accessories", etc.
    - `required` boolean — Indicates whether a shopper is required to select any products from this group to add the bundle to the shopping cart.
    - `multiSelect` boolean — Indicates whether multiple products can be selected by a shopper.
    - `defaultItemSkus` string[] — A list of default product SKUs that are selected in this bundle group.
    - `items` ProductBundleItem[], required — A list of individual products that are part of the bundle. Each item in the list represents a product that can be selected as part of the bundle.
      - `sku` string, required — Product SKU of the bundle item.
      - `qty` number, float — Quantity of the item in the bundle.
      - `userDefinedQty` boolean — Indicates whether the quantity of the item in the bundle can be defined by a shopper.
  - `externalIds` ProductExternalId[] — A list of external IDs for the product.
    - `id` string, required — External ID of the product.
    - `origin` string, required — External ID origin. Specifies the system that generated the external ID, such as Adobe Commerce, Google Product Ratings, etc.

## Response `200`

All items accepted and will be processed asynchronously

## Other responses

- `400` — Some of the received items are invalid. Check the "message" and "errors" fields for details. Common causes of validation errors include: * **Invalid SKU**: SKU does not exist in the catalog * **Invalid Price Book**: Price book ID does not exist * **Invalid Discount Code**: Duplicate or invalid discount codes * **Invalid Tier Quantities**: Quantities not in ascending order or less than 2 * **Configurable Product Price**: Attempting to set price for configurable product SKU * **Invalid Price Format**: Non-numeric or negative price values * **Incorrect Category Slug**: Invalid category slug format * **Incorrect hierarchy configuration**: Misconfiguration of price book parent-child relationship
- `401` — Verify that the Bearer token provided in the `Authorization` header is still valid.
- `403` — Verify that the `Authorization` header is present, and that the Bearer token is still valid.
- `429` — Indicates that a client has exceeded the rate limit of 300 requests per minute. Check the `retry-after` header to get the time (in seconds) to wait before sending the next request.

---

[API](https://skmtc.dev/adobe/apis/catalog-data-ingestion-api.md) · [All operations](https://skmtc.dev/adobe/apis/catalog-data-ingestion-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/adobe/catalog-data-ingestion-api/revisions/ca8c8f2680fe/schema)
