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

# BinInventoryLevel

> On-hand quantity for a product (and optionally a specific inventory item) in a storage location.

**Required scopes:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

<ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
  When the record was created.
</ResponseField>

<ResponseField name="id" type="ID!" required>
  The id of this bin-level inventory record.
</ResponseField>

<ResponseField name="inventoryItem" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item">InventoryItem</a>}>
  The specific inventory item this level tracks, when item-scoped.

  **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

  <Expandable title="fields" lazyRender>
    <ResponseField name="binInventoryLevels" type={<a href="/docs/api-reference/v3/pagination">BinInventoryLevelConnection!</a>} required>
      Bin-level quantity rows for this inventory item.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        **Arguments**

        <ResponseField name="after" type="String">
          Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
        </ResponseField>

        <ResponseField name="before" type="String">
          Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
        </ResponseField>

        <ResponseField name="first" type="Int">
          Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
        </ResponseField>

        <ResponseField name="last" type="Int">
          Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
        </ResponseField>

        **Fields**

        <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[BinInventoryLevelEdge!]!</a>} required>
          The list of edges (each a node plus its pagination `cursor`).
        </ResponseField>

        <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/bin-inventory-level">[BinInventoryLevel!]!</a>} required>
          The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.
        </ResponseField>

        <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
          Pagination metadata for the current page.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When the record was created.
    </ResponseField>

    <ResponseField name="disposition" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item-disposition">InventoryItemDisposition</a>}>
      Planned disposition for return inventory.
    </ResponseField>

    <ResponseField name="expirationDate" type={<a href="/docs/api-reference/v3/reference/common/date">Date</a>}>
      Expiration date for lot-tracked stock. Null when the lot has no expiration set.
    </ResponseField>

    <ResponseField name="grade" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item-grade">InventoryItemGrade</a>}>
      Condition grade, when applicable.
    </ResponseField>

    <ResponseField name="id" type="ID!" required>
      The id of this inventory item.
    </ResponseField>

    <ResponseField name="itemClass" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item-class">InventoryItemClass</a>}>
      Item classification.
    </ResponseField>

    <ResponseField name="kind" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item-kind">InventoryItemKind!</a>} required>
      The kind of inventory unit.
    </ResponseField>

    <ResponseField name="location" type={<a href="/docs/api-reference/v3/reference/inventory/location">Location!</a>} required>
      The warehouse this unit is associated with.

      **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

      <Expandable title="fields" lazyRender>
        <ResponseField name="city" type="String">
          The city of the location's address.
        </ResponseField>

        <ResponseField name="company" type="String">
          The company name associated with the location.
        </ResponseField>

        <ResponseField name="countryCode" type="String">
          The country code, e.g. "US".
        </ResponseField>

        <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was created.
        </ResponseField>

        <ResponseField name="id" type="ID!" required>
          The id of this location.
        </ResponseField>

        <ResponseField name="inventoryItems" type={<a href="/docs/api-reference/v3/pagination">InventoryItemConnection!</a>} required>
          Traceable inventory units at this warehouse.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="inventoryLevels" type={<a href="/docs/api-reference/v3/pagination">LocationInventoryLevelConnection!</a>} required>
          Per-product inventory levels held at this location.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="name" type="String!" required>
          The location's display name.
        </ResponseField>

        <ResponseField name="phone" type="String">
          The contact phone number for the location.
        </ResponseField>

        <ResponseField name="postalCode" type="String">
          The postal or ZIP code, e.g. "84101".
        </ResponseField>

        <ResponseField name="stateCode" type="String">
          The state or province code, e.g. "UT".
        </ResponseField>

        <ResponseField name="storageLocations" type={<a href="/docs/api-reference/v3/pagination">StorageLocationConnection!</a>} required>
          Bins and other storage locations within this warehouse.

          **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="street1" type="String">
          The first line of the street address.
        </ResponseField>

        <ResponseField name="street2" type="String">
          The second line of the street address.
        </ResponseField>

        <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was last updated.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="lotNumber" type="String">
      Lot number, when lot tracking applies.
    </ResponseField>

    <ResponseField name="product" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-product">InventoryProduct</a>}>
      The product this unit is tied to, when applicable.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        <ResponseField name="barcodes" type="[String!]!" required>
          Barcodes associated with this product, for scanning.
        </ResponseField>

        <ResponseField name="dimensions" type={<a href="/docs/api-reference/v3/reference/catalog/dimensions">Dimensions</a>}>
          The product's length, width, and height in a single shared unit, for box sizing.
        </ResponseField>

        <ResponseField name="hsCode" type="String">
          The Harmonized System code used for customs.
        </ResponseField>

        <ResponseField name="id" type="ID!" required>
          The id of this product.
        </ResponseField>

        <ResponseField name="image" type={<a href="/docs/api-reference/v3/reference/catalog/product-image">ProductImage</a>}>
          The first (default) image for this product, if any.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)
        </ResponseField>

        <ResponseField name="originCountry" type="String">
          The country of origin, as a country code, for customs.
        </ResponseField>

        <ResponseField name="sku" type="String">
          The stock keeping unit identifying this product.
        </ResponseField>

        <ResponseField name="title" type="String!" required>
          The product's title.
        </ResponseField>

        <ResponseField name="upc" type="String">
          The Universal Product Code for this product.
        </ResponseField>

        <ResponseField name="weight" type={<a href="/docs/api-reference/v3/reference/catalog/weight">Weight</a>}>
          The product's weight, for shipping.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="quantity" type="Int!" required>
      The number of units this record represents.
    </ResponseField>

    <ResponseField name="storageLocation" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location">StorageLocation</a>}>
      The bin or slot where this unit currently resides.

      **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

      <Expandable title="fields" lazyRender>
        <ResponseField name="binInventoryLevels" type={<a href="/docs/api-reference/v3/pagination">BinInventoryLevelConnection!</a>} required>
          Product quantities held in this storage location.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="inStock" type="Boolean">
              true returns only rows holding stock (quantity above zero). false returns only empty or negative rows, such as emptied assignments and LOST balancing entries.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>

            <ResponseField name="orderBy" type={<a href="/docs/api-reference/v3/reference/inventory/bin-inventory-level-sort-key">BinInventoryLevelSortKey</a>}>
              Which key to sort by (creation time, newest first). Combine with `reverse` to flip direction.
            </ResponseField>

            <ResponseField name="reverse" type="Boolean">
              Reverses the sort direction selected by `orderBy` (or its default).
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was created.
        </ResponseField>

        <ResponseField name="id" type="ID!" required>
          The id of this storage location.
        </ResponseField>

        <ResponseField name="inventoryItems" type={<a href="/docs/api-reference/v3/pagination">InventoryItemConnection!</a>} required>
          Inventory items currently in this storage location.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="isSellable" type="Boolean!" required>
          Whether on-hand quantity in this slot counts as sellable inventory.
        </ResponseField>

        <ResponseField name="location" type={<a href="/docs/api-reference/v3/reference/inventory/location">Location!</a>} required>
          The warehouse this storage location belongs to.

          **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)
        </ResponseField>

        <ResponseField name="name" type="String!" required>
          The display name of the bin or slot.
        </ResponseField>

        <ResponseField name="priority" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location-priority">StorageLocationPriority</a>}>
          Pick priority relative to other bins, when set.
        </ResponseField>

        <ResponseField name="source" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location-source">StorageLocationSource!</a>} required>
          How this record was created.
        </ResponseField>

        <ResponseField name="stockedProductCount" type="Int!" required>
          How many product levels in this storage location have a quantity above zero.
        </ResponseField>

        <ResponseField name="totalQuantity" type="Int!" required>
          The sum of every level's quantity in this storage location. Negative in areas such as LOST that offset stock elsewhere.
        </ResponseField>

        <ResponseField name="type" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location-type">StorageLocationType!</a>} required>
          The kind of storage location.
        </ResponseField>

        <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was last updated.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When the record was last updated.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="inventoryProduct" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-product">InventoryProduct</a>}>
  The product this quantity belongs to, when the level is product-scoped.

  **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

  <Expandable title="fields" lazyRender>
    <ResponseField name="barcodes" type="[String!]!" required>
      Barcodes associated with this product, for scanning.
    </ResponseField>

    <ResponseField name="dimensions" type={<a href="/docs/api-reference/v3/reference/catalog/dimensions">Dimensions</a>}>
      The product's length, width, and height in a single shared unit, for box sizing.

      <Expandable title="fields" lazyRender>
        <ResponseField name="height" type="Float">
          The height, in `unit`.
        </ResponseField>

        <ResponseField name="length" type="Float">
          The length, in `unit`.
        </ResponseField>

        <ResponseField name="unit" type={<a href="/docs/api-reference/v3/reference/catalog/dimension-unit">DimensionUnit!</a>} required>
          The unit all three measurements are expressed in.
        </ResponseField>

        <ResponseField name="width" type="Float">
          The width, in `unit`.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="hsCode" type="String">
      The Harmonized System code used for customs.
    </ResponseField>

    <ResponseField name="id" type="ID!" required>
      The id of this product.
    </ResponseField>

    <ResponseField name="image" type={<a href="/docs/api-reference/v3/reference/catalog/product-image">ProductImage</a>}>
      The first (default) image for this product, if any.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        <ResponseField name="altText" type="String!" required>
          Alternative text describing the image.
        </ResponseField>

        <ResponseField name="default" type="Boolean!" required>
          Whether this is the default image.
        </ResponseField>

        <ResponseField name="id" type="ID!" required>
          The id of this image.
        </ResponseField>

        <ResponseField name="position" type="Int!" required>
          The image's ordering position.
        </ResponseField>

        <ResponseField name="url" type="String!" required>
          The public URL of the image.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="originCountry" type="String">
      The country of origin, as a country code, for customs.
    </ResponseField>

    <ResponseField name="sku" type="String">
      The stock keeping unit identifying this product.
    </ResponseField>

    <ResponseField name="title" type="String!" required>
      The product's title.
    </ResponseField>

    <ResponseField name="upc" type="String">
      The Universal Product Code for this product.
    </ResponseField>

    <ResponseField name="weight" type={<a href="/docs/api-reference/v3/reference/catalog/weight">Weight</a>}>
      The product's weight, for shipping.

      <Expandable title="fields" lazyRender>
        <ResponseField name="unit" type={<a href="/docs/api-reference/v3/reference/catalog/weight-unit">WeightUnit!</a>} required>
          The unit the value is expressed in.
        </ResponseField>

        <ResponseField name="value" type="Float!" required>
          The numeric magnitude of the weight.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="lastCountedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime</a>}>
  When this bin-level quantity was last cycle-counted.
