Bulk Update Listing Pricing
POST/api/v2/listings/bulk-update-pricing
Applies a pricing change to many listings at once: pin each listing to a Master of Price and, when SKU.io owns the price, a pricing level — or reset them to inherit from their channel. Takes the same body as Preview Bulk Listing Pricing; run the preview first for a dry run of the same payload.
products:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Selections of up to 25 listings are applied immediately and the response reports applied, unchanged and failed counts. Larger selections are queued as a background job: the response returns the job's tracked_job_log_id and the number of listings queued, and the change is applied in the background. In both cases every updated listing's price is re-resolved through its price-level sequence and the change is recorded in the listing's activity log.
Targeting (one of):
- ids (array of integers, required unless apply_to_all is true) — explicit listing IDs
- apply_to_all (boolean) — target every listing matching the optional filters object
filters (object, used with apply_to_all) — the same filters the listings list accepts, as bare keys:
- search (string) — listing SKU, title, channel listing ID, product SKU or product name
- integration_id (integer), integration_instance_id (integer)
- is_fba (true/false)
- has_product (true/false) — listings linked (or not) to a product
- archived — omit for active listings only; true for archived listings only; all for both
- filter_groups (object) — an advanced filter tree: {"conjunction": "and", "children": [{"type": "condition", "condition": {"column": "price", "operator": "greater_than", "value": 20}}]}. Columns: id, listing_sku, title, sales_channel_listing_id, price, integration_id, is_fba, created_at, updated_at, plus channel document fields (doc_amazon_asin, doc_amazon_brand, doc_amazon_status, doc_shopify_status, doc_shopify_vendor, doc_walmart_published_status, doc_woocommerce_status, doc_ebay_listing_status, doc_bigcommerce_type and their siblings). Operators: is, is_not, contains, does_not_contain, starts_with, ends_with, is_empty, is_not_empty, is_one_of, greater_than, less_than, between.
pricing (required, object):
- inherit (boolean) — when true, clears the listing's own Master of Price and pricing level so it inherits both from its channel; master_of_price and product_pricing_tier_id are then ignored
- master_of_price (string, required unless inherit is true) — one of: sku.io, sales_channel, neither (case-insensitive)
- product_pricing_tier_id (integer, required when master_of_price is sku.io) — the pricing level to pin the listing to; ignored for any other master
Authentication: Requires Bearer token.
Request
Responses
- 200
- 401
- 403
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.