Prepare Ready-to-List Drafts
POST/api/v2/listing-drafts/prepare-ready
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.
products:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Omit product_ids to prepare the channel's entire ready-to-list set (resolved server-side); pass it to prepare only a chosen subset. It is safe to re-run — a product that already has a draft is skipped.
Authentication: Requires Bearer token.
Fields:
sales_channel_id(required, integer) — the channel to prepare drafts onproduct_ids(nullable, array of integers, max 5000) — a subset to prepare; omit for the whole ready-to-list setchannel_label(nullable, string, max 120) — a name for the job
Requires permission: listings.create
Request
Responses
- 202
- 401
- 403
- 422
- 429
Accepted
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.