Inventory

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_stock

Combine any of these as query parameters. Also accepts cursor and page_size.

Fields on each result

id
integer
variant
integer
variant_sku
string
variant_name
string
product
integer
warehouse
integer
warehouse_name
string
quantity_on_hand
decimal
quantity_reserved
decimal
available
decimal
quantity_available
decimal
current_avg_cost
decimal
unit_cost
string
reorder_point
decimal
last_counted_at
datetime
created_at
datetime
updated_at
datetime

Errors

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_stock

Combine any of these as query parameters. Also accepts cursor and page_size.

Fields on each result

id
integer
variant
integer
variant_sku
string
warehouse
integer
warehouse_name
string
movement_type
string
quantity
decimal
unit_cost
decimal
reference_type
string
reference_id
uuid
notes
string
created_by
integer
created_by_name
string
created_at
datetime

Errors

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."]
    }
  }
}