read_products + write_products. Base URL: https://api.platformdtc.com/api/v1/agent/v1.
1. Read products with their variants
meta.next_page_info (or the Link: …; rel="next" header) until has_next_page is
false. A 5,000-product catalog is 20 requests. Narrow the read with vendor, product_type,
tag, collection_id, query or ids; see Products.
2. Update up to 250 variants in one call
- Each variant is written in its own transaction with the same rules as
PATCH /products/variants/{variant_id}. A failed variant never rolls back the others, so the response is200with per-variant results. Always readresults[]. - Fields:
price,compare_at_price(nullends a sale),sku,title,inventory_quantity,inventory_tracked,inventory_policy. Send only what changes. - Money is a decimal string in major units. At most two decimals.
- 1 to 250 variants, each id once. Otherwise the whole request is rejected with
400and nothing is written. Idempotency-Keyis required. Retrying with the same key and body (after a timeout or a429) returns the first response and writes nothing twice. The same key with a different body returns409.- One
products/updatewebhook is sent per product touched, and the storefront refreshes once. - The whole call counts as one request against your rate limit.
PUT /products/{id}.
3. Pace with the rate-limit headers
Every response carriesX-PlatformDTC-Api-Call-Limit: 12/120. Slow down as used approaches
limit, and on 429 wait Retry-After seconds. See Rate limits.