Bulk Set FBA Minimums
POST/api/amazon/:integrationInstance/fba-stock-floors/bulk
Apply the same FBA minimum settings to many product × region pairs.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Either targets (explicit pairs; product_id null = the region default) or — for "All filtered" — filter and/or filter_groups: the FBA inventory list's own filter[...] object (search, floor_status, below_minimum, product_id, column filters such as sku.contains or country_code) and advanced filter tree. The server resolves the targets with the list's query: the distinct product × FBA region pairs among this account's mapped rows the filters select (EU pool countries collapse to one EU pair; unmapped rows are skipped). The account filter is always the route's account. An unknown filter returns 400.
values sets fields; clear_fields nulls them (inherit). More than 500 targets run as a tracked job (202 with tracked_job_log_id). Saving never alerts — the next sweep decides.
Body fields:
- targets (array, required unless filter/filter_groups is sent): pairs of { product_id (integer|null; null = region default), region_code (string) }
- filter (object, optional): the FBA inventory list's filter object (see above)
- filter_groups (optional): the FBA inventory list's advanced filter tree
- values (object, required, may be empty when clear_fields is sent): any of floor_mode (units | days | greater_of), min_units (0–4294967295), min_days_of_cover (1–365), route_type (supplier | own_warehouse | third_party_warehouse | awd), route_source_id, include_inbound, ignore_inbound_after_days (7–180), alerts_enabled
- clear_fields (array, optional): names of the fields above to null so they inherit
At least one of values or clear_fields must change something (422 otherwise). Targets in a region the account does not sell in are skipped and counted in skipped.
Requires the fba_stock_floors.update permission.
Authentication: Bearer token.
Returns 422 on values when the write would leave any target with an incomplete floor (e.g. Days of cover mode with no days anywhere in the product → region default chain), or would make a working floor incomplete by clearing a value nothing replaces; a toggle-only write on a pair without a floor is allowed. A queued apply re-checks each chunk at write time and skips (counts in skipped) targets that became incomplete. values.route_source_id must name an existing supplier (route supplier) or warehouse (any other route) and needs values.route_type; 422 otherwise. Cancelling the tracked job stops it before the next 500-pair chunk.
Request
Responses
- 200
- 202
- 400
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Accepted
Response Headers
Bad Request
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.