Skip to main content

Bulk Assign Pricing Sync Profile to Listings

POST 

/api/v2/sales-channels/:integrationInstance/prices/profile-assignments

Assign a pricing sync profile to many of the channel's listings at once — or clear their own profile so they fall back to their product's, then the channel default.

Required scope: integrations:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Target the listings either by ID list or by the same filter[...] query List Price Comparison accepts (send the filter keys without the filter[] wrapper, e.g. {"status": "out_of_sync"}). Exactly one of the two must be sent — a body with neither is refused, because it would otherwise mean every listing on the channel. IDs that do not belong to this channel are ignored and reported in not_found.

An explicit selection of up to 200 listings is applied immediately (mode: "sync", HTTP 200) and the affected listings are re-priced before the response returns. A larger selection, or any filter scope, runs as a background job (mode: "job", HTTP 202) — the filter is resolved to a fixed list of IDs when the job is queued, so listings that start matching later are not swept in.

Authentication: Requires Bearer token.

Requires the integrations.update permission (API tokens: integrations:write scope).

Request body:

  • pricing_sync_profile_id (integer|null, required — the key must be present): the profile to assign, or null to clear the listings' own profile. An archived profile is refused (422).
  • listing_ids (array of integers, optional): the listings to assign.
  • filters (object, optional): the comparison filters to resolve into listings.

Response data when applied immediately (mode: "sync"):

  • assigned (integer): listings whose profile changed
  • unchanged (integer): listings that already had this profile
  • not_priced (integer): of the changed listings, how many have no price at any level of the new profile's sequence — nothing will be sent for them
  • not_sku_mastered (integer): of the selection, how many are not mastered by SKU.io and so are never pushed regardless of profile
  • not_found (integer): requested IDs that are not listings on this channel

Response data when queued (mode: "job"):

  • tracked_job_log_id (integer): the background job to follow
  • total (integer): listings the job will process

Request

Responses

OK

Response Headers
    Content-Type