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
API
Management
Updated
Apr 26, 2026

management-api:PUT:/api/v1/{team_slug}/{app_slug}/variants/prices/bulk

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.

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

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.

Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.

Parameters2 parameters
NameInRequiredTypeDescription
app_slugpathYesstringApp slug
team_slugpathYesstringTeam slug
Request bodyDocumented body
  • Required: Yes
  • Description: Prices data
  • Content: application/json (object)

Bulk Put Prices Payload

PropertyTypeRequiredDetails
dont_update_price_if_on_salebooleanNoUsed to prevent overwriting price if on_sale.
pricesobject[]YesmaxItems: 50

Bulk Put Price Item

PropertyTypeRequiredDetails
amount_cents_with_taxintegerNomin: 0
market_slugstringYes-
on_salebooleanNo-
reference_price_with_taxintegerNomin: 0
sale_end_timestampstringNo-
sale_price_with_taxintegerNomin: 0
sale_start_timestampstringNo-
statusenum("active", "inactive", "draft")No-
store_group_slugstringYes-
variant_idstringYes-

Generated example (synthetic):

{
  "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"
    }
  ]
}
Responses4 statuses
StatusDescriptionContent
200Prices created or updated successfullyapplication/json (object)
400Invalid requestapplication/json (object)
401Unauthorized accessapplication/json (object)
500Internal server errorapplication/json (object)

200 - object

Bulk Put Prices Response

PropertyTypeRequiredDetails
dataobjectNo-
detailsstring[]NoAdditional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes
successbooleanNo-
Bulk Put Prices
PropertyTypeRequiredDetails
failedobject[]No-
successfulobject[]No-
Bulk Put Price Failed Op
PropertyTypeRequiredDetails
market_slugstringNo-
reasonstringNo-
store_group_slugstringNo-
variant_idstringNo-
Product Variant Price With Store Group
PropertyTypeRequiredDetails
amount_cents_with_taxintegerNo-
created_atstringNo-
idstringNo-
marketobjectNo-
on_salebooleanNo-
reference_price_with_taxintegerNo-
sale_end_timestampstringNo-
sale_price_with_taxintegerNo-
sale_start_timestampstringNo-
statusenum("active", "inactive", "draft")No-
store_groupobjectNo-
updated_atstringNo-
{
  "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

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

401 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

500 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "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.
  • OpenAPI tag: Variants, Bulk
  • OpenAPI summary: Bulk create or update variant prices

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
Purpose

Creates new prices or updates existing prices for product variants in bulk.

Required inputs

app_slug path team_slug path

Primary response

200 ยท Prices created or updated successfully

Operation key

management-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