List bins
Operation ID: bins
Group: Inventory › Bins
Open in the interactive reference
GET /inventory/bins
Read-only: Reads and returns; changes nothing.
Lists bins. Each bin comes back with its layout, limits, and settings, but not capacity. Only GET inventory/bins/:id returns capacity.
Sort on aisle, rack, and shelfLevel to list the bins in warehouse layout order.
To find bins that have no capacity limit, use POST inventory/bins/search.
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, likebinCode— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likebarcode— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelocationId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeaisle— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likerack— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likezone— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeisPickingBin— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenisReceivingBin— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenisProductionBin— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweencapacityCheckMode— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, liketempZone— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likesupportsPerishable— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenactive— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenlastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, binCode, aisle, rack, shelfLevel, active, lastModifiedDate
- Selectable: id, binCode, barcode, locationId, locationCode, locationName, aisle, rack, shelfLevel, zone, itemPosition, isPickingBin, isReceivingBin, isProductionBin, maxQuantity, maxWeight, maxWeightUnit, maxVolume, maxVolumeUnit, capacityCheckMode, tempZone, tempMin, tempMax, supportsPerishable, active, createdDate, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of binsRow:
| 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 bin. Example: "8e1c40a7-5b93-4d26-a0f8-3c74e19b5d02". |
binCode |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The short code that identifies the bin, for example 'A-01-1'. It is unique within the tenant, not per warehouse, and cannot be changed after the bin is created. Example: "A-01-1". |
barcode |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The barcode printed on the bin label. It is unique within the tenant and cannot be changed after the bin is created. Example: "BIN-A011". |
locationId |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The unique identifier for the warehouse the bin is in. It cannot be changed after the bin is created. See id on GET inventory/warehouses/:id. Example: "f5272ae0-0f0b-47d2-b78a-2158fec2cc32". |
locationCode |
string | null | no | no | no | The code of that warehouse. Example: "WH-02". |
locationName |
string | null | no | no | no | The name of that warehouse. Example: "Main warehouse". |
aisle |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The aisle in the warehouse layout. Example: "A". |
rack |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The rack within the aisle. Example: "01". |
shelfLevel |
string | null | no | no | yes | The shelf level within the rack. Example: "1". |
zone |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The logical zone of the bin, as your tenant names them. For example 'Picking', 'Storage' or 'Quarantine'. Example: "Picking". |
itemPosition |
string | null | no | no | no | The position within the shelf, where a bin is subdivided further. |
isPickingBin |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether the bin is a picking location, a fast-access place stock is taken from to fulfill shipments. Example: true. |
isReceivingBin |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether the bin stages newly received goods before they are put away. |
isProductionBin |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether the bin feeds or receives production. |
maxQuantity |
number | null | no | no | no | The largest number of units the bin will hold. It is meaningful only when everything in the bin is counted in the same unit. Example: 500. |
maxWeight |
decimal | null | no | no | no | The largest weight the bin will hold, in maxWeightUnit. Example: "250". |
maxWeightUnit |
string | null | no | no | no | The unit maxWeight is given in. Possible values: 'G', 'Kg', 'Lbs'. Example: "Kg". |
maxVolume |
decimal | null | no | no | no | The largest volume the bin will hold, in maxVolumeUnit. |
maxVolumeUnit |
string | null | no | no | no | The unit maxVolume is given in. Possible values: 'L'. |
capacityCheckMode |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | What happens when a movement would exceed a limit. Possible values: 'HardBlock', which refuses the movement, and 'SoftWarning', which allows it and flags it. Example: "HardBlock". |
tempZone |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The temperature zone the bin belongs to, as your tenant names them. For example 'Ambient', 'Chilled' or 'Frozen'. Example: "Ambient". |
tempMin |
decimal | null | no | no | no | The lowest temperature kept in the bin, in degrees Celsius. |
tempMax |
decimal | null | no | no | no | The highest temperature kept in the bin, in degrees Celsius. |
supportsPerishable |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
no | Whether perishable stock may be kept in the bin. |
active |
boolean | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | Whether the bin may be chosen for new movements. When false, the stock already in the bin stays there but no new movement can be assigned to it. Example: true. |
createdDate |
date-time | null | no | no | no | The date and time the bin was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the bin record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-18T09:14:22.517Z". |
{
"data": [
{
"id": "8e1c40a7-5b93-4d26-a0f8-3c74e19b5d02",
"binCode": "A-01-1",
"barcode": "BIN-A011",
"locationId": "f5272ae0-0f0b-47d2-b78a-2158fec2cc32",
"locationCode": "WH-02",
"locationName": "Main warehouse",
"aisle": "A",
"rack": "01",
"shelfLevel": "1",
"zone": "Picking",
"itemPosition": "<itemPosition>",
"isPickingBin": true,
"isReceivingBin": true,
"isProductionBin": true,
"maxQuantity": 500,
"maxWeight": "250",
"maxWeightUnit": "Kg",
"maxVolume": "19.99",
"maxVolumeUnit": "<maxVolumeUnit>",
"capacityCheckMode": "HardBlock",
"tempZone": "Ambient",
"tempMin": "19.99",
"tempMax": "19.99",
"supportsPerishable": true,
"active": true,
"createdDate": "2026-01-15T09:30:00.000Z",
"lastModifiedDate": "2026-08-18T09:14:22.517Z"
}
],
"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