Get lowest prices for many SKUs in one call
POST/partner/lowest/bulk
Resolves up to 100 SKUs per request. Prefer this over looping
GET /partner/lowest/{sku} — it is the same data at 1/100th the request count.
Each value in results is byte-identical to the body
GET /partner/lowest/{sku} returns for that SKU at that instant (same keys,
same message, same code, same size_map, same product). No extra
per-SKU fields are added — everything this endpoint needs to say about a
SKU is said at the envelope level.
The four envelope arrays are mutually exclusive, and
results ∪ not_found ∪ deferred ∪ errors is exactly the de-duplicated
input set:
| Field | Meaning | Equivalent per-SKU call | What to do |
|---|---|---|---|
results | Resolved | 200 | Use it |
not_found | SKU does not exist in the catalog | 400 + {"message":"SKU not found","code":"0009"} | Stop requesting it |
deferred | Resolvable, but this request hit its internal work budget | — | Retry later — see below |
errors | Transient failure on that SKU | 500 | Retry |
deferred and errors are never the same thing as not_found. Do not
treat them as "SKU does not exist".
About deferred. A small share of SKUs cannot be priced from our fast
store and require an expensive live computation. Each bulk request performs
only a handful of those (currently 5), and there is an additional
server-side rate ceiling on them; everything over budget comes back in
deferred. This is the same cohort the catalog manifest marks
price_source: "live". Consequences to design for:
- Do not hot-loop the deferred set. Retrying immediately mostly returns the same SKUs again. Spread them over your normal polling schedule.
GET /partner/lowest/{sku}will resolve them one at a time, but it is the expensive path this endpoint exists to move you off, and it consumes the same request rate limit. Use it for the few SKUs you genuinely need now, not as a bulk substitute.- A body composed largely of
price_source: "live"SKUs will return mostlydeferred. That is expected, not an outage.
Duplicate SKUs in the request are collapsed (not an error); compare
requested vs deduped. Unknown top-level body keys are ignored.
Responses are not cached by intermediaries (unlike the GET variant,
which carries max-age=300).
Request
Responses
- 200
- 400
- 500
Bulk lowest prices resolved
Invalid request body
Internal server error