Get WFS unpublished recommendations

Market availability: US only

Call this endpoint to retrieve a paginated list of unpublished items plus an insights summary. Results can be filtered and sorted, and include per-item publication reasons, inventory on hand, estimated storage fees, and inventory value. Use this endpoint to prioritize publication fixes, identify high-impact opportunities such as customer favorites, and to surface issue type and reason(s) which cause unpublished status for items.

This page describes an example using only the required parameters and inputs for retrieving a list of unpublished items and insights summary. For a full list of customization options and additional capabilities, refer to the Walmart Recommendations API Reference.

Endpoint

GET https://marketplace.walmartapis.com/v3/wfs/recommendation/unpublished

Top 15 newest unpublished items

Sample request

Use this sample request to retrieve the 15 most recent unpublished items, including insights, sorted by created_date in descending order.

curl -X GET "https://marketplace.walmartapis.com/v3/wfs/recommendation/unpublished?showInsights=true&limit=15&offset=0&sort_order=DESC&sort_by=created_date" \ -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" 
import requests url = "https://marketplace.walmartapis.com/v3/wfs/recommendation/unpublished"
params = { "showInsights": "true", "limit": "15", "offset": "0", "sort_order": "DESC", "sort_by": "created_date",
}
headers = { "WM_QOS.CORRELATION_ID": "b3261d2d-028a-4ef7-8602-633c23200af6", "WM_MARKET": "US", "WM_SVC.NAME": "Walmart Marketplace", "WM_SEC.ACCESS_TOKEN": "<ACCESS_TOKEN>", "WM_GLOBAL_VERSION": "3.1", "Accept": "application/json",
} response = requests.get(url, headers=headers, params=params, timeout=30)
response.raise_for_status()
print(response.json())

Sample response

{ "status": "SUCCESS", "payload": { "unpublishedItems": [ { "itemId": "172948501", "gtin": "00012345678905", "vendorSku": "ACME-WIDG-2PK", "brand": "Acme", "productName": "Acme Widget 2-Pack", "pubStatusChangeReasons": [ "Missing main image", "Required attribute: Color not provided" ], "offerPubStatus": "UNPUBLISHED", "inventoryValue": 1250.5, "chargeAmount": 337.5, "unitsStored": 250, "reasonType": "Listing Issue", "created_date": "2025-12-16T18:39:42Z" }, { "itemId": "172948499", "gtin": "00098765432102", "vendorSku": "CONT-TEE-RED-XL", "brand": "Contoso", "productName": "Contoso Performance Tee – Red, XL", "pubStatusChangeReasons": [ "Title exceeds length limit" ], "offerPubStatus": "UNPUBLISHED", "inventoryValue": 360.0, "chargeAmount": 240.0, "unitsStored": 40, "reasonType": "Business Policy Issue", "created_date": "2025-12-16T18:21:10Z" }, { "itemId": "172948490", "gtin": "00345678901234", "vendorSku": "NOVA-SHOE-BLK-9", "brand": "NovaRun", "productName": "NovaRun Road Shoe, Black, 9", "pubStatusChangeReasons": [ "Restricted attribute value", "Size chart missing" ], "offerPubStatus": "UNPUBLISHED", "inventoryValue": 2199.0, "chargeAmount": 540.0, "unitsStored": 120, "reasonType": "Trust N Safety Issue", "created_date": "2025-12-16T17:58:31Z" } ], "insights": { "totalUnpublishedItems": 15, "totalUnpublishedItemsStored": 1820, "estimatedStorageFee": 7450.0, "totalInventoryValue": 125000.5 }, "totalRecords": 15 }
}

Modify your code

Replace all placeholder values with your actual shipment data before making the API request.

  • WM_QOS.CORRELATION_ID - Use a unique correlation UUID to track the request.
  • WM_SEC.ACCESS_TOKEN - Replace with your valid access token obtained through authentication.

Result

If successful, the API returns 200 OK with a JSON body containing status and payload.
The payload includes key fields such as itemId, gtin, vendorSku,, and offerPubStatus.

If the API returns 400 Bad Request, one or more inputs are invalid. For example, non-boolean values are present for isInDemand or the limit is out of range.

If you receive a 500 Internal Server Error, retry after sometime.


Did this page help you?