List inventory levels
Operation ID: inventoryLevels
Group: Inventory › Inventory Levels
Open in the interactive reference
GET /inventory/inventory-levels
Read-only: Reads and returns; changes nothing.
Lists inventory levels. Each inventory level is the stock of one item at one location, with the id, code, and name of both.
To read the stock of one item at one location, filter on itemId and locationId together. They identify at most one inventory level.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeitemId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeitemCode— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelocationId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelocationCode— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, itemCode, locationCode, onHandQuantity, availableQuantity, onHandValue, lastTransactionTimestamp, lastModifiedDate
- Selectable: id, itemId, itemCode, itemName, locationId, locationCode, locationName, onHandQuantity, availableQuantity, allocatedQuantity, reservedQuantity, inTransitQuantity, damagedQuantity, qualityHoldQuantity, averageCost, onHandValue, currency, lastTransactionTimestamp, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of inventoryLevelsRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the inventory level. Example: "0b6d4c93-71ea-4f28-9c05-83a1e7f6204d". |
itemId |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The unique identifier for the item this level is for. See id on GET inventory/items/:id. Example: "5f21c8b0-9d34-4a76-8e12-04b93c7de5a8". |
itemCode |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The item's short code. Example: "WIDGET-01". |
itemName |
string | null | no | no | no | The item's name. Example: "Standard widget". |
locationId |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The unique identifier for the location this level is at. See id on GET inventory/warehouses/:id. Example: "e1d84c07-5b39-4a26-9f70-2c8b613ad495". |
locationCode |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The location's short code. Example: "WH-01". |
locationName |
string | null | no | no | no | The location's name. Example: "Rotterdam Distribution Centre". |
onHandQuantity |
decimal | null | no | no | yes | The total physical quantity on hand at this location, in the item's stocking unit of measure. Example: "1200.00". |
availableQuantity |
decimal | null | no | no | yes | The quantity free to allocate: onHandQuantity minus allocatedQuantity and reservedQuantity. Example: "1150.00". |
allocatedQuantity |
decimal | null | no | no | no | The quantity allocated to outbound demand. Example: "50.00". |
reservedQuantity |
decimal | null | no | no | no | The quantity reserved. |
inTransitQuantity |
decimal | null | no | no | no | The quantity in transit to this location. |
damagedQuantity |
decimal | null | no | no | no | The quantity flagged as damaged. |
qualityHoldQuantity |
decimal | null | no | no | no | The quantity on quality hold. |
averageCost |
decimal | null | no | no | no | The moving-average unit cost, in the currency given by currency. Example: "3.75". |
onHandValue |
decimal | null | no | no | yes | The value of the stock on hand, in the currency given by currency. Example: "4500.00". |
currency |
string | null | no | no | no | The currency of averageCost and onHandValue. Format ISO 4217, for example 'EUR'. Absent when the level has no valuation yet. Example: "EUR". |
lastTransactionTimestamp |
date-time | null | no | no | yes | The date and time a stock movement last touched this level. Format YYYY-MM-DDTHH:mm:ss. Unlike lastModifiedDate, it changes only when stock moves. Example: "2026-08-03T11:15:00". |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the inventory-level record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-03T11:15:00.000Z". |
{
"data": [
{
"id": "0b6d4c93-71ea-4f28-9c05-83a1e7f6204d",
"itemId": "5f21c8b0-9d34-4a76-8e12-04b93c7de5a8",
"itemCode": "WIDGET-01",
"itemName": "Standard widget",
"locationId": "e1d84c07-5b39-4a26-9f70-2c8b613ad495",
"locationCode": "WH-01",
"locationName": "Rotterdam Distribution Centre",
"onHandQuantity": "1200.00",
"availableQuantity": "1150.00",
"allocatedQuantity": "50.00",
"reservedQuantity": "19.99",
"inTransitQuantity": "19.99",
"damagedQuantity": "19.99",
"qualityHoldQuantity": "19.99",
"averageCost": "3.75",
"onHandValue": "4500.00",
"currency": "EUR",
"lastTransactionTimestamp": "2026-08-03T11:15:00",
"lastModifiedDate": "2026-08-03T11:15:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error