List Faire Inventory
GET/api/faire/instances/:integrationInstance/inventory
List the inventory comparison for a Faire integration instance — one row per Faire listing/variant, comparing the SKU.io quantity against the last-known quantity on Faire.
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Rows come from a locally cached snapshot that is kept current by the fetch, push, and recache actions (and by the scheduled inventory sync). Each row's status is derived as:
needs_recalc— the SKU.io quantity is flagged for recalculation and the row is excluded from pushes until recachedsynced— quantities match (negative SKU.io quantities are treated as 0 for the comparison)variance— quantities differ; the row will be included in the next push
Path Parameters:
integrationInstance- The ID of the integration instance
Query Parameters:
page(optional) - Page number (default: 1)per_page(optional) - Results per page (default: 10)sort(optional) - Prefix with-for descending. Allowed:id,sku_quantity,sales_channel_quantity,sales_channel_quantity_updated_at,sales_channel_quantity_synced_at,created_at,updated_at(default:-id)filter[search](optional) - Fuzzy search across listing SKU, listing title, and SKU.io product SKUfilter[status.is](optional) -synced,variance, orneeds_recalc(aliasesin_sync,needs_updateaccepted);status.is_one_oftakes a comma-separated list,status.is_notexcludes one valuefilter[listing_sku.*]/filter[title.*](optional) - Text filters with operators: contains, does_not_contain, is, is_not, is_one_of, is_not_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_emptyfilter[sku_quantity.*]/filter[sales_channel_quantity.*](optional) - Numeric filters with operators: is, is_not, is_one_of, is_not_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_emptyfilter[sales_channel_quantity_updated_at.*],filter[sales_channel_quantity_synced_at.*],filter[created_at.*],filter[updated_at.*](optional) - Datetime filters with operators: is, is_not, before, after, on_or_before, on_or_after, between, is_empty, is_not_empty, today, yesterday, tomorrow, past_week, past_month, past_year, next_week, next_month, next_year, days_ago, days_from_now, past_days, next_daysfilter_groups(optional) - Base64-encoded JSON tree of nested AND/OR filter groups
Response: Paginated list. Each row contains:
id- Inventory cache row IDproduct_listing_id- SKU.io product listing IDdocument_id- Faire variant record IDsku- Listing SKU (falls back to the Faire variant SKU)title- Listing title (falls back to the Faire product name)product_sku- Linked SKU.io product SKUsku_quantity- Current SKU.io sellable quantitysales_channel_quantity- Last-known quantity on Faire (null if never fetched)variance- SKU.io quantity (clamped at 0) minus the Faire quantitychange_needed- Quantity delta a push would send (null if the Faire quantity was never fetched)status-synced,variance, orneeds_recalcis_sku_recalculation_needed- True when the SKU.io quantity is stale and pending recalculationsales_channel_quantity_updated_at- When the Faire quantity was last fetchedsales_channel_quantity_synced_at- When a quantity was last pushed to Fairesku_quantity_updated_at- When the SKU.io quantity was last recalculatedcreated_at/updated_at- Cache row timestampsfaire_variant_id- Faire variant IDfaire_listing_url- Listing URL on Faire (currently always null)
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.