Catalog V1 only. This recipe uses the Catalog V1 API (/stores/v1/products). It will NOT work on sites using Catalog V3. If the site uses Catalog V3, use the Create Product with Options (Catalog V3) recipe instead and include media inline in the product creation request. Check the site's catalog version in dynamic context before proceeding.
This recipe creates a Wix Store product from an image. It has exactly 4 steps that MUST ALL be completed in order. Do NOT report success until ALL 4 steps have been executed successfully.
Prerequisites:
https:// or http://).API Endpoint: POST https://www.wixapis.com/site-media/v1/files/import
Request body fields:
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | The publicly accessible HTTP/HTTPS URL of the image. MUST start with https:// or http://. CANNOT be a file ID, file reference, local path, or chat-uploaded file token. |
mimeType | string | Recommended | The MIME type of the image. Use image/jpeg for .jpg/.jpeg files, image/png for .png files, image/webp for .webp files. |
displayName | string | No | A display name for the file in Media Manager. Include the file extension (e.g., product-image.jpg). |
Exact request example:
Expected response:
After this step, save these values — you need them later:
file.url — the wixstatic.com URL (use in Step 4)file.id — the media file IDIf the response contains operationStatus: "FAILED": The source URL is not accessible. Ask the user for a different image URL.
Look at the image from the URL provided by the user. Based on what you see in the image, generate the following three values:
"Premium Spinning Fishing Reel".<p> tags. Example: "<p>A sleek black-and-gold spinning fishing reel designed for smooth retrieves. Ideal for freshwater or light saltwater fishing.</p>". Do NOT use plain text without <p> tags — the API will reject it.79.99.CRITICAL: These values MUST describe the actual product visible in the image. Do NOT use generic placeholder text.
API Endpoint: POST https://www.wixapis.com/stores/v1/products
Request body fields:
| Field | Type | Required | Value |
|---|---|---|---|
product.name | string | Yes | The product name from Step 2 (max 80 chars) |
product.description | string | Yes | The HTML description from Step 2 (wrapped in <p> tags) |
product.visible | boolean | Yes | true |
product.productType | string | Yes | "physical" (only supported value) |
product.priceData.price | number | Yes | The price from Step 2 |
Exact request example (using values from Step 2):
Expected response (partial):
After this step, save this value — you need it in Step 4:
product.id — the product ID (a UUID string like "a1b2c3d4-e5f6-7890-abcd-ef1234567890")API Endpoint: POST https://www.wixapis.com/stores/v1/products/{id}/media
Replace {id} in the URL with the product.id from Step 3.
Request body fields:
| Field | Type | Required | Description |
|---|---|---|---|
media | array | Yes | Array of media objects to attach |
media[].url | string | Yes | The file.url (wixstatic.com URL) from Step 1. Do NOT use the original image URL — use the wixstatic.com URL returned by the Media Manager. |
Exact request example:
URL: POST https://www.wixapis.com/stores/v1/products/a1b2c3d4-e5f6-7890-abcd-ef1234567890/media
Expected response: Empty object {} — this means success.
This step is MANDATORY. The product is not complete without its image. Do NOT report success to the user before this step returns successfully.
Before reporting success to the user, verify ALL of the following:
Only after ALL 4 steps succeed, report to the user: the product name, price, and that it was created with the image attached.
The user provided a file ID, file token, or local file reference instead of a public URL. Ask for a URL that starts with https://.
The source server blocks external requests. Ask the user for a different image URL. Reliable sources: Unsplash (images.unsplash.com), Pexels (images.pexels.com), Imgur, public S3/GCS buckets.
You used the original external URL instead of the wixstatic.com URL in Step 4. Always use the file.url from Step 1's response.
The site uses Catalog V3, not V1. Use POST https://www.wixapis.com/stores/v3/products instead and format the description as rich text nodes (not HTML).