1. APIs
Help for ShipSage
  • 中文版 V2.0
    • 接口集成
      • OMS API
        • 入门指南
        • 接口
          • 店铺
          • 仓库
          • 产品
          • 库存
          • 订单
          • 包裹
          • 物流跟踪
          • 发货计划
          • 转运
          • 增值服务
          • 退货
          • 文件上传
  • English V2.0
    • API Integration
      • OMS API
        • Getting Started
        • APIs
          • Account
          • Warehouse
          • Product
          • Inventory
          • Order
          • Shipping
          • Tracking
          • ASN
          • Transfer
          • VAS
          • Return
          • File Upload
  1. APIs

Inventory

Endpoints#

MethodEndpointDescription
GET/api/v202206/inventory/productsRetrieve product inventory list
GET/api/v202206/inventory/cartonsRetrieve carton inventory list
GET/api/v202206/inventory/palletsRetrieve pallet inventory list
GET/api/v202105/inventoriesRetrieves a list of inventory
GET/api/v202608/lot-inventoriesRetrieve real-time lot inventory
GET/api/v202608/inventory-snapshotsRetrieve SKU-level inventory snapshot (by date)
GET/api/v202608/lot-inventory-snapshotsRetrieve Lot-level inventory snapshot (by date)
[NEW] v202608 Patch (2026-09):
Existing GET /api/v202206/inventory/products params now support a new condition filter (already merged into the params table below).
New GET /api/v202608/lot-inventories: real-time lot inventory query
New GET /api/v202608/inventory-snapshots: SKU-level historical snapshot
New GET /api/v202608/lot-inventory-snapshots: Lot-level historical snapshot
The 3 new endpoints are read-only — for real-time lot inventory query + historical reconciliation replay.

Header#

KeyValue
AuthorizationBearer eyJ0eXAiOiJKV1QiLCJhbGciOi ...

GET /api/v202206/inventory/products#

Request#

Params#
TypeNameDescriptionRequired/OptionalSchema
queryapiThe API type

Available Values:
index.by-default
requiredenum
querycustomer_skuThe customer SKUoptionalstring
querywarehouse_idThe warehouse IDoptionalinteger
queryconditionFilter by inventory state

Available Values:
New, Open Box, Used, Customized, Parts, Damaged
optionalenum
querynext_tokenThe next page dataoptionalstring

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionSchema
product_idThe shipsage product idinteger
skuThe shipsage skuinteger
customer_skuThe customer skustring
bundledWhether to bundle the product, if the value is 1 then 'qty_bundle_available' is required

Available Values:
0: basic, 1: Bundle
enum
warehouse_idThe warehouse idinteger
warehouse_nameThe destination warehousestring
conditionThe state of the inventory, whether it is new, used, or damaged, etc.
The same SKU may have multiple conditions in the same warehouse. When multiple conditions have inventory, they will be displayed in separate rows.

Available Values:
New, Open Box,Used,Customized,Parts,Damaged
enum
qty_allocatedAllocated or occupied qtyinteger
qty_holdQuantity waiting for put on the shelvesinteger
qty_bundle_availableBundle available qty, Whether or not there is a value depends on whether the value of 'bundled' is 1integer
qty_on_handOn hand qtyinteger
qty_availableAvailable qtyinteger
qty_receibing_areaqty in the receiving area (This field is deprecated)integer
qty_frozenFrozen qtyinteger
qty_conditionedThe Conditioned qty (This field is deprecated)integer
qty_in_transitIn Transit qtyinteger
Data Demo#
 [
     {
         "warehouse_id": 101,
         "warehouse_name": "SG-SMF1",
         "product_id": 136251,
         "sku": 230924,
         "customer_sku": "0905",
         "bundled": 0,
         "condition": "New",
         "qty_on_hand": 23,
         "qty_hold": 5,
         "qty_frozen": 0,
         "qty_allocated": 0,
         "qty_receiving_area": 0,
         "qty_in_transit": 0,
         "qty_available": 18,
         "qty_bundle_available": 0,
         "qty_conditioned": 0
     },
     {
         "warehouse_id": 101,
         "warehouse_name": "SG-SMF1",
         "product_id": 136251,
         "sku": 230924,
         "customer_sku": "0905",
         "bundled": 0,
         "condition": "Open Box",
         "qty_on_hand": 1,
         "qty_hold": 0,
         "qty_frozen": 0,
         "qty_allocated": 0,
         "qty_receiving_area": 0,
         "qty_in_transit": 0,
         "qty_available": 1,
         "qty_bundle_available": 0,
         "qty_conditioned": 0
     }
 ]

