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.
integrations:writeGrant 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
- 200
- 202
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Accepted
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.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
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.