Skip to main content
POST
Upsert retailer product listings in bulk

Authorizations

X-API-Key
string
header
required

Path Parameters

retailer_id
string<shortuuid>
required

Unique identifier of the retailer these listings belong to.

Required string length: 22
Pattern: ^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$

Body

application/json

A batch of listing rows.

rows
ListingRowIn · object[]
required

Listing rows, at most 500 per call. Results come back in request order, each carrying its index. For a whole retailer catalog use the retailer-catalog import job instead — it merges products and listings together under one cross-retailer precedence policy.

Required array length: 1 - 500 elements
source
string
default:""

Dataset name recorded on each listing's source column, for provenance.

Maximum string length: 100
dry_run
boolean
default:false

Execute everything and roll back. Defaults to false, unlike the store upsert: a listing write is a targeted change the caller named by GTIN, not a reconciliation whose matching decisions want previewing first.

Response

OK

Batch census plus the per-row results.

created + updated + unknown_gtin + invalid + errors equals the number of submitted rows for any 200 response. Per-row failures are reported here rather than aborting the batch; only request-level failures are 4xx.

committed
boolean
required

False when this was a dry run and the transaction was rolled back.

submitted_rows
integer
required

Number of rows in the request.

Required range: x >= 0
created
integer
required

Rows that produced a new listing.

Required range: x >= 0
updated
integer
required

Rows that refreshed an existing listing.

Required range: x >= 0
unknown_gtin
integer
required

Rows whose GTIN has no product. Nothing was written for them.

Required range: x >= 0
invalid
integer
required

Rows rejected by barcode or storefront validation.

Required range: x >= 0
errors
integer
required

Rows that raised.

Required range: x >= 0
rows
ListingRowResultOut · object[]

One result per submitted row, in request order.