Bulk update variant prices
# Bulk update variant prices
Updates existing variant prices in bulk with partial data. Accepts up to 100 price items to update specific fields such as amount, sale price, reference price, status, and sale date ranges. Only provided fields will be updated.
PATCH
/api/v1/{team_slug}/{app_slug}/variants/prices/bulk
PurposeUpdates existing variant prices in bulk with partial data.
Required inputsapp_slug path team_slug path
Primary response200 ยท Prices updated successfully
Operation keymanagement-api:PATCH:/api/v1/{team_slug}/{app_slug}/variants/prices/bulk
## API ownership
- API family: Management API
- Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data.
- Do not use from: Browser-only storefront code or public clients.
- Guide route: [/apis/management/latest](/apis/management/latest)
The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.
## Operation
- Method: `PATCH`
- Path: `/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
- Summary: Bulk update variant prices
- Description: Updates existing variant prices in bulk with partial data. Accepts up to 100 price items to update specific fields such as amount, sale price, reference price, status, and sale date ranges. Only provided fields will be updated.
- OpenAPI contract:
management-api
- Operation ID: Not documented in the OpenAPI contract.
- Stable operation key: `management-api:PATCH:/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.
## Parameters
| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| app_slug | path | Yes | string | App slug |
| team_slug | path | Yes | string | Team slug |
## Request body
- Required: Yes
- Description: Prices data
- Content: application/json (object)
### Bulk Patch Prices Payload
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `prices` | object[] | Yes | maxItems: 50 |
#### Bulk Patch Price Item
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `amount_cents_with_tax` | integer | No | min: 0 |
| `id` | string | Yes | - |
| `on_sale` | boolean | No | - |
| `reference_price_with_tax` | integer | No | min: 0 |
| `sale_end_timestamp` | string | No | - |
| `sale_price_with_tax` | integer | No | min: 0 |
| `sale_start_timestamp` | string | No | - |
| `status` | enum("active", "inactive", "draft") | No | - |
**Generated example (synthetic):**
```json
{
"prices": [
{
"amount_cents_with_tax": 0,
"id": "string",
"on_sale": false,
"reference_price_with_tax": 0,
"sale_end_timestamp": "string",
"sale_price_with_tax": 0,
"sale_start_timestamp": "string",
"status": "active"
}
]
}
```
## Responses
| Status | Description | Content |
| --- | --- | --- |
| 200 | Prices updated successfully | application/json (object) |
| 400 | Invalid request | application/json (object) |
| 401 | Unauthorized access | application/json (object) |
| 500 | Internal server error | application/json (object) |
### 200 - object
#### Bulk Patch Prices Response
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `data` | object | No | - |
| `details` | string[] | No | Additional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes |
| `success` | boolean | No | - |
##### Bulk Patch Prices
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `failed` | object[] | No | - |
| `successful` | object[] | No | - |
##### Bulk Patch Failed Update
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `id` | string | No | - |
| `reason` | string | No | - |
##### Product Variant Price With Store Group
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `amount_cents_with_tax` | integer | No | - |
| `created_at` | string | No | - |
| `id` | string | No | - |
| `market` | object | No | - |
| `on_sale` | boolean | No | - |
| `reference_price_with_tax` | integer | No | - |
| `sale_end_timestamp` | string | No | - |
| `sale_price_with_tax` | integer | No | - |
| `sale_start_timestamp` | string | No | - |
| `status` | enum("active", "inactive", "draft") | No | - |
| `store_group` | object | No | - |
| `updated_at` | string | No | - |
Generated example (synthetic)
```json
{
"data": {
"failed": [
{
"id": "string",
"reason": "string"
}
],
"successful": [
{
"amount_cents_with_tax": 0,
"created_at": "string",
"id": "string",
"market": {
"active": null,
"country_codes": null,
"created_at": null,
"currency_code": null,
"id": null,
"locale": null,
"name": null,
"slug": null,
"updated_at": null
},
"on_sale": false,
"reference_price_with_tax": 0,
"sale_end_timestamp": "string",
"sale_price_with_tax": 0,
"sale_start_timestamp": "string",
"status": "active",
"store_group": {
"country_of_sale": null,
"created_at": null,
"description": null,
"id": null,
"name": null,
"slug": null,
"store_type": null,
"updated_at": null
},
"updated_at": "string"
}
]
},
"details": [
"string"
],
"success": false
}
```
### 400 - object
#### Error Message
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `details` | string[] | No | - |
| `message` | string | No | - |
| `success` | boolean | No | - |
**Generated example (synthetic):**
```json
{
"details": [
"string"
],
"message": "string",
"success": false
}
```
### 401 - object
#### Error Message
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `details` | string[] | No | - |
| `message` | string | No | - |
| `success` | boolean | No | - |
**Generated example (synthetic):**
```json
{
"details": [
"string"
],
"message": "string",
"success": false
}
```
### 500 - object
#### Error Message
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `details` | string[] | No | - |
| `message` | string | No | - |
| `success` | boolean | No | - |
**Generated example (synthetic):**
```json
{
"details": [
"string"
],
"message": "string",
"success": false
}
```
## Contract identity
Use these fields to confirm you are implementing the intended endpoint contract.
- API family: Management API
- Method: `PATCH`
- Path: `/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
- Operation ID: Not documented in the OpenAPI contract.
- Stable operation key: `management-api:PATCH:/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
- OpenAPI tag: Variants, Bulk
- OpenAPI summary: Bulk update variant prices