# Returns the inventory level with the given identifier.

`GET /inventory/inventory-levels/{id}`

Group: Inventory › Inventory Levels · Operation ID: `getInventoryLevel`

The same fields come back here, from GET inventory/inventory-levels, and from POST inventory/inventory-levels/search. A level's own identifier is rarely at hand, so the usual way to reach one is to filter the collection or the search endpoint by itemId and locationId, which together identify at most one level.

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

## 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`. |
| `id` | path | string | yes | The unique identifier for the inventory level to return. |

## Response

`200` Success

Under `data` (getInventoryLevelOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the inventory level. |
| `itemId` | string | yes | The unique identifier for the item this level is for. See id on GET inventory/items/:id. |
| `itemCode` | string | no | The item's short code. |
| `itemName` | string | no | The item's name. |
| `locationId` | string | yes | The unique identifier for the location this level is at. See id on GET inventory/warehouses/:id. |
| `locationCode` | string | no | The location's short code. |
| `locationName` | string | no | The location's name. |
| `onHandQuantity` | string (decimal) | no | The total physical quantity on hand at this location, in the item's stocking unit of measure. |
| `availableQuantity` | string (decimal) | yes | The quantity free to allocate: onHandQuantity minus allocatedQuantity and reservedQuantity. |
| `allocatedQuantity` | string (decimal) | no | The quantity allocated to outbound demand. |
| `reservedQuantity` | string (decimal) | no | The quantity reserved. |
| `inTransitQuantity` | string (decimal) | no | The quantity in transit to this location. |
| `damagedQuantity` | string (decimal) | no | The quantity flagged as damaged. |
| `qualityHoldQuantity` | string (decimal) | no | The quantity on quality hold. |
| `averageCost` | string (decimal) | no | The moving-average unit cost, in the currency given by currency. |
| `onHandValue` | string (decimal) | no | The value of the stock on hand, in the currency given by currency. |
| `currency` | string | no | The currency of averageCost and onHandValue. Format ISO 4217, for example 'EUR'. Absent when the level has no valuation yet. |
| `lastTransactionTimestamp` | string (date-time) | no | 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. |
| `lastModifiedDate` | string (date-time) | no | The date and time the inventory-level record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

## Errors

| Code | Status |
| --- | --- |
| `NOT_FOUND` | 400 |

## Statuses

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