# List warehouses

Operation ID: `warehouses`

Group: Inventory › Warehouses

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/warehouses)

`GET /inventory/warehouses`

Read-only: Reads and returns; changes nothing.

Lists warehouses. The fields are the same as on GET inventory/warehouses/:id and POST inventory/warehouses/search. The owning legal entity and the warehouse type each come back as both an id and a name.

To filter by name, city, country, or region, use POST inventory/warehouses/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, like
- `locationCode` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `inventoryLocationType` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `isActive` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `isPrimaryReceiving` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `entityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `warehouseTypeId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, locationCode, entityId, warehouseTypeId, inventoryLocationType, isActive, isPrimaryReceiving, lastModifiedDate
- Selectable: id, locationCode, name, inventoryLocationType, isActive, isPrimaryReceiving, addressLine1, addressLine2, city, stateProvince, postalCode, countryCode, region, entityId, entityName, warehouseTypeId, warehouseTypeName, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of warehousesRow:

| 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 warehouse. Example: `"e1d84c07-5b39-4a26-9f70-2c8b613ad495"`. |
| `locationCode` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The location code of the warehouse, for example 'WH-01'. It is unique within the tenant. Example: `"WH-01"`. |
| `name` | string | no | no | no | The site name of the warehouse, for example 'Rotterdam Distribution Center'. Example: `"Rotterdam Distribution Centre"`. |
| `inventoryLocationType` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The kind of location. Example: `"WAREHOUSE"`. |
| `isActive` | boolean | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Whether the warehouse can be selected on new inventory documents. When false, existing stock and history keep pointing at it and new documents cannot select it. Example: `true`. |
| `isPrimaryReceiving` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Whether this is the entity's primary receiving warehouse. Open purchase-order on-order quantity for the entity is attributed here for replenishment. At most one warehouse per entity is the primary receiving warehouse. Example: `true`. |
| `addressLine1` | string \| null | no | no | no | The first address line: street number and name, or PO box. Absent when unset. Example: `"Waalhaven 12"`. |
| `addressLine2` | string \| null | no | no | no | The second address line: apartment, suite, unit, building or floor. Absent when unset. |
| `city` | string \| null | no | no | no | The city or locality. Absent when unset. Example: `"Rotterdam"`. |
| `stateProvince` | string \| null | no | no | no | The state, province or region. Absent when unset. |
| `postalCode` | string \| null | no | no | no | The postal or ZIP code. Absent when unset. Example: `"3087 BM"`. |
| `countryCode` | string \| null | no | no | no | The country of the address. Format ISO 3166-1 alpha-2, for example 'NL'. Absent when unset. Example: `"NL"`. |
| `region` | string \| null | no | no | no | A free-text business region grouping, independent of country and state. Absent when unset. Example: `"Benelux"`. |
| `entityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The unique identifier for the legal entity that owns this warehouse. See id on GET base/entities. Example: `"81e8beb1-1415-4012-9012-8138580f43dc"`. |
| `entityName` | string \| null | no | no | no | The name of the legal entity that owns this warehouse. Example: `"Acme GmbH"`. |
| `warehouseTypeId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The unique identifier for the warehouse type, which limits the document types the warehouse allows. Absent when the warehouse allows every type. There is no endpoint for it. |
| `warehouseTypeName` | string \| null | no | no | no | The name of the warehouse type. Absent when the warehouse allows every document type. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the warehouse record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: `"2026-05-12T09:30:00.000Z"`. |

```json
{
  "data": [
    {
      "id": "e1d84c07-5b39-4a26-9f70-2c8b613ad495",
      "locationCode": "WH-01",
      "name": "Rotterdam Distribution Centre",
      "inventoryLocationType": "WAREHOUSE",
      "isActive": true,
      "isPrimaryReceiving": true,
      "addressLine1": "Waalhaven 12",
      "addressLine2": "<addressLine2>",
      "city": "Rotterdam",
      "stateProvince": "<stateProvince>",
      "postalCode": "3087 BM",
      "countryCode": "NL",
      "region": "Benelux",
      "entityId": "81e8beb1-1415-4012-9012-8138580f43dc",
      "entityName": "Acme GmbH",
      "warehouseTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "warehouseTypeName": "<warehouseTypeName>",
      "lastModifiedDate": "2026-05-12T09:30:00.000Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
