> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Inventory Levels

> Retrieve inventory levels for products

# List Inventory Levels

Returns inventory levels for product variants across all locations.

## Request

```bash theme={null}
curl -X GET "https://api.launchmystore.io/api/v1/inventory_levels.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Parameters

<ParamField query="page" type="integer" default="1">
  Page number for pagination
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Number of items per page (max 250)
</ParamField>

<ParamField query="location_id" type="string">
  Filter by inventory location ID
</ParamField>

<ParamField query="inventory_item_ids" type="string">
  Comma-separated list of inventory item IDs to retrieve
</ParamField>

<ParamField query="variant_ids" type="string">
  Comma-separated list of variant IDs to retrieve
</ParamField>

<ParamField query="updated_at_min" type="string">
  Filter inventory updated after this date (ISO 8601)
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Whether the request succeeded
</ResponseField>

<ResponseField name="data.items" type="array">
  Array of inventory level objects

  <Expandable title="Inventory Level Object">
    <ResponseField name="inventory_item_id" type="string">
      Unique inventory item ID
    </ResponseField>

    <ResponseField name="location_id" type="string">
      Location ID where inventory is held
    </ResponseField>

    <ResponseField name="variant_id" type="string">
      Associated product variant ID
    </ResponseField>

    <ResponseField name="sku" type="string">
      Stock keeping unit
    </ResponseField>

    <ResponseField name="available" type="integer">
      Available quantity for sale
    </ResponseField>

    <ResponseField name="incoming" type="integer">
      Incoming quantity (pending receipt)
    </ResponseField>

    <ResponseField name="committed" type="integer">
      Quantity committed to orders
    </ResponseField>

    <ResponseField name="on_hand" type="integer">
      Total on-hand quantity
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Last update timestamp (ISO 8601)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="data.pagination" type="object">
  Pagination information
</ResponseField>

## Example Response

```json theme={null}
{
  "success": true,
  "data": {
    "items": [
      {
        "inventory_item_id": "inv_abc123",
        "location_id": "loc_main",
        "variant_id": "var_xyz789",
        "sku": "TSHIRT-S-BLK",
        "available": 45,
        "incoming": 100,
        "committed": 5,
        "on_hand": 50,
        "updated_at": "2024-01-20T14:45:00Z"
      },
      {
        "inventory_item_id": "inv_def456",
        "location_id": "loc_main",
        "variant_id": "var_abc123",
        "sku": "TSHIRT-M-BLK",
        "available": 30,
        "incoming": 0,
        "committed": 10,
        "on_hand": 40,
        "updated_at": "2024-01-20T14:45:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 500,
      "hasMore": true
    }
  }
}
```

## Inventory Quantities Explained

| Field       | Description                                |
| ----------- | ------------------------------------------ |
| `on_hand`   | Total physical inventory at the location   |
| `committed` | Reserved for unfulfilled orders            |
| `incoming`  | Expected from purchase orders or transfers |
| `available` | Can be sold (`on_hand - committed`)        |

## Error Codes

| Code           | Description                             |
| -------------- | --------------------------------------- |
| `UNAUTHORIZED` | Invalid or missing access token         |
| `FORBIDDEN`    | App doesn't have `read_inventory` scope |
