Skip to main content

Inventory

The 3PL inventory dashboard gives your team one place to add incoming items and track inventory stored with DYLI. The read-only Inventory API exposes the same company-scoped stock to your backend.

Inventory API

GET /api/3pl/{company}/inventory

Use this endpoint to retrieve the full list of stock held for your company, current on-hand quantity, and in_stock, low_stock, or out_of_stock status. Results are paginated and default to live inventory.

The documentation and route are publicly reachable, but the inventory data is not public. Access requires:

  1. a standard DYLI Public API key created by a signed-in DYLI account; and
  2. that same account must have access to {company} in the 3PL Inventory Dashboard.

This is the same company authorization used when the account opens /inventory?section=3pl. A valid key tied to the wrong account or company returns 403. Company-specific partner keys do not bypass the account check.

Keep this request on your server:

export DYLI_3PL_COMPANY="gacha"
export DYLI_API_KEY="dyli_live_..."

curl --get "https://www.dyli.io/api/3pl/$DYLI_3PL_COMPANY/inventory" \
-H "x-api-key: $DYLI_API_KEY" \
--data-urlencode "location=live" \
--data-urlencode "pageSize=100"

Example response:

{
"company": "gacha",
"data": [
{
"inventory_id": 42,
"inventory_type": "sealed",
"name": "Pokemon Booster Box",
"image_url": "https://example.com/box.png",
"brand": "Pokemon",
"subcategory": "Booster Box",
"cert": null,
"product_id": 29022,
"received_quantity": 8,
"on_hand_quantity": 1,
"location": "live",
"status": "low_stock"
}
],
"pagination": {
"page": 1,
"page_size": 100,
"total": 1,
"total_pages": 1,
"has_more": false
},
"filters": {
"location": "live",
"status": "all",
"low_stock_threshold": 1,
"product_id": null,
"cert": null
}
}

Query Parameters

NameDescription
locationlive (default), staging, or all. Staging stock cannot be shipped or vaulted yet.
statusall (default), in_stock, low_stock, or out_of_stock.
lowStockThresholdPositive whole number used to classify and filter low stock. Defaults to 1. Alias: low_stock_threshold.
productIdExact DYLI product id for sealed inventory. Alias: product_id.
certExact grading certificate number. Non-digit separators are ignored.
page1-based page number. Defaults to 1.
pageSizeRows per page. Defaults to 100; maximum 250. Aliases: page_size, limit.

Status values are mutually exclusive at the selected threshold:

  • out_of_stock: on-hand quantity is 0;
  • low_stock: on-hand quantity is between 1 and the threshold, inclusive;
  • in_stock: on-hand quantity is greater than the threshold.

For shipping or vault requests, use cert for graded items and product_id for sealed items. inventory_id identifies the warehouse row and is not accepted as an item identifier by /rates or /order.

Inventory Dashboard

Once DYLI adds your company, your team will have access to the 3PL inventory dashboard.

How It Works

  1. Add incoming slabs or sealed products to Staging and include the shipment tracking number.
  2. DYLI receives and checks the shipment.
  3. Checked-in items move to Live inventory and become available for shipping or vaulting.
  4. Completed shipments and vault requests automatically reduce the live inventory count.

What You Can Do

  • Add slabs with a CSV file.
  • Add sealed products with the form or a CSV file.
  • See separate counts for staging and live inventory.
  • Search, filter, and export inventory records.
  • Review inventory changes in History.
  • Review monthly charges in Billing.

Items in staging are not available for normal shipping or vaulting. They become available after DYLI moves them to live inventory.