Update Price Push Settings
PATCH/api/v2/sales-channels/:integrationInstance/prices/settings
Update the push cadence and price guardrails for an integration instance.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Guardrails are applied to every price immediately before it is sent, on every path — scheduled, manual and repricing-driven.
Authentication: Requires Bearer token.
Fields:
- cadence_minutes (required, integer): how often the scheduled push runs. One of 15, 30, 60, 180, 360, 720, 1440.
- floor_type (required, string): none, amount or margin_pct.
- floor_value (required unless floor_type is none, number): the floor amount, or the minimum margin percentage.
- ceiling_type (required, string): none, amount or markup_pct.
- ceiling_value (required unless ceiling_type is none, number): the ceiling amount, or the maximum markup percentage.
- max_delta_pct (optional, number, 0-1000): refuse a price that moves more than this percentage from the last value sent. Omit or null to disable.
- max_delta_action (required, string): skip to refuse only that listing, or block_run to stop the whole run before anything is sent.
- require_dry_run_first (optional, boolean): require a preview before the first live push.
A margin floor cannot be verified without a landed cost, and a listing with no cost is blocked rather than sent. A margin floor of 100% or more is rejected as unsatisfiable.
Requires the integrations.update permission.
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.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
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.