Skip to main content

Product Listings

📄️Export Draft Template Fields

Download the draft category's field requirements as a styled Excel (.xlsx) workbook. The workbook has one row per channel field with its priority (required / recommended / optional), type, allowed values, plain-language guidance, what SKU.io currently maps into it, and the resolved sample value — so the still-empty fields can be collected from a supplier. Required fields lead the sheet; fixed-option fields get a dropdown of the allowed values on the sample cell.

📄️Get Draft Variation Matrix

The variation matrix for a draft: the variation theme (e.g. 'Color-Size'), its axes, and the per-child grid. Each child carries its axis values plus per-variant identity — `upc` (the variant's barcode, null when not set), `price` (null when the variant has no own price), `image_url` (the variant's primary image, null when it has none) — an `is_primary` flag marking the variant published as the group's primary, and a readiness verdict: `status` is `ready` or `incomplete`, with `issues` listing human-readable reasons (e.g. 'Missing Color', 'Needs UPC') that would block publishing the variation family. Empty axes/children for a single-variation product.

📄️Prepare Ready-to-List Drafts

Seed a draft for every 'ready to list' product on a sales channel — products that are data-complete and routed to a template by their product type, but do not yet have a draft or a live listing. Each product's own template (and its category and listing profile) is resolved and applied automatically, so no template needs to be chosen. Runs as one background job and returns its id; the seeded drafts move to `ready` (or `draft` if a field still needs attention) as the job progresses — read the drafts to follow it, then publish them with Bulk Publish Drafts.

📄️Apply Content Change Group

Applies every open change in one bucket in the background, without listing ids. The bucket is described by the same filters used to list it, so a bucket of several thousand listings needs no enumeration by the caller. Send the filters in the QUERY STRING — filters in the request body are ignored, which would silently widen the apply. The apply must be scoped by at least one of filter[field], filter[field_group], or filter[integration_instance_ids]; an unscoped call returns 422. High-impact fields such as product name are rejected with 422 and must be applied one listing at a time. Very large buckets are applied in passes: listings_queued below listings_total means the call should be repeated to continue. Follow progress with the returned tracked_job_log_id.

📄️Generate Listing Content

Generate listing content for one product on one sales channel using the tenant's configured AI provider. The prompt carries the product's facts (name, identifiers, brand, weight, dimensions, category, and its attributes) plus any `source_material` you pass, and applies the TARGET channel's own description rules — TikTok Shop: HTML, up to 10,000 characters, 3–5 selling points; Amazon: plain text, up to 2,000; eBay and Shopify: HTML; Walmart, Temu and Faire: plain text — so you do not restate them.