Stock levels
What you have, where. Stock is held per variant per warehouse and is never written directly — it moves.
GET
/inventory/stock-levels/Current quantity per variant per warehouse. `quantity_available` is on-hand minus reserved — that is the number you can actually sell.
Filters
warehousevariantproductlow_stockCombine any of these as query parameters. Also accepts cursor and page_size.
Fields on each result
FieldType & description
idinteger
variantinteger
variant_skustring
variant_namestring
productinteger
warehouseinteger
warehouse_namestring
quantity_on_handdecimal
quantity_reserveddecimal
availabledecimal
quantity_availabledecimal
current_avg_costdecimal
unit_coststring
reorder_pointdecimal
last_counted_atdatetime
created_atdatetime
updated_atdatetime
Errors
CodeWhen it happens
401The access token is missing or has expired. Refresh and retry.403Your role lacks permission, or X-Shop-Id is a shop you cannot access.429Rate limited. Wait for Retry-After seconds.Request
curl https://api.tajirpoint.com/api/v1/inventory/stock-levels/ \
-H "Authorization: Bearer $TAJIR_TOKEN" \
-H "X-Shop-Id: 8f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f"Response · 200 · 3 more fields below
{
"next": "https://api.tajirpoint.com/api/v1/inventory/stock-levels/?cursor=cD0yMDI2LTA3LTExVDA5MTQyMlomcD00Mg",
"previous": null,
"results": [
{
"id": 42,
"variant": 1,
"variant_sku": "variant sku",
"variant_name": "Nescafé Classic 200g",
"product": 1,
"warehouse": 1,
"warehouse_name": "Main Store",
"quantity_on_hand": "48.000",
"quantity_reserved": "2.000",
"available": "0.00",
"quantity_available": "46.000",
"current_avg_cost": "0.00",
"unit_cost": "unit cost",
"reorder_point": "10.000"
}
]
}Response · error
{
"error": {
"code": 400,
"message": "Validation failed.",
"details": {
"quantity": ["Must be greater than zero."]
}
}
}GET
/inventory/stock-movements/The audit trail. Every change to stock produces a movement tied to its cause: a sale, a return, a purchase, an adjustment or a transfer. Stock is never edited in place, so this list always explains the current level.
Filters
warehousevariantproductlow_stockCombine any of these as query parameters. Also accepts cursor and page_size.
Fields on each result
FieldType & description
idinteger
variantinteger
variant_skustring
warehouseinteger
warehouse_namestring
movement_typestring
quantitydecimal
unit_costdecimal
reference_typestring
reference_iduuid
notesstring
created_byinteger
created_by_namestring
created_atdatetime
Errors
CodeWhen it happens
401The access token is missing or has expired. Refresh and retry.403Your role lacks permission, or X-Shop-Id is a shop you cannot access.429Rate limited. Wait for Retry-After seconds.Request
curl https://api.tajirpoint.com/api/v1/inventory/stock-movements/ \
-H "Authorization: Bearer $TAJIR_TOKEN" \
-H "X-Shop-Id: 8f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f"Response · 200
{
"next": "https://api.tajirpoint.com/api/v1/inventory/stock-movements/?cursor=cD0yMDI2LTA3LTExVDA5MTQyMlomcD00Mg",
"previous": null,
"results": [
{
"id": 42,
"variant": 1,
"variant_sku": "variant sku",
"warehouse": 1,
"warehouse_name": "Main Store",
"movement_type": "sale",
"quantity": "12.000",
"unit_cost": "0.00",
"reference_type": "reference type",
"reference_id": "ext_9f3b6c5d",
"notes": "",
"created_by": 1,
"created_by_name": "Main Store",
"created_at": "2026-07-11T09:14:22Z"
}
]
}Response · error
{
"error": {
"code": 400,
"message": "Validation failed.",
"details": {
"quantity": ["Must be greater than zero."]
}
}
}