Create or Replace Guardrail Exception
POST/api/v2/sales-channels/:integrationInstance/prices/guardrail-overrides
Creates or replaces guardrail exceptions for one or more listings on this channel.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
An exception is the WHOLE guardrail set — every field below is required. There is no per-field inheritance: a none floor type means the floor is switched off for that target, not that the channel's floor applies.
Accepts a list of targets so one set of values can be applied to a multi-row selection. Re-sending for a target that already has an exception replaces it.
Authentication: requires a Bearer token and update permission on integrations.
Request fields:
scope(required) —listingtarget_ids(required, array of integers, min 1) — listing IDsfloor_type(required) —none,amount, ormargin_pctfloor_value(nullable, numeric, min 0) — required unlessfloor_typeisnoneceiling_type(required) —none,amount, ormarkup_pctceiling_value(nullable, numeric, min 0) — required unlessceiling_typeisnonemax_delta_pct(nullable, numeric, greater than 0, maximum 1000) — null means no change limitmax_delta_action(required) —block_runorskip
Exceptions are scoped to a single listing; there is no product-level scope. A fixed-amount floor above a fixed-amount ceiling is rejected: no price could satisfy both, so every push for that target would be blocked.
Pricing-level bounds. floor_type / ceiling_type also accept tier, which reads the bound from the product's price in the pricing level named by floor_tier_id / ceiling_tier_id (MAP and MSRP are the usual cases). A product with no price in that level simply has NO bound — it is not blocked, unlike a margin_pct rule on a product with no landed cost.
floor_action / ceiling_action choose what happens when a price violates the bound: adjust moves the price to the bound and transmits it, block refuses the listing. Omit them (or send null) to get the type's default — adjust for tier, block for amount and the percentage types. An adjusted price is reported as a pushed line whose detail names the bound that moved it, and the maximum-change limit is measured on the ADJUSTED figure.
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 — 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 Content
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.