Standard call shape (every curl below). The placeholder is shorthand for only. Body-bearing requests also need .
<AUTH>
Authorization: Bearer <TOKEN>
Content-Type: application/json
Learn how to create multiple Wix store products with customizable options like colors, sizes, or other variants in a single bulk operation, allowing efficient creation of product catalogs.
API ENDPOINT:https://www.wixapis.com/stores/v3/bulk/products-with-inventory/create
MEDIA FORMAT - MUST INCLUDE BOTH SECTIONS:
json
"media": { "main": { "url": "https://images.unsplash.com/photo-example?w=400&h=400&fit=crop&crop=center", "altText": "Product Name - Main Product Image" }, "itemsInfo": { "items": [ { "url": "https://images.unsplash.com/photo-example?w=400&h=400&fit=crop&crop=center", "altText": "Product Name - Product View" } ] }}
VARIANTS: The recipe shows ALL possible variant combinations (Cartesian product) with 3 visible variants per product. Each product has 6 total variants: 3 visible + 3 hidden for future use.
❌ COMMON FAILURES:
Missing itemsInfo section in media (media won’t work)
bulk create products with options and create variants for them - Wix REST API: Bulk Create Products With Inventory (opens in a new tab)CRITICAL: USE THIS WORKING EXAMPLE - if more products are required copy the same format exactly to create more
When bulk creating products with inventory YOU MUST follow the same format as single product creation but wrap all products in a “products” array. Each product MUST leave the physicalProperties and all other non required fields empty. for example: “physicalProperties”: {}. In most cases the products will be physical products, and therefore MUST have the empty physicalProperties object (“physicalProperties”: {}) and a corresponding “productType”: “PHYSICAL”.
In case part of the request fails, retry bulk creating the failed products, by copying the exact format from the previous working example.
When creating a Color option YOU MUST use the "optionRenderType": "SWATCH_CHOICES" and the appropriate choice type: "choiceType": "ONE_COLOR", while also providing the relevant colorCode. This must be done similar to the example above.
CRITICAL: Bulk Request StructureThe bulk create API requires a different endpoint and request structure:
Each product in the array follows the exact same format as single product creation
CRITICAL: Description FormatIf you include a description, it MUST use Wix’s rich text nodes structure, NOT a plain string. Plain strings will cause “Expected an object” API errors.
CRITICAL: Media FormatTo add product images, use the media object with main image and optional additional items.YOU MUST add an image to each product, with a url from the web which should be relevant to the product.
json
"media": { "main": { "url": "https://images.unsplash.com/photo-example?w=400&h=400&fit=crop&crop=center", "altText": "Product Name - Main Product Image" }, "itemsInfo": { "items": [ { "url": "https://images.unsplash.com/photo-example?w=400&h=400&fit=crop&crop=center", "altText": "Product Name - Product View" } ] }}
CRITICAL: Options StructureEach option MUST include:
optionRenderType: “TEXT_CHOICES” for text-based choices
choicesSettings: Object containing the choices array
choicesSettings.choices: Array with at least one choice
Each choice MUST have choiceType: “CHOICE_TEXT” and name
CRITICAL: Variants Structure
Create one variant for EVERY combination of option choices (Cartesian product of all options)
In these examples: Each product creates ALL possible combinations: Size options x Color options = 6 total variants each
Each variant must reference ALL options defined on the product
Use optionChoiceNames structure with optionName, choiceName, and renderType
Price must use price.actualPrice.amount with string values
Include inventory information with inventoryItem.quantity
Use visible: true for variants you want customers to see, visible: false for variants you want to keep hidden but available for future use
Pro Basketball Sneaker: 6 variants total (3 visible: Size 8+Red, Size 9+Blue, Size 10+Red)