GET /api/v202206/inventory/cartons#

Request#

Params#
TypeNameDescriptionRequired/OptionalSchema
queryapiThe API type

Available Values:
index.by-default
requiredenum
querybarcodeThe carton barcodeoptionalstring
querywarehouse_idThe warehouse IDoptionalinteger
querynext_tokenThe next page dataoptionalstring

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionSchema
barcodeThe carton barcodeinteger
asn_idThe ASN IDinteger
contentThe real thing in the cartonstring
warehouse_idThe warehouse idinteger
warehouse_nameThe destination warehousestring
qty_allocatedAllocated or occupied qtyinteger
qty_holdHolding qty (not used yet)integer
qty_on_handOn hand qtyinteger
qty_availableAvailable qtyinteger
qty_receibing_areaQty in the receiving areainteger
qty_frozenFrozen qtyinteger
created_atThe Inventory create time timezone:PSTdatetime
updated_atThe Inventory update time timezone:PSTdatetime
Data Demo#
[
      {
        "warehouse_id": 101,
        "warehouse_name": "Tracy",
        "asn_id": "18505",
        "barcode": "XS000000187204",
        "qty_on_hand": 1,
        "qty_allocated": 1,
        "qty_hold": 0,
        "qty_frozen": 0,
        "qty_available": 1,
        "qty_receiving_area": 0,
        "content": "PL-WF002-01A-VC*18",
        "created_at": "2022-06-29 10:44:10",
        "updated_at": "2022-07-08 01:47:06"
      },
      {
        "warehouse_id": 101,
        "warehouse_name": "Tracy",
        "asn_id": "18505",
        "barcode": "XS000000187205",
        "qty_on_hand": 0,
        "qty_allocated": 0,
        "qty_hold": 0,
        "qty_frozen": 0,
        "qty_available": 0,
        "qty_receiving_area": 0,
        "content": "PL-WF002-01A-VC*18",
        "created_at": "2022-06-29 10:44:10",
        "updated_at": "2022-06-29 10:44:10"
      }
]

GET /api/v202206/inventory/pallets#

Request#

Params#
TypeNameDescriptionRequired/OptionalSchema
queryapiThe API type

Available Values:
index.by-default
requiredenum
querybarcodeThe pallet barcodeoptionalstring
querywarehouse_idThe warehouse IDoptionalinteger
querynext_tokenThe next page dataoptionalstring

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionSchema
barcodeThe pallet barcodeinteger
asn_idThe ASN IDinteger
contentThe real thing in the palletstring
warehouse_idThe warehouse idinteger
warehouse_nameThe destination warehousestring
qty_allocatedallocated or occupied qtyinteger
qty_holdHolding qty (not used yet)integer
qty_on_handOn hand qtyinteger
qty_availableAvailable qtyinteger
qty_receibing_areaqty in the receiving areainteger
qty_frozenFrozen qtyinteger
created_atThe Inventory create time timezone:PSTdatetime
updated_atThe Inventory update time timezone:PSTdatetime
Data Demo#
[
    {
        "warehouse_id": 101,
        "warehouse_name": "Tracy",
        "asn_id": "19926",
        "barcode": "PL001211",
        "qty_on_hand": 1,
        "qty_allocated": 1,
        "qty_hold": 0,
        "qty_frozen": 0,
        "qty_available": 1,
        "qty_receiving_area": 0,
        "content": "",
        "created_at": "2022-07-08 12:24:18",
        "updated_at": "2022-07-08 20:17:54"
      },
      {
        "warehouse_id": 101,
        "warehouse_name": "Tracy",
        "asn_id": "19926",
        "barcode": "PL001322",
        "qty_on_hand": 1,
        "qty_allocated": 0,
        "qty_hold": 0,
        "qty_frozen": 0,
        "qty_available": 1,
        "qty_receiving_area": 0,
        "content": "",
        "created_at": "2022-07-08 12:24:21",
        "updated_at": "2022-07-08 12:24:58"
      }
]

GET /api/v202105/inventories#

