> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer-stage.shipbob.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server.

# Get All Inventory Levels Grouped By Fulfillment Center

GET https://sandbox-api.shipbob.com/2026-01/inventory-level/locations

Retrieves inventory levels for all inventory items grouped by fulfillment center location. Supports filtering by location type, location ID, and various product attributes.

Reference: https://developer-stage.shipbob.dev/api/inventory/get-all-inventory-levels-grouped-by-fulfillment-center

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2026-01
  version: 1.0.0
paths:
  /2026-01/inventory-level/locations:
    get:
      operationId: get-all-inventory-levels-grouped-by-fulfillment-center
      summary: Get All Inventory Levels Grouped By Fulfillment Center
      description: >-
        Retrieves inventory levels for all inventory items grouped by
        fulfillment center location. Supports filtering by location type,
        location ID, and various product attributes.
      tags:
        - subpackage_inventory
      parameters:
        - name: LocationType
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.LocationType.String
        - name: LocationId
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.LocationId.Integer
        - name: SearchBy
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.SearchBy.String
        - name: InventoryIds
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.InventoryIds.IntegerArray
        - name: IsActive
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.IsActive.Boolean
        - name: IsDigital
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.IsDigital.Boolean
        - name: PageSize
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.PageSize.Integer
        - name: SortBy
          in: query
          description: ''
          required: false
          schema:
            $ref: >-
              #/components/schemas/Inventory.Get.Api.V3.Inventory.Levels.Locations.SortBy.String
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Inventory.InventoryQuantityFcResponsePagedResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inventory.ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inventory.ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inventory.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                description: Any type
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                description: Any type
servers:
  - url: https://sandbox-api.shipbob.com
    description: https://sandbox-api.shipbob.com
