Create or update Virtual Packs
Use this endpoint to submit a Virtual Pack feed for processing. The same feed schema is used for both create and maintenance actions. Existing packs submitted with updated price or content are treated as maintenance updates.
For example:
- If a seller already has a 2-pack for a GTIN at one price and submits the same 2-pack at a different price, the request is treated as price maintenance.
- If the seller updates the site description for an existing pack, the request is treated as content maintenance.
Each Virtual Pack must include the component GTIN, bundle quantity, and price.
This endpoint is available only to sellers who are enabled for Virtual Packs and onboarded to MLMQ. Contact Support for access.
Reference guide
This guide explains how to submit a Virtual Pack feed to create new Virtual Packs or update existing Virtual Pack offers. Use this guide to understand the required feed structure, request headers, payload fields, response details, and feed tracking steps.
For implementation details, refer to the Virtual Packs API reference guide.
Endpoint
POST https://marketplace.walmartapis.com/v3/feeds?feedType=MP_VIRTUAL_PACK_BUNDLERequest sample
curl -X POST "https://marketplace.walmartapis.com/v3/feeds?feedType=MP_VIRTUAL_PACK_BUNDLE" \ -H "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" \ -H "WM_MARKET: US" \ -H "WM_SVC.NAME: Walmart Marketplace" \ -H "WM_SEC.ACCESS_TOKEN: eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM....." \ -H "WM_GLOBAL_VERSION: 3.1" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "MPItemFeedHeader": { "businessUnit": "WALMART_US", "locale": "en", "feedType": "MP_VIRTUAL_PACK_BUNDLE", "version": "5.0.20260508-19_30_00-api" }, "MPItem": [ { "Visible": { "mainImageUrl": "https://example.com/images/virtual-pack-lemon-drops.jpg", "keyFeatures": [ "Classic citrus hard candy", "Individually wrapped pieces", "Great for sharing" ] }, "Orderable": { "bundle_component_gtin": "00011112223334", "bundleComponentItemQuantity": 2, "price": 3.99, "startDate": "2026-01-01T00:00:00Z", "endDate": "2027-12-31T00:00:00Z" } } ] }'Request body
{ "MPItemFeedHeader": { "businessUnit": "WALMART_US", "locale": "en", "feedType": "MP_VIRTUAL_PACK_BUNDLE", "version": "5.0.20260508-19_30_00-api" }, "MPItem": [ { "Visible": { "mainImageUrl": "https://example.com/images/virtual-pack-lemon-drops.jpg", "keyFeatures": [ "Classic citrus hard candy", "Individually wrapped pieces", "Great for sharing" ] }, "Orderable": { "bundle_component_gtin": "00011112223334", "bundleComponentItemQuantity": 2, "price": 3.99, "startDate": "2026-01-01T00:00:00Z", "endDate": "2027-12-31T00:00:00Z" } } ]
}Request fields
| Field | Required | Description |
|---|---|---|
MPItemFeedHeader.businessUnit | Yes | Business unit for the feed. Example: WALMART_US. |
MPItemFeedHeader.locale | Yes | Locale for the feed. Example: en. |
MPItemFeedHeader.feedType | Yes | Feed type for Virtual Packs. Allowed value: MP_VIRTUAL_PACK_BUNDLE. |
MPItemFeedHeader.version | Yes | Virtual Pack feed spec version. Example: 5.0.20260508-19_30_00-api. |
MPItem[].Visible.mainImageUrl | Recommended | Main image URL for the Virtual Pack offer. |
MPItem[].Visible.keyFeatures | Recommended | Key selling points for the Virtual Pack offer. |
MPItem[].Orderable.bundle_component_gtin | Yes | GTIN of the component item used to create the Virtual Pack. |
MPItem[].Orderable.bundleComponentItemQuantity | Yes | Number of component units in the Virtual Pack. Allowed values: 2 to 6. |
MPItem[].Orderable.price | Yes | Price of the Virtual Pack offer. |
MPItem[].Orderable.startDate | No | Date and time when the Virtual Pack offer becomes active. |
MPItem[].Orderable.endDate | No | Date and time when the Virtual Pack offer expires. |
Modify your code
Use the sample request as a starting point, then update the values below to submit your own Virtual Pack feed.
-
Replace
WM_SEC.ACCESS_TOKENwith your valid access token. -
Use a unique
WM_QOS.CORRELATION_IDfor each request. -
Keep the query parameter as
feedType=MP_VIRTUAL_PACK_BUNDLE. -
Update
MPItemFeedHeader.versionto the schema version you are building against. -
Replace the sample feed content with your own Virtual Pack data:
bundle_component_gtinbundleComponentItemQuantityprice- optional
startDateandendDate
-
Replace the sample feed file with your own multipart upload file.
Response sample
{ "feedId": "F129C19240844B97A3C6AD8F1A2C4997@AU8BAQA"
}Result
The feed is accepted and queued for processing. Use the returned feedId to track feed processing.
Errors and remediation
| Status code | Scenario | Description | Recommended action |
|---|---|---|---|
400 | The request is invalid. | The request is invalid. | Confirm the endpoint uses /v3/feeds?feedType=MP_VIRTUAL_PACK_BUNDLE. Validate the feed against the Virtual Pack spec. Confirm required fields are present, including bundle_component_gtin, bundleComponentItemQuantity, and price. |
403 | Seller is not eligible for Virtual Packs | Virtual Packs are not enabled for seller {partnerId}. | Confirm that the seller is eligible for Virtual Packs. |
500 | Internal server error occurred while processing the request | The system encountered an unexpected error while processing the request. | Retry with a new WM_QOS.CORRELATION_ID. If the issue continues, capture the full error payload and correlation ID for support. |
Next steps
After submitting the feed:
- Track feed processing using the returned
feedId. - Use Get items with Virtual Packs to confirm the pack appears with the expected SKU, price, and publish status.
- Use Retire a Virtual Pack when the pack is no longer needed.
Updated about 4 hours ago

