---
title: "Update product"
method: PUT
path: "/api/catalog/pvt/product/{productId}"
tags: ["Product"]
---

# Update product

`PUT /api/catalog/pvt/product/{productId}`

Updates an existing product.

>❗ Although some fields are not required to get a response `200 OK`, if you don't send a field or send its value as empty or `null`, all previously configured information will be deleted, and boolean fields will turn to `false`. So, to update a product, you should get its data using the [Get product by ID](https://developers.vtex.com/docs/api-reference/catalog-api#get-/api/catalog/pvt/product/-productId-) endpoint and use it as a template for the current request body.

## Permissions

Any user or [API key](https://developers.vtex.com/docs/guides/api-authentication-using-api-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:

| **Product** | **Category** | **Resource** |
| --------------- | ----------------- | ----------------- |
| Catalog | Content | **Product and SKU Management** |

There are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint. To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).

>❗ To prevent integrations from having excessive permissions, consider the [best practices for managing API keys](https://help.vtex.com/en/tutorial/best-practices-api-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.

## Path parameters

- `productId` integer, required

## Headers

- `Content-Type` string, required
- `Accept` string, required

## Request body

- object
  - `Name` string, required — Product's name. Limited to 150 characters.
  - `DepartmentId` integer — Department ID according to the product's category.
  - `CategoryId` integer, required — Category ID associated with this product.
  - `BrandId` integer, required — Brand ID associated with this product.
  - `LinkId` string — Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`).
  - `RefId` string — Product Reference Code. The limit for the product `RefId` is 100 characters.
  - `IsVisible` boolean — Whether the product appears in search results and product listing pages (`true`) or doesn't (`false`). Typically used for gift items. Even when set as `false`, the product can still be added to the shopping cart. Although this isn't a mandatory field, if you don't send it in the request, its value will be automatically set to `false`.
  - `Description` string — Product description.
  - `DescriptionShort` string — Short product description. This information can be displayed on both the product page and the shelf, using the following controls: Store Framework: `$product.DescriptionShort`. Legacy CMS Portal: `<vtex.cmc:productDescriptionShort/>`.
  - `ReleaseDate` string — Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections.
  - `KeyWords` string — Store Framework: Deprecated. Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive.
  - `Title` string — Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO.
  - `IsActive` boolean — Activate (`true`) or inactivate (`false`) product.
  - `TaxCode` string — Product tax code, used for tax calculation.
  - `MetaTagDescription` string — Brief description of the product for SEO. It is recommended not to exceed 150 characters.
  - `SupplierId` integer, nullable — Deprecated field.
  - `ShowWithoutStock` boolean — If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock.
  - `AdWordsRemarketingCode` string, nullable — This is a legacy field. Do not take this information into consideration.
  - `LomadeeCampaignCode` string, nullable — This is a legacy field. Do not take this information into consideration.
  - `Score` integer — Value used to set the priority on the search result page.

## Response `200`

OK

- object
  - `Id` integer — Product's unique numerical identifier.
  - `Name` string — Product's name. Limited to 150 characters.
  - `DepartmentId` integer — Department ID according to the product's category.
  - `CategoryId` integer — Category ID associated with this product.
  - `BrandId` integer — Brand ID associated with this product.
  - `LinkId` string — Slug that will be used to build the product page URL. If not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`).
  - `RefId` string — Product reference code.
  - `IsVisible` boolean — Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts.
  - `Description` string — Product description.
  - `DescriptionShort` string — Short product description. This information can be displayed on both the product page and the shelf, using the following controls: Store Framework: `$product.DescriptionShort`. Legacy CMS Portal: `<vtex.cmc:productDescriptionShort/>`.
  - `ReleaseDate` string — Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections.
  - `KeyWords` string — Store Framework: Deprecated. Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive.
  - `Title` string — Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO.
  - `IsActive` boolean — Activate (`true`) or inactivate (`false`) product.
  - `TaxCode` string — Product tax code, used for tax calculation.
  - `MetaTagDescription` string — Brief description of the product for SEO. It's recommended that you don't exceed 150 characters.
  - `SupplierId` integer, nullable — Deprecated field.
  - `ShowWithoutStock` boolean — If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock.
  - `AdWordsRemarketingCode` string — This is a legacy field. Do not take this information into consideration.
  - `LomadeeCampaignCode` string — This is a legacy field. Do not take this information into consideration.
  - `Score` integer — Value used to set the priority on the search result page.

---

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