Get Listing Price Push Preview
GET/api/v2/sales-channels/:integrationInstance/prices/listings/:productListing/preview
What the next price push would do for one listing, judged by exactly the same gate the push itself uses — so the preview can never disagree with the run about a floor, a ceiling or a maximum-change verdict. Nothing is transmitted.
integrations:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Requires the integrations.view permission (API tokens: integrations:read scope).
Response data:
- eligible (boolean): SKU.io is the active master of price for this listing on this channel
- master_of_price (string|null): the active master as the listing resolves it —
sku.io,sales_channelorneither - profile (object|null): the effective pricing sync profile
{id, name, source}, where source islisting,productorchannel; null when the channel's inline settings apply - priced_from (object|null):
{tier_id, tier_name, price}— the pricing level the cached price came from - sku_price (number|null): the price SKU.io would send before any bound moves it
- channel_price (number|null): what the channel currently shows, as SKU.io last saw it
- floor / ceiling (object|null): null when the policy has none; otherwise
{type, tier_id, tier_name, value, action, applies, hit, detail}—appliesis false when the bound could not be resolved for this product (e.g. no MAP price),hitis true when the price crosses it, anddetailis the sentence the push would record - max_delta (object|null):
{pct, last_pushed_price, change_pct, exceeded, action}— the maximum-change limit measured against the last pushed price - verdict (string):
push(a price would be sent, possibly adjusted by a bound),unchanged(the channel already holds it),skip(no price or no channel SKU),block(a guardrail refused it) ornot_eligible(SKU.io is not the master of price — the policy shown is what a pin to SKU.io would put in force) - detail (string): one sentence explaining the verdict
- would_send (number|null): the figure that would actually be transmitted after any bound adjusted it; null unless the verdict is
push
Returns 403 when the listing does not belong to this integration instance, and 422 when the channel does not support outbound price push.
Request
Responses
- 200
- 401
- 403
- 404
- 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
Response Headers
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.