Skip to content

ListSkusWithUpdatedInventory returns only the SKUs of variants that:

You call thisScope not enforced

GET
/v2/storefront/listing/variant/inventory/updated/skus
curl --request GET \
--url https://api.zentail.com/v2/storefront/listing/variant/inventory/updated/skus \
--header 'Authorization: Bearer <token>'
  1. Have an inventory change since the last timestamp

  2. Have Inventory Data enabled for the Variant

Unlike ListVariantsWithUpdatedInventory it skips full-variant hydration, returning the matching SKUs directly so a high-frequency poller does not load the listing DB. Consumers re-fetch full variants via GetVariant.

since
string format: date-time
cursor
string

A successful response.

Media typeapplication/json

ListSkusResponse is the response object containing the SKUs of variants with updated inventory.

object
skus
Array<string>
nextPageCursor

The cursor token for the next page of results. If empty, there are no more results.

string
driftListings

The same variants as skus, same length and same order, each paired with its listing. Populated only by ListSkusWithInventoryDrift, and additive on purpose: skus stays authoritative, so the shipped Amazon reconciler that reads only skus needs no change (ZEN-4477).

A variant whose listing cannot be resolved is still reported, with an empty listing_id, because dropping it would silently skip a drifted SKU. Group those separately rather than pooling them under one empty key.

Treat a non-empty skus with an empty drift_listings as an error, never as “no work”. That is exactly what a consumer deployed ahead of the server populating this field would see, and cross-repo deploy order cannot be enforced (ZEN-4161).

Array<object>

SkuListing pairs a SKU with the listing that carries it, so a caller can group by listing. eBay charges its revision budget per listing rather than per SKU, and groups variations under one listing (ZEN-4477).

object
sku
string
listingId

Zentail’s listing id, matching Listing.id – not the channel’s, which this file calls channel_listing_id. Both sit on the variant row, and Zentail’s is the safe one to meter a revision budget against because it groups every variation, so it can only over-group. On account 338 eBay storefront 3 (2026-09-11), 25 of 28 multi-SKU listings shared one channel id and 3 carried one per SKU: grouping by the channel id would split those 3 and emit more, and under-emitting is the safe direction for a cap you must not overrun.

string
Examplegenerated
{
"skus": [
"example"
],
"nextPageCursor": "example",
"driftListings": [
{
"sku": "example",
"listingId": "example"
}
]
}

An unexpected error response.

Media typeapplication/json
object
code
integer format: int32
message
string
details
Array<object>
object
@type
string
key
additional properties
Examplegenerated
{
"code": 1,
"message": "example",
"details": [
{
"@type": "example"
}
]
}

Sourceapi-proto@afdb30cc via [email protected]

Built0c509dd3

This page describes the source document as deployed: the version listing pinned in its release r2026.09.24.02. A change merged upstream shows up here once it has deployed and the pins are next refreshed.

API changelog