---
title: "Update a product variation"
method: POST
path: "/v1/products/{baseProductId}/variations/{variationId}"
tags: ["Manage Product (Asynchronous API)"]
---

# Update a product variation

`POST /v1/products/{baseProductId}/variations/{variationId}`

Update an existing product variation asynchronously.

## Path parameters

- `baseProductId` string, required
- `variationId` string, required

## Headers

- `x-erid-as-pid` boolean

## Request body

- UpdateProductRequest
  - `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.
  - `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

- `400` — * Bad request
- `401` — * The API key is invalid if you are HTTP Basic Authentication.
- `403` — * The token is invalid if you are using Bearer Token Authentication.
- `404` — * Could not find the product variation.
- `409` — * Unable to handle request because it conflicts with other requests.

---

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