---
title: "Create a new individual or base product with variations"
method: POST
path: "/v1/products"
tags: ["Manage Product (Asynchronous API)"]
---

# Create a new individual or base product with variations

`POST /v1/products`

Create a new product asynchronously. You can create either an individual product or base product with variations.

## Request body

- CreateProductRequest
  - `deploymentRequiredChanges` ProductDeploymentChanges — You must deploy the product to publish these changes.
    - `fulfillmentTypes` string[] — A fulfillment type defines how products are delivered or sent to shoppers.
    - `otherFulfillmentIntegration` object — The Other Fulfillment Integration setting allows you to provide a unique fulfillment for your products. If you have special fulfillment needs that you think could benefit from Other Fulfillment Requirements and integrations, contact your Store Operations team.
      - `fulfillerIds` string[] — The fulfiller's identifier.
    - `transferProduct` string — The transfer product identifier. This is a subscription product term. You can use the product identifier (productID) or the external reference identifier (ERID). The base product cannot be a transfer product.
    - `upgradeProducts` string[] — The upgrade product identifier. This is a subscription product term. You can use the product identifier (productID) or the external reference identifier (ERID). The base product cannot be an upgrade product.
    - `downgradeProducts` string[] — The downgrade product identifier. This is a subscription product term. You can use the product identifier (productID) or the external reference identifier (ERID). The base product cannot be an downgrade product.
  - `liveChanges` UpdateProductLiveChange — The changed attributes under this object will go live immediately. You do not need to deploy these changes. You can use these attributes to insert live changes when creating a product. After creating the product, the fields are read-only. You can apply live changes by using the POST /v1/products/{productId}/live-changes API.
    - `externalReferenceId` string — The external reference identifier. A unique identifier for the product from the Digital River client.
    - `catalogs` object[] — The collection of products for sale on your site. A catalog contains categories to organize your products.
      - `catalogId` string — The catalog identifier.
      - `categories` object[] — Categories are used to organize products within a catalog and often appear on the store to help shoppers locate products and navigate the store/site.
        - `categoryId` string
      - `prices` object[] — The price of the product by currency and locale.
        - `type` 'listPrice' | 'msrp' — The type of the price list. Used to classify the prices in a price list. A price list type may also indicate how the price list or pricing will be used. For example, you can create a MSRP list, a subscription renewal price list, and so on.
        - `prices` object[] — The price of the product by currency and locale.
          - `currency` string — A three-letter ISO 4217 currency code.
          - `locale` string — Optional. If your store supports multiple locales, your price list will contain space for you to enter pricing in currencies used by the locales supported by your store. The price you enter for a product in a currency will be used by any locale that uses the currency in which you entered the price.
          - `configuredPrice` number — The configured price for the product.
  - `localizations` UpdateLocalization[] — The locales supported by the product.
    - `locale` string — The product's supported locale.
    - `isDefault` boolean — When set to "true", the locale is the default locale.
    - `groups` object[] — The grouped attributes.
      - `attributes` object
  - `variations` object[] — Different variations of the product. Only required for a base product.
    - `varyingAttributes` VaryingAttribute[]
      - `attributeName` string
      - `attributeValue` string
    - `deploymentRequiredChanges` ProductDeploymentChanges — You must deploy the product to publish these changes.
      - `fulfillmentTypes` string[] — A fulfillment type defines how products are delivered or sent to shoppers.
      - `otherFulfillmentIntegration` object — The Other Fulfillment Integration setting allows you to provide a unique fulfillment for your products. If you have special fulfillment needs that you think could benefit from Other Fulfillment Requirements and integrations, contact your Store Operations team.
        - `fulfillerIds` string[] — The fulfiller's identifier.
      - `transferProduct` string — The transfer product identifier. This is a subscription product term. You can use the product identifier (productID) or the external reference identifier (ERID). The base product cannot be a transfer product.
      - `upgradeProducts` string[] — The upgrade product identifier. This is a subscription product term. You can use the product identifier (productID) or the external reference identifier (ERID). The base product cannot be an upgrade product.
      - `downgradeProducts` string[] — The downgrade product identifier. This is a subscription product term. You can use the product identifier (productID) or the external reference identifier (ERID). The base product cannot be an downgrade product.
    - `liveChanges` UpdateProductLiveChange — The changed attributes under this object will go live immediately. You do not need to deploy these changes. You can use these attributes to insert live changes when creating a product. After creating the product, the fields are read-only. You can apply live changes by using the POST /v1/products/{productId}/live-changes API.
      - `externalReferenceId` string — The external reference identifier. A unique identifier for the product from the Digital River client.
      - `catalogs` object[] — The collection of products for sale on your site. A catalog contains categories to organize your products.
        - `catalogId` string — The catalog identifier.
        - `categories` object[] — Categories are used to organize products within a catalog and often appear on the store to help shoppers locate products and navigate the store/site.
          - `categoryId` string
        - `prices` object[] — The price of the product by currency and locale.
          - `type` 'listPrice' | 'msrp' — The type of the price list. Used to classify the prices in a price list. A price list type may also indicate how the price list or pricing will be used. For example, you can create a MSRP list, a subscription renewal price list, and so on.
          - `prices` object[] — The price of the product by currency and locale.
            - `currency` string — A three-letter ISO 4217 currency code.
            - `locale` string — Optional. If your store supports multiple locales, your price list will contain space for you to enter pricing in currencies used by the locales supported by your store. The price you enter for a product in a currency will be used by any locale that uses the currency in which you entered the price.
            - `configuredPrice` number — The configured price for the product.
    - `localizations` UpdateLocalization[] — The locales supported by the product.
      - `locale` string — The product's supported locale.
      - `isDefault` boolean — When set to "true", the locale is the default locale.
      - `groups` object[] — The grouped attributes.
        - `attributes` object

## Response `202`

Successful response.

- ProductAdminApiAsyncResponse
  - `taskId` string — The task identifier received in the response when you create or update a product (synchronous API).
  - `receivedTime` string — The date and time when Global Commerce received the task.
  - `taskStatus` 'PUBLISHED' | 'PROCESSING' | 'COMPLETED' | 'FAILED' — The status of the task.
  - `requestType` 'CREATE_PRODUCT' | 'CREATE_VARIATION' | 'UPDATE_PRODUCT' | 'UPDATE_VARIATION' | 'DELETE_VARIATION' | 'DELETE_LOCALE' | 'DEPLOY_PRODUCT' | 'RETIRE_PRODUCT' | 'UPDATE_PRODUCT_LIVE_CHANGE' | 'UPDATE_VARIATION_LIVE_CHANGE' — The request type for this task.

## Other responses

- `401` — * The API key is invalid if you are using HTTP Basic Authentication.
- `403` — * The token is invalid if you are using Bearer Token Authentication.

---

[API](https://skmtc.net/digitalriver/apis/commerce-api-suite-admin-apis.md) · [All operations](https://skmtc.net/digitalriver/apis/commerce-api-suite-admin-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/digitalriver/commerce-api-suite-admin-apis/revisions/a6efafc1669c/schema)