</ResponseField>

<ResponseField name="location" type={<a href="/docs/api-reference/v3/reference/inventory/location">Location</a>}>
  The warehouse this quantity is held at.

  **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

  <Expandable title="fields" lazyRender>
    <ResponseField name="city" type="String">
      The city of the location's address.
    </ResponseField>

    <ResponseField name="company" type="String">
      The company name associated with the location.
    </ResponseField>

    <ResponseField name="countryCode" type="String">
      The country code, e.g. "US".
    </ResponseField>

    <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When the record was created.
    </ResponseField>

    <ResponseField name="id" type="ID!" required>
      The id of this location.
    </ResponseField>

    <ResponseField name="inventoryItems" type={<a href="/docs/api-reference/v3/pagination">InventoryItemConnection!</a>} required>
      Traceable inventory units at this warehouse.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        **Arguments**

        <ResponseField name="after" type="String">
          Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
        </ResponseField>

        <ResponseField name="before" type="String">
          Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
        </ResponseField>

        <ResponseField name="first" type="Int">
          Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
        </ResponseField>

        <ResponseField name="last" type="Int">
          Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
        </ResponseField>

        **Fields**

        <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[InventoryItemEdge!]!</a>} required>
          The list of edges (each a node plus its pagination `cursor`).
        </ResponseField>

        <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item">[InventoryItem!]!</a>} required>
          The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.
        </ResponseField>

        <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
          Pagination metadata for the current page.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="inventoryLevels" type={<a href="/docs/api-reference/v3/pagination">LocationInventoryLevelConnection!</a>} required>
      Per-product inventory levels held at this location.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        **Arguments**

        <ResponseField name="after" type="String">
          Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
        </ResponseField>

        <ResponseField name="before" type="String">
          Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
        </ResponseField>

        <ResponseField name="first" type="Int">
          Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
        </ResponseField>

        <ResponseField name="last" type="Int">
          Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
        </ResponseField>

        **Fields**

        <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[LocationInventoryLevelEdge!]!</a>} required>
          The list of edges (each a node plus its pagination `cursor`).
        </ResponseField>

        <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/location-inventory-level">[LocationInventoryLevel!]!</a>} required>
          The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.
        </ResponseField>

        <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
          Pagination metadata for the current page.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="name" type="String!" required>
      The location's display name.
    </ResponseField>

    <ResponseField name="phone" type="String">
      The contact phone number for the location.
    </ResponseField>

    <ResponseField name="postalCode" type="String">
      The postal or ZIP code, e.g. "84101".
    </ResponseField>

    <ResponseField name="stateCode" type="String">
      The state or province code, e.g. "UT".
    </ResponseField>

    <ResponseField name="storageLocations" type={<a href="/docs/api-reference/v3/pagination">StorageLocationConnection!</a>} required>
      Bins and other storage locations within this warehouse.

      **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

      <Expandable title="fields" lazyRender>
        **Arguments**

        <ResponseField name="after" type="String">
          Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
        </ResponseField>

        <ResponseField name="before" type="String">
          Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
        </ResponseField>

        <ResponseField name="first" type="Int">
          Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
        </ResponseField>

        <ResponseField name="last" type="Int">
          Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
        </ResponseField>

        **Fields**

        <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[StorageLocationEdge!]!</a>} required>
          The list of edges (each a node plus its pagination `cursor`).
        </ResponseField>

        <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location">[StorageLocation!]!</a>} required>
          The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.
        </ResponseField>

        <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
          Pagination metadata for the current page.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="street1" type="String">
      The first line of the street address.
    </ResponseField>

    <ResponseField name="street2" type="String">
      The second line of the street address.
    </ResponseField>

    <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When the record was last updated.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="maxQuantity" type="Int">
  Maximum quantity allowed in the bin, when capped.
