---
title: "Create product with category and brand"
method: POST
path: "/api/catalog/pvt/product"
tags: ["Product"]
---

# Create product with category and brand

`POST /api/catalog/pvt/product`

This endpoint allows two types of request:

**Type 1:** Creating a new product as well as a new category path (including subcategories) and a new brand by using `CategoryPath` and `BrandName` parameters.

**Type 2:** Creating a new product given an existing `BrandId` and an existing `CategoryId`.

When creating a product, regardless of the type of request, if there is a need to create a new product with a specific custom product ID, specify the `Id` (integer) in the request body. Otherwise, VTEX will generate the ID automatically.
> Check the [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview)  for a journey-based overview of the Catalog documentation available in the Developer Portal.

## 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.

## Headers

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

## Request body

- union
  - object — Request type that creates a new product as well as a new category path (including subcategories) and a new brand by using `CategoryPath` and `BrandName` parameters.
    - `Id` integer — Product's unique numerical identifier. If not informed, it will be automatically generated by VTEX.
    - `Name` string, required — Product's name. Limited to 150 characters.
    - `CategoryPath` string — Path of categories associated with this product, from the highest level of category to the lowest level, separated by `/`. It is mandatory to use either this field or the `CategoryId` field.
    - `DepartmentId` integer — Department ID according to the product's category.
    - `BrandName` string — Name of the brand that will be associated with this product. It is mandatory to use either this field or the `BrandId` field. If you wish to create a new brand, that is, in case the brand does not exist yet, use this field instead of `BrandId`.
    - `RefId` string — Product Reference Code. The limit for the product `RefId` is 100 characters.
    - `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.
    - `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 (`-`).
    - `Description` string — Product description.
    - `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.
    - `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.
    - `IsActive` boolean — Activate (`true`) or inactivate (`false`) product.
    - `TaxCode` string — Product tax code, used for tax calculation. This field is important for SEO. Limited to 150 characters.
    - `MetaTagDescription` string — Brief description of the product for SEO. It is recommended not to exceed 150 characters.
    - `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.
    - `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.
  - object — Request type that creates a new product given an existing `BrandId` and an existing `CategoryId`.
    - `Id` integer — Product's unique numerical identifier. If not informed, it will be automatically generated by VTEX.
    - `Name` string, required — Product's name. Limited to 150 characters.
    - `DepartmentId` integer — Department ID according to the product's category.
    - `CategoryId` integer — ID of an existing category that will be associated with this product. It is mandatory to use either this field or the `CategoryPath` field.
    - `BrandId` integer — ID of an existing brand that will be associated with this product. It is mandatory to use either this field or the `BrandName` field.
    - `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 — 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. This field is important for SEO. Limited to 150 characters.
    - `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 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.
  - `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, which corresponds to the title of the product page, presented in the browser tab. This field is important for SEO. Limited to 150 characters.
  - `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 — Supplier unique identifier.
  - `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.

---

[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)