Request#

Params#
TypeNameDescriptionRequired/OptionalSchema
queryapiThe API type

Available Values:
index.by-default
requiredenum
querycustomer_skuThe customer SKUoptionalstring
querynext_tokenThe next page dataoptionalstring

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionSchema
product_idThe shipsage product idinteger
product_nameProduct namestring
skuThe shipsage skuinteger
customer_skuThe customer skustring
bundledWhether to bundle the product, if the value is 1 then 'qty_bundle_available' is required

Available Values:
0: basic, 1: Bundle
enum
qty_bundle_availableBundle available qty, Whether or not there is a value depends on whether the value of 'bundled' is 1integer
qty_onhandOn hand qtyinteger
qty_availableAvailable qtyinteger
qty_pendingPending qtyinteger
qty_intransitIn Transit qtyinteger
qty_conditionedConditioned qtyinteger
Data Demo#
[
    {
        "product_id": 1,
        "product_name": "NEW Electric Fuel Pump EP7123 FOR Dodge Duango, Ram 1500, Ram 2500 _Fuel Pump",
        "sku": 100005,
        "customer_sku": "100005",
        "bundled": 0,
        "qty_bundle_available": 0,
        "qty_onhand": 100,
        "qty_available": 90,
        "qty_pending": 10,
        "qty_intransit": 20
    },
    {
        "product_id": 2,
        "product_name": "New Electric Fuel Pump E8016S for Volvo Audi Nissan Ford Dodge BMW _Fuel Pump",
        "sku": 100006,
        "customer_sku": "100006",
        "bundled": 1,
        "qty_bundle_available": 50,
        "qty_onhand": 0,
        "qty_available": 0,
        "qty_pending": 0,
        "qty_intransit": 0
    }
]

v202608 Patch (2026-09) — New Snapshot Endpoints#

GET /api/v202608/lot-inventories (Get Real-time Lot Inventory)#

Returns current inventory state by lot dimension.

Request#

Params#
TypeNameDescriptionRequired/OptionalData Type
queryapiAPI type

Available values:
index.by-default
Requiredenum
querywarehouse_idWarehouse idOptionalinteger
querycustomer_skuCustomer SKU code (exact match)Optionalstring
queryskuSystem SKU code (exact match)Optionalinteger
querylot_idShipSage internal lot numberOptionalinteger
queryconditionInventory condition
Available values:
New, Open Box, Used, Customized, Parts, Damaged, Disposal, Stored, Unclaimed
Optionalenum
querylot_ruleProduct-level Lot rule
Available values:
fifo (first-in-first-out by receive date, physically segregated by location),
fefo (first-expire-first-out by expiration date, physically segregated by location),
none (SKU without lot management enabled)
Optionalstring
queryreceive_date_fromReceive date fromOptionaldate
queryreceive_date_toReceive date toOptionaldate
queryexpiration_date_fromExpiration date fromOptionaldate
queryexpiration_date_toExpiration date toOptionaldate
queryaged_days_minAged days minimumOptionalinteger
queryaged_days_maxAged days maximumOptionalinteger
queryupdated_at_fromUpdated time from (for incremental pulling)
Timezone: Pacific Standard Time
Optionaldatetime
queryupdated_at_toUpdated time to
Timezone: Pacific Standard Time
Optionaldatetime
queryhas_available_qtyWhether to return only rows with available qty > 0 (default 1)
Available values:
0: all, 1: available only
Optionalenum
querysort_bySort field (default receive_date)
Available values:
receive_date, expiration_date, aged_days
Optionalenum
querysort_orderSort direction (default asc)
Available values:
asc, desc
Optionalenum
querynext_tokenToken for the next pageOptionalstring
Request Example#
GET /api/v202608/lot-inventories?api=index.by-default&warehouse_id=100&customer_sku=CUS-SKU-001&condition=New&lot_rule=fefo&expiration_date_from=2027-01-01&has_available_qty=1&sort_by=expiration_date&sort_order=asc

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionData Type
lot_idShipSage internal lot numberinteger
warehouse_idWarehouse idinteger
warehouse_nameWarehouse namestring
conditionInventory condition. Available values: New / Open Box / Used / Customized / Parts / Damaged / Disposal / Stored / Unclaimedstring
skuSystem SKU codeinteger
customer_skuCustomer SKU codestring
bundledWhether it is a bundle product
Available values:
0: No, 1: Yes
integer
lot_ruleProduct-level Lot rule (fifo / fefo / null)string
receive_dateReceive datedate
expiration_dateExpiration datedate
aged_dateAged start datedate
aged_daysAged days (from aged_date to today)integer
qty_on_handTotal on-hand quantityinteger
qty_allocatedAllocated quantityinteger
qty_holdQuantity waiting to be put awayinteger
qty_frozenFrozen quantityinteger
qty_availableAvailable quantityinteger
Response Example#
{
    "errcode": 0,
    "errmsg": "ok",
    "data": {
        "items": [
            {
                "lot_id": 5511,
                "warehouse_id": 100,
                "warehouse_name": "SG-MDW1",
                "condition": "New",
                "sku": 3001,
                "customer_sku": "CUS-SKU-001",
                "bundled": 0,
                "lot_rule": "fefo",
                "receive_date": "2026-06-15",
                "expiration_date": "2027-06-15",
                "aged_date": "2026-06-15",
                "aged_days": 60,
                "qty_on_hand": 500,
                "qty_allocated": 120,
                "qty_hold": 0,
                "qty_frozen": 0,
                "qty_available": 380
            }
        ],
        "next_token": null
    }
}

