Bulk create or update variant prices
# Bulk create or update variant prices
Creates new prices or updates existing prices for product variants in bulk. Accepts up to 100 price items with variant, store group, and market information. Each price item can include regular price, sale price, reference price, status, and sale date ranges.
PUT
/api/v1/{team_slug}/{app_slug}/variants/prices/bulk
PurposeCreates new prices or updates existing prices for product variants in bulk.
Required inputsapp_slug path team_slug path
Primary response200 ยท Prices created or updated successfully
Operation keymanagement-api:PUT:/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: `PUT`
- Path: `/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
- Summary: Bulk create or update variant prices
- Description: Creates new prices or updates existing prices for product variants in bulk. Accepts up to 100 price items with variant, store group, and market information. Each price item can include regular price, sale price, reference price, status, and sale date ranges.
- OpenAPI contract:
management-api
- Operation ID: Not documented in the OpenAPI contract.
- Stable operation key: `management-api:PUT:/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 Put Prices Payload
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `dont_update_price_if_on_sale` | boolean | No | Used to prevent overwriting price if on_sale. |
| `prices` | object[] | Yes | maxItems: 50 |
#### Bulk Put Price Item
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `amount_cents_with_tax` | integer | No | min: 0 |
| `market_slug` | 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 | - |
| `store_group_slug` | string | Yes | - |
| `variant_id` | string | Yes | - |
**Generated example (synthetic):**
```json
{
"dont_update_price_if_on_sale": false,
"prices": [
{
"amount_cents_with_tax": 0,
"market_slug": "string",
"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_slug": "string",
"variant_id": "string"
}
]
}
```
## Responses
| Status | Description | Content |
| --- | --- | --- |
| 200 | Prices created or 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 Put 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 Put Prices
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `failed` | object[] | No | - |
| `successful` | object[] | No | - |
##### Bulk Put Price Failed Op
| Property | Type | Required | Details |
| --- | --- | --- | --- |
| `market_slug` | string | No | - |
| `reason` | string | No | - |
| `store_group_slug` | string | No | - |
| `variant_id` | 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": [
{
"market_slug": "string",
"reason": "string",
"store_group_slug": "string",
"variant_id": "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: `PUT`
- Path: `/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
- Operation ID: Not documented in the OpenAPI contract.
- Stable operation key: `management-api:PUT:/api/v1/{team_slug}/{app_slug}/variants/prices/bulk`
- OpenAPI tag: Variants, Bulk
- OpenAPI summary: Bulk create or update variant prices