Catalog API2026-11Preview
Inventory levels
How many of a variant you can sell right now: the seller's stock in China, plus anything you keep in our warehouse.
Levels change when we read a listing again or your shelf moves. Subscribe to product.out_of_stock rather than polling.
The Inventory level object
variant, product, skustring- What it counts.
seller_in_stockboolean- Whether the seller can sell it, as of checked_at.
seller_countinteger|null- The seller's own count, when the listing shows one.
warehouse_on_handinteger- Units you own on our shelf, checked and photographed. Orders ship from these first.
availableinteger- What your store shows: your shelf plus the seller's count, capped at 100, since we buy on demand. 0 when the seller is out and your shelf is empty, or the product is paused.
checked_atstring- When we last read the listing.
{
"variant": "var_41hz",
"product": "prd_8f2k",
"sku": "5187209554",
"seller_in_stock": true,
"seller_count": 812,
"warehouse_on_hand": 24,
"available": 124,
"checked_at": "2026-11-04T09:12:40Z"
}List inventory levels
GET/v1/inventory_levels
Every variant you sell, or one product's.
Scopeinventory:read
Query parameters
productstring- Optional. A product id.
availablestring- Optional. zero for the variants your store shows as sold out.
limit, cursor- Pagination
curl "https://www.ninjabuy.com/api/v1/inventory_levels?product=prd_8f2k" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"HTTP/2 200 OK
{
"data": [
{
"variant": "var_41hz",
"product": "prd_8f2k",
"sku": "5187209554",
"seller_in_stock": true,
"seller_count": 812,
"warehouse_on_hand": 24,
"available": 124,
"checked_at": "2026-11-04T09:12:40Z"
},
{
"variant": "var_41j0",
"product": "prd_8f2k",
"sku": "5187209555",
"seller_in_stock": false,
"seller_count": 0,
"warehouse_on_hand": 0,
"available": 0,
"checked_at": "2026-11-04T09:12:40Z"
}
],
"has_more": false,
"cursor": null
}Retrieve a variant's level
GET/v1/inventory_levels/{variant}
One variant, as last read. Reading it does not read the marketplace again.
Scopeinventory:read
Path parameters
variantstringrequired- A variant id.
Errors
| Status | Type | When |
|---|---|---|
| 404 | not-found | No such variant on this account. |
curl "https://www.ninjabuy.com/api/v1/inventory_levels/var_41hz" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"HTTP/2 200 OK
{
"variant": "var_41hz",
"product": "prd_8f2k",
"sku": "5187209554",
"seller_in_stock": true,
"seller_count": 812,
"warehouse_on_hand": 24,
"available": 124,
"checked_at": "2026-11-04T09:12:40Z"
}