GET /api/v202608/inventory-snapshots (Get SKU-level Inventory Snapshot)#

Returns SKU-level inventory snapshot for the specified date. Fields are consistent with the real-time inventory query endpoint GET /api/v202206/inventory/products (except for snapshot-specific fields).
snapshot_date is required. Historical snapshots are returned only when data exists for the requested date; an empty array is returned otherwise.

Request#

Params#
TypeNameDescriptionRequired/OptionalData Type
queryapiAPI type

Available values:
index.by-default
Requiredenum
querysnapshot_dateSnapshot date (YYYY-MM-DD format)Requireddate
querywarehouse_idWarehouse idOptionalinteger
querycustomer_skuCustomer SKU code (exact match)Optionalstring
queryconditionInventory condition
Available values:
New, Open Box, Used, Customized, Parts, Damaged, Disposal, Stored, Unclaimed
Optionalenum
queryhas_available_qtyWhether to return only rows with available qty > 0 (default 1)
Available values:
0: all, 1: available only
Optionalenum
querynext_tokenToken for the next pageOptionalstring
Request Example#
GET /api/v202608/inventory-snapshots?api=index.by-default&snapshot_date=2026-08-11&warehouse_id=100&customer_sku=CUS-SKU-001&condition=New&has_available_qty=1

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionData Type
snapshot_dateThe business date this snapshot corresponds to. Represents the inventory state as of the end of that day. For example, 2026-08-11 represents the inventory at the end of August 11, 2026.date
snapshot_atThe actual time when the snapshot data was generated. The system automatically runs the snapshot task around midnight each day (between 23:50 on the snapshot_date and 00:10 on the following day), "freezing" the inventory state at the end of the day. So when snapshot_date = 2026-08-11, snapshot_at is typically between 2026-08-11 23:50 and 2026-08-12 00:10.
Timezone: Pacific Standard Time
datetime
warehouse_idWarehouse idinteger
warehouse_nameWarehouse namestring
conditionInventory condition. Available values: New / Open Box / Used / Customized / Parts / Damaged / Disposal / Stored / Unclaimedstring
skuSystem SKU codeinteger
customer_skuCustomer SKU codestring
bundledWhether it is a bundle product
Available values:
0: No, 1: Yes
integer
qty_on_handTotal on-hand quantityinteger
qty_holdQuantity waiting to be put awayinteger
qty_frozenFrozen quantityinteger
qty_allocatedAllocated quantityinteger
qty_in_transitIn-transit quantityinteger
qty_availableAvailable quantityinteger
Response Example#
{
    "errcode": 0,
    "errmsg": "ok",
    "data": {
        "items": [
            {
                "snapshot_date": "2026-08-11",
                "snapshot_at": "2026-08-12 00:00:00",
                "warehouse_id": 100,
                "warehouse_name": "SG-MDW1",
                "condition": "New",
                "sku": 3001,
                "customer_sku": "CUS-SKU-001",
                "bundled": 0,
                "qty_on_hand": 500,
                "qty_hold": 5,
                "qty_frozen": 0,
                "qty_allocated": 120,
                "qty_in_transit": 200,
                "qty_available": 380
            }
        ],
        "next_token": null
    }
}

