Get Inventory Summary
GET/api/storefront/instances/:id/inventory/summary
The counts behind the inventory comparison, plus the settings that produced them. Every count is derived with exactly the same predicates filter[status] uses on the list endpoint, so a count and the filtered list it links to can never disagree.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Status counts — these five partition every listing on the connection, so in_sync + variance + never_pushed + unknown_on_store + not_managed == total:
in_sync— last pushed quantity equals what SKU.io would send now.variance— last pushed quantity differs from what SKU.io would send now; these are the SKUs the next push will re-send.never_pushed— no inventory has been pushed for the SKU yet.unknown_on_store— the store reported it holds no product with that SKU on the last push.not_managed— nothing will ever push the row: the connection's master of stock is not SKU.io, or the product has left the push-eligible set (archived, not a sellable type, SKU cleared). Counted separately and deliberately EXCLUDED from in_sync and variance.
Other fields:
total— listings on this connection.pushed— listings whose last inventory push succeeded. This is an all-time stored outcome on a different axis from the five statuses above, so it does not add into them.last_inventory_push_at— the most recent inventory push timestamp across the connection, or null.selected_warehouse_ids— the warehouses the compared quantity is summed over. An empty array means the tenant-wide total is used.buffer— units held back from the store, subtracted after summing.scheduled— whether scheduled inventory pushes run in this environment at all.master_of_stockvsis_master_of_stock— NOT the same thing.master_of_stockis the raw stored setting value ('sku.io' or 'neither'; it defaults to 'sku.io' when the connection has never been given one).is_master_of_stockis the resolved boolean the push and the comparison actually obey — true only when that setting resolves to SKU.io. Readmaster_of_stockto show or edit the setting; branch onis_master_of_stockto decide whether quantities will be written at all. When it is false, every row reportsnot_managedand no push writes anything.auto_sync— the scheduled push, read from the schedule that is actually registered:cadence(human label),interval_seconds,seconds_until_next(null when the schedule is not running),active, andinactive_reason(null when active) explaining why it is not running — not the master of stock, not this environment, paused, or outbound inventory sync switched off.
Authentication: Bearer token (session or PAT).
Request
Responses
- 200
- 401
- 403
- 404
- 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.
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.