> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # AddProductMedia # Package: catalogV1 # Namespace: CatalogWriteApi # Method link: https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v1/catalog/add-product-media.md ## Permission Scopes: Manage Products: SCOPE.DC-STORES.MANAGE-PRODUCTS ## Introduction Adds media items to a specified product, either via URL or existing media ID. --- ## REST API ### Schema ``` Method: addProductMedia Description: Adds media items to a specified product, either via URL or existing media GUID. URL: https://www.wixapis.com/stores/v1/products/{id}/media Method: POST Method parameters: param name: media | type: array | description: Sources of media items already uploaded to the Wix site. - ONE-OF: - name: mediaId | type: string | description: Media GUID. For media items previously saved in Wix Media, the media GUID is returned in the Query Product response. - name: url | type: string | description: Media external URL (for new media items). - name: choice | type: OptionAndChoice | description: Assign this media item to a specific product choice. Note that you may set media items for choices under only one option (e.g., if Colors blue, green, and red have media items, Sizes S, M, and L can't have media items assigned to them). You may clear existing media from choices with the [Remove Product Media From Choices](/catalog/products/remove-product-media-from-choices). - name: option | type: string | description: Option to add the media to. - name: choice | type: string | description: Choice to add the media to. Return type: AddProductMediaResponse EMPTY-OBJECT {} ``` ### Examples ### AddProductMedia ```curl ~~~cURL curl -X POST \ 'https://www.wixapis.com/stores/v1/products/1044e7e4-37d1-0705-c5b3-623baae212fd/media' \ --data-binary '{ "media": [ { "mediaId": "9cc22d8b8d5244aba9ed73fb1783fc26.jpg" }, { "url": "https://your-site-url/image.jpeg", "choice": { "option": "Color", "choice": "Blue" } }, { "mediaId": "11062b_382eeb350464462c8f9150e4d3e40f2b" } ] }' \ -H 'Content-Type: application/json' \ -H 'Authorization: ' ~~~ ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.catalogV1.CatalogWriteApi.addProductMedia(_id, media) Description: Adds media items to a specified product, either via URL or existing media GUID. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: _id, media Method parameters: param name: _id | type: string | description: Product GUID. | required: true param name: media | type: array | description: Sources of media items already uploaded to the Wix site. | required: true - ONE-OF: - name: mediaId | type: string | description: Media GUID. For media items previously saved in Wix Media, the media GUID is returned in the Query Product response. - name: url | type: string | description: Media external URL (for new media items). - name: choice | type: OptionAndChoice | description: Assign this media item to a specific product choice. Note that you may set media items for choices under only one option (e.g., if Colors blue, green, and red have media items, Sizes S, M, and L can't have media items assigned to them). You may clear existing media from choices with the [Remove Product Media From Choices](/catalog/products/remove-product-media-from-choices). - name: option | type: string | description: Option to add the media to. - name: choice | type: string | description: Choice to add the media to. Return type: PROMISE EMPTY-OBJECT {} ``` ### Examples ### Add media items to a product ```javascript /************************************** * Backend code - products.web.js/ts * **************************************/ import { Permissions, webMethod } from '@wix/web-methods'; import { products } from '@wix/stores'; export const addProductMedia = webMethod(Permissions.Anyone, (_id, media) => { return products.addProductMedia(_id, media); }); /************* * Page code * *************/ import { addProductMedia } from 'backend/products.web'; // ... const _id = ...; // get product ID const url = "wix:image://v1/1a11a1_..._1a~mv2.jpg/1a11a1_..._1a~mv2.jpg"; const choice = "Color"; const option = "Blue"; let media; if (choice !== "" && option !== "") { media = [{ // add media item to a choice url, choice: { choice, option } }]; } else { media = [{ // add media item to the product url }]; } addProductMedia(_id, media); ``` ### addProductMedia (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { products } from '@wix/stores'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { products }, // Include the auth strategy and host as relevant }); async function addProductMedia(_id,media) { const response = await myWixClient.products.addProductMedia(_id,media); }; ``` ---