# Bins

`GET /inventory/bins`

Group: Inventory › Bins · Operation ID: `bins`

Returns a list of bins. To find bins that have no capacity limit, use POST inventory/bins/search.

This collection returns the same scalar fields as GET inventory/bins/:id and POST inventory/bins/search. It does not return capacity, which is computed per bin and comes back only on GET inventory/bins/:id. Sorting on aisle, rack and shelfLevel walks the warehouse in order. To find bins that have no capacity limit at all, use POST inventory/bins/search with withoutLimits.

[Open in the interactive reference](https://docs.api.lensing.ai/?op=bins)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | `"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, like
- `binCode` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `barcode` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `locationId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `aisle` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `rack` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `zone` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `isPickingBin` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `isReceivingBin` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `isProductionBin` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `capacityCheckMode` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `tempZone` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `supportsPerishable` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `active` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- 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

## Response

`200` Success

Under `data`, an array of binsRow:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | no | The unique identifier for the bin. |
| `binCode` | string or null | no | 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. |
| `barcode` | string or null | no | The barcode printed on the bin label. It is unique within the tenant and cannot be changed after the bin is created. |
| `locationId` | string or null | 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. |
| `locationCode` | string or null | no | The code of that warehouse. |
| `locationName` | string or null | no | The name of that warehouse. |
| `aisle` | string or null | no | The aisle in the warehouse layout. |
| `rack` | string or null | no | The rack within the aisle. |
| `shelfLevel` | string or null | no | The shelf level within the rack. |
| `zone` | string or null | no | The logical zone of the bin, as your tenant names them. For example 'Picking', 'Storage' or 'Quarantine'. |
| `itemPosition` | string or null | no | The position within the shelf, where a bin is subdivided further. |
| `isPickingBin` | boolean or null | no | Whether the bin is a picking location, a fast-access place stock is taken from to fulfill shipments. |
| `isReceivingBin` | boolean or null | no | Whether the bin stages newly received goods before they are put away. |
| `isProductionBin` | boolean or null | no | Whether the bin feeds or receives production. |
| `maxQuantity` | number or null | 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. |
| `maxWeight` | string (decimal) or null | no | The largest weight the bin will hold, in maxWeightUnit. |
| `maxWeightUnit` | string or null | no | The unit maxWeight is given in. Possible values: 'G', 'Kg', 'Lbs'. |
| `maxVolume` | string (decimal) or null | no | The largest volume the bin will hold, in maxVolumeUnit. |
| `maxVolumeUnit` | string or null | no | The unit maxVolume is given in. Possible values: 'L'. |
| `capacityCheckMode` | string or null | 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. |
| `tempZone` | string or null | no | The temperature zone the bin belongs to, as your tenant names them. For example 'Ambient', 'Chilled' or 'Frozen'. |
| `tempMin` | string (decimal) or null | no | The lowest temperature kept in the bin, in degrees Celsius. |
| `tempMax` | string (decimal) or null | no | The highest temperature kept in the bin, in degrees Celsius. |
| `supportsPerishable` | boolean or null | no | Whether perishable stock may be kept in the bin. |
| `active` | boolean or null | no | 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. |
| `createdDate` | string (date-time) or null | no | The date and time the bin was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
| `lastModifiedDate` | string (date-time) or null | no | The date and time the bin record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

## Statuses

- `400` — Invalid request or business failure
- `401` — Missing or invalid access token
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests
- `500` — Internal server error