components:
  schemas:
    Inventory.Get.Api.V3.Inventory.Levels.Locations.LocationType.String:
      type: string
      description: >-
        Filter by location type. Valid values: 'hub', 'spoke', or 'lts'.
        Defaults to all locations if not specified.
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.LocationType.String
    Inventory.Get.Api.V3.Inventory.Levels.Locations.LocationId.Integer:
      type: integer
      description: >-
        Filter by specific fulfillment center location ID. Use this to retrieve
        inventory levels for a particular fulfillment center.
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.LocationId.Integer
    Inventory.Get.Api.V3.Inventory.Levels.Locations.SearchBy.String:
      type: string
      description: >-
        Search is available for 3 fields: Inventory ID, Name, and SKU. Expected
        behavior for search by Inventory ID is exact match. Expected behavior
        for search by Inventory Name or SKU is partial match (consecutive
        characters, case insensitive).
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.SearchBy.String
    Inventory.Get.Api.V3.Inventory.Levels.Locations.InventoryIds.IntegerArray:
      type: array
      items:
        type: integer
      description: >-
        Comma-separated list of inventory IDs to filter results. Use this to
        retrieve location-grouped inventory levels for specific inventory items
        only.
      title: >-
        Inventory.Get.Api.V3.Inventory.Levels.Locations.InventoryIds.IntegerArray
    Inventory.Get.Api.V3.Inventory.Levels.Locations.IsActive.Boolean:
      type: boolean
      description: >-
        Filter inventory levels by active status. Set to true to return only
        active inventory items, false for inactive items. Omit to return all
        items regardless of status.
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.IsActive.Boolean
    Inventory.Get.Api.V3.Inventory.Levels.Locations.IsDigital.Boolean:
      type: boolean
      description: >-
        Filter inventory levels by digital product status. Set to true to return
        only digital products, false for physical products. Digital products are
        items that don't require physical fulfillment.
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.IsDigital.Boolean
    Inventory.Get.Api.V3.Inventory.Levels.Locations.PageSize.Integer:
      type: integer
      description: >-
        Number of location-grouped inventory level items to return per page.
        Controls pagination size for the response.
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.PageSize.Integer
    Inventory.Get.Api.V3.Inventory.Levels.Locations.SortBy.String:
      type: string
      description: >-
        Sort results by field name. Default is ascending order. Prefix with '-'
        for descending order (e.g., '-name' sorts by name descending). Multiple
        fields can be comma-separated.
      title: Inventory.Get.Api.V3.Inventory.Levels.Locations.SortBy.String
    Inventory.FulfillmentCenterResponse:
      type: object
      properties:
        awaiting_quantity:
          type: integer
          description: Quantity expected to arrive at this location
        committed_quantity:
          type: integer
          description: Quantity reserved for existing orders at this location
        fulfillable_quantity:
          type: integer
          description: Quantity available to fulfill new orders at this location
        internal_transfer_quantity:
          type: integer
          description: Quantity in transit to or from this location
        location_id:
          type: integer
          description: Unique identifier for the fulfillment center location
        name:
          type: string
          description: Name of the fulfillment center
        on_hand_quantity:
          type: integer
          description: Total quantity physically present at this location
      title: Inventory.FulfillmentCenterResponse
    Inventory.InventoryQuantityFcResponse:
      type: object
      properties:
        inventory_id:
          type: integer
          description: Unique identifier for the inventory item
        locations:
          type: array
          items:
            $ref: '#/components/schemas/Inventory.FulfillmentCenterResponse'
          description: >-
            List of fulfillment centers and their respective inventory
            quantities
        name:
          type: string
          description: Name of the inventory item
        sku:
          type: string
          description: Stock keeping unit identifier
      title: Inventory.InventoryQuantityFcResponse
    Inventory.InventoryQuantityFcResponsePagedResponse:
      type: object
      properties:
        first:
          type: string
          description: >-
            URL to retrieve the first page of results. Null if already on the
            first page.
        items:
          type: array
          items:
            $ref: '#/components/schemas/Inventory.InventoryQuantityFcResponse'
          description: >-
            Array of location-grouped inventory quantity items in the current
            page of results.
        last:
          type: string
          description: >-
            URL to retrieve the last page of results. Null if already on the
            last page.
        next:
          type: string
          description: URL to retrieve the next page of results. Null if on the last page.
        prev:
          type: string
          description: >-
            URL to retrieve the previous page of results. Null if on the first
            page.
      title: Inventory.InventoryQuantityFcResponsePagedResponse
    Inventory.ProblemDetails:
      type: object
      properties:
        detail:
          type: string
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
        instance:
          type: string
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem. It may or may not yield further information if
            dereferenced.
        status:
          type: integer
          description: The HTTP status code for this occurrence of the problem.
        title:
          type: string
          description: A short, human-readable summary of the problem type.
        type:
          type: string
          description: >-
            A URI reference that identifies the problem type. This URI should
            provide human-readable documentation for the problem.
      title: Inventory.ProblemDetails
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token
    OAuth2:
      type: http
      scheme: bearer
      description: OAuth2 authentication using JWT tokens

```

## Examples



**Response**

```json
{
  "first": "string",
  "items": [
    {
      "inventory_id": 0,
      "locations": [
        {
          "awaiting_quantity": 0,
          "committed_quantity": 0,
          "fulfillable_quantity": 0,
          "internal_transfer_quantity": 0,
          "location_id": 0,
          "name": "string",
          "on_hand_quantity": 0
        }
      ],
      "name": "string",
      "sku": "string"
    }
  ],
  "last": "string",
  "next": "string",
  "prev": "string"
}
```

**SDK Code**

```python default
import requests

url = "https://sandbox-api.shipbob.com/2026-01/inventory-level/locations"

querystring = {"LocationType":"string","SearchBy":"string","InventoryIds":"[0]","IsActive":"true","IsDigital":"true","SortBy":"string"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript default
const url = 'https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go default
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby default
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php default
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp default
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/2026-01/inventory-level/locations?LocationType=string&SearchBy=string&InventoryIds=%5B0%5D&IsActive=true&IsDigital=true&SortBy=string")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```