GET /api/v202608/lot-inventory-snapshots (Get Lot-level Inventory Snapshot)#

Returns lot-level inventory snapshot for the specified date. snapshot_date is required.

Request#

Params#
TypeNameDescriptionRequired/OptionalData Type
queryapiAPI type

Available values:
index.by-default
Requiredenum
querysnapshot_dateSnapshot date (YYYY-MM-DD format)Requireddate
querywarehouse_idWarehouse idOptionalinteger
querycustomer_skuCustomer SKU codeOptionalstring
queryskuSystem SKU codeOptionalinteger
querylot_idShipSage internal lot numberOptionalinteger
queryconditionInventory condition
Available values:
New, Open Box, Used, Customized, Parts, Damaged, Disposal, Stored, Unclaimed
Optionalenum
querylot_ruleProduct-level Lot rule
Available values:
fifo, fefo, none
Optionalenum
queryreceive_date_fromReceive date fromOptionaldate
queryreceive_date_toReceive date toOptionaldate
queryexpiration_date_fromExpiration date fromOptionaldate
queryexpiration_date_toExpiration date toOptionaldate
queryhas_available_qtyWhether to return only rows with available qty > 0 (default 1)
Available values:
0: all, 1: available only
Optionalenum
querysort_bySort field (default receive_date)
Available values:
receive_date, expiration_date
Optionalenum
querysort_orderSort direction (default asc)Optionalenum
querynext_tokenToken for the next pageOptionalstring
Request Example#
GET /api/v202608/lot-inventory-snapshots?api=index.by-default&snapshot_date=2026-08-11&warehouse_id=100&customer_sku=CUS-SKU-001&condition=New&lot_rule=fefo&has_available_qty=1&sort_by=expiration_date

Response#

KeyValue
errcode0/4000
errmsgok/Error Info
dataData Properties
Data Properties#
NameDescriptionData Type
snapshot_dateThe business date this snapshot corresponds to. Represents the inventory state as of the end of that day. For example, 2026-08-11 represents the inventory at the end of August 11, 2026.date
snapshot_atTimestamp of the last recorded action for this lot within the snapshot business date (corresponds to MAX(action_date) in the warehouse history table on the snapshot day) — the moment this lot snapshot was captured. snapshot_date is the date portion of this value.
Timezone: Pacific Standard Time
datetime
lot_idShipSage internal lot numberinteger
warehouse_idWarehouse idinteger
warehouse_nameWarehouse namestring
conditionInventory condition. Available values: New / Open Box / Used / Customized / Parts / Damaged / Disposal / Stored / Unclaimedstring
skuSystem SKU codeinteger
customer_skuCustomer SKU codestring
bundledWhether it is a bundle product (0/1)integer
lot_ruleProduct-level Lot rule (fifo / fefo / null)string
receive_dateReceive datedate
expiration_dateExpiration datedate
aged_dateAged start datedate
aged_daysAged days (from aged_date to snapshot date)integer
qty_on_handTotal on-hand quantityinteger
qty_allocatedAllocated quantityinteger
qty_holdQuantity waiting to be put awayinteger
qty_frozenFrozen quantityinteger
qty_availableAvailable quantityinteger
Response Example#
{
    "errcode": 0,
    "errmsg": "ok",
    "data": {
        "items": [
            {
                "snapshot_date": "2026-08-11",
                "snapshot_at": "2026-08-12 00:00:00",
                "lot_id": 5511,
                "warehouse_id": 100,
                "warehouse_name": "SG-MDW1",
                "condition": "New",
                "sku": 3001,
                "customer_sku": "CUS-SKU-001",
                "bundled": 0,
                "lot_rule": "fefo",
                "receive_date": "2026-06-15",
                "expiration_date": "2027-06-15",
                "aged_date": "2026-06-15",
                "aged_days": 57,
                "qty_on_hand": 500,
                "qty_allocated": 120,
                "qty_hold": 0,
                "qty_frozen": 0,
                "qty_available": 380
            }
        ],
        "next_token": null
    }
}
Modified at 2026-09-23 07:23:36
Previous
Product
Next
Order
Built with