</ResponseField>

<ResponseField name="quantity" type="Int!" required>
  Quantity on hand in the storage location.
</ResponseField>

<ResponseField name="storageLocation" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location">StorageLocation!</a>} required>
  The bin or slot holding this quantity.

  **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

  <Expandable title="fields" lazyRender>
    <ResponseField name="binInventoryLevels" type={<a href="/docs/api-reference/v3/pagination">BinInventoryLevelConnection!</a>} required>
      Product quantities held in this storage location.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        **Arguments**

        <ResponseField name="after" type="String">
          Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
        </ResponseField>

        <ResponseField name="before" type="String">
          Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
        </ResponseField>

        <ResponseField name="first" type="Int">
          Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
        </ResponseField>

        <ResponseField name="inStock" type="Boolean">
          true returns only rows holding stock (quantity above zero). false returns only empty or negative rows, such as emptied assignments and LOST balancing entries.
        </ResponseField>

        <ResponseField name="last" type="Int">
          Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
        </ResponseField>

        <ResponseField name="orderBy" type={<a href="/docs/api-reference/v3/reference/inventory/bin-inventory-level-sort-key">BinInventoryLevelSortKey</a>}>
          Which key to sort by (creation time, newest first). Combine with `reverse` to flip direction.
        </ResponseField>

        <ResponseField name="reverse" type="Boolean">
          Reverses the sort direction selected by `orderBy` (or its default).
        </ResponseField>

        **Fields**

        <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[BinInventoryLevelEdge!]!</a>} required>
          The list of edges (each a node plus its pagination `cursor`).
        </ResponseField>

        <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/bin-inventory-level">[BinInventoryLevel!]!</a>} required>
          The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.
        </ResponseField>

        <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
          Pagination metadata for the current page.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When the record was created.
    </ResponseField>

    <ResponseField name="id" type="ID!" required>
      The id of this storage location.
    </ResponseField>

    <ResponseField name="inventoryItems" type={<a href="/docs/api-reference/v3/pagination">InventoryItemConnection!</a>} required>
      Inventory items currently in this storage location.

      **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

      <Expandable title="fields" lazyRender>
        **Arguments**

        <ResponseField name="after" type="String">
          Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
        </ResponseField>

        <ResponseField name="before" type="String">
          Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
        </ResponseField>

        <ResponseField name="first" type="Int">
          Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
        </ResponseField>

        <ResponseField name="last" type="Int">
          Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
        </ResponseField>

        **Fields**

        <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[InventoryItemEdge!]!</a>} required>
          The list of edges (each a node plus its pagination `cursor`).
        </ResponseField>

        <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-item">[InventoryItem!]!</a>} required>
          The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.
        </ResponseField>

        <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
          Pagination metadata for the current page.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="isSellable" type="Boolean!" required>
      Whether on-hand quantity in this slot counts as sellable inventory.
    </ResponseField>

    <ResponseField name="location" type={<a href="/docs/api-reference/v3/reference/inventory/location">Location!</a>} required>
      The warehouse this storage location belongs to.

      **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

      <Expandable title="fields" lazyRender>
        <ResponseField name="city" type="String">
          The city of the location's address.
        </ResponseField>

        <ResponseField name="company" type="String">
          The company name associated with the location.
        </ResponseField>

        <ResponseField name="countryCode" type="String">
          The country code, e.g. "US".
        </ResponseField>

        <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was created.
        </ResponseField>

        <ResponseField name="id" type="ID!" required>
          The id of this location.
        </ResponseField>

        <ResponseField name="inventoryItems" type={<a href="/docs/api-reference/v3/pagination">InventoryItemConnection!</a>} required>
          Traceable inventory units at this warehouse.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="inventoryLevels" type={<a href="/docs/api-reference/v3/pagination">LocationInventoryLevelConnection!</a>} required>
          Per-product inventory levels held at this location.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="name" type="String!" required>
          The location's display name.
        </ResponseField>

        <ResponseField name="phone" type="String">
          The contact phone number for the location.
        </ResponseField>

        <ResponseField name="postalCode" type="String">
          The postal or ZIP code, e.g. "84101".
        </ResponseField>

        <ResponseField name="stateCode" type="String">
          The state or province code, e.g. "UT".
        </ResponseField>

        <ResponseField name="storageLocations" type={<a href="/docs/api-reference/v3/pagination">StorageLocationConnection!</a>} required>
          Bins and other storage locations within this warehouse.

          **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

          <Expandable title="fields" lazyRender>
            **Arguments**

            <ResponseField name="after" type="String">
              Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
            </ResponseField>

            <ResponseField name="before" type="String">
              Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
            </ResponseField>

            <ResponseField name="first" type="Int">
              Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
            </ResponseField>

            <ResponseField name="last" type="Int">
              Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="street1" type="String">
          The first line of the street address.
        </ResponseField>

        <ResponseField name="street2" type="String">
          The second line of the street address.
        </ResponseField>

        <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was last updated.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="name" type="String!" required>
      The display name of the bin or slot.
    </ResponseField>

    <ResponseField name="priority" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location-priority">StorageLocationPriority</a>}>
      Pick priority relative to other bins, when set.
    </ResponseField>

    <ResponseField name="source" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location-source">StorageLocationSource!</a>} required>
      How this record was created.
    </ResponseField>

    <ResponseField name="stockedProductCount" type="Int!" required>
      How many product levels in this storage location have a quantity above zero.
    </ResponseField>

    <ResponseField name="totalQuantity" type="Int!" required>
      The sum of every level's quantity in this storage location. Negative in areas such as LOST that offset stock elsewhere.
    </ResponseField>

    <ResponseField name="type" type={<a href="/docs/api-reference/v3/reference/inventory/storage-location-type">StorageLocationType!</a>} required>
      The kind of storage location.
    </ResponseField>

    <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
      When the record was last updated.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
  When the record was last updated.
</ResponseField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.