On Request Reports API overview

Overview

Use the On Request Reports API to create, track, and download on-demand reports. You choose a report type, version, and optional filters. The service generates the report asynchronously, then returns a time-limited download URL when ready.

What you can do

  • Create a report request with optional row-level filters and column selection.
  • List your recent report requests from the last 30 days.
  • Check the status of a single report request.
  • Get a signed URL to download the finished report.

Audience: Suppliers and DSVs who need on-demand reports for orders, inventory, items, product content, and pricing.

Base URLs:

  • https://api-gateway.walmart.com
  • https://sandbox.walmartapis.com

Reports take 15 to 45 minutes to generate and are available for download after they are generated.

Requested reports are retained for 30 days. Request a report for up to 30 days with the requestId for the report. There is no need to request a new one each time.

Request one report for each report type per hour. Although users can request multiple report types at the same time, they can make a request for each report type only once per hour.

The following diagram details the report request workflow.


Authentication & headers

Use the Authentication Management API to obtain WM_SEC.ACCESS_TOKEN. Send the token in the header for each call. Refresh when tokens expire.

Send a unique WM_QOS.CORRELATION_ID (GUID) with each request to help support teams trace calls.

Common headers

HeaderRequiredNotes
WM_SEC.ACCESS_TOKENYesOAuth 2.0 bearer token
WM_QOS.CORRELATION_IDYesGUID you generate per call
WM_CONSUMER.CHANNEL.TYPENoProvided during onboarding
AcceptNoUse application/json
Content-TypeAs neededapplication/json for bodies

Report types & versions

Specify a reportType and reportVersion when creating or listing requests.

Report typeUse caseVersion(s)
DSV_ORDERSDSV orders in a time windowv1
DSV_INVENTORYDSV inventory snapshotv1
INVOICESInvoices and payment detailsv1
ITEM_CONFIGURATION_DATAItem configuration datav1
PRODUCT_CONTENT_DATAItems you sell to Walmartv1
VENDOR_MANAGED_PRICINGItem-store cost and price datav1

How it works

  1. Create a report request with reportType and reportVersion.
  2. Poll the request using either:
    • List all report requests to filter by type, status, or date, or
    • Get a single request by requestId.
  3. When status is READY, download using the download URL endpoint.

Pagination

List operations return a nextCursor when more data is available. Pass the returned cursor in the next request to continue. If both page and limit and cursor are present, use the cursor.

Status model

FieldValues
requestStatusRECEIVED, INPROGRESS, READY, ERROR

Endpoints

Create report request

POST /v3/reports/reportRequest

Create a new report request with optional rowFilters and includeColumns.

Query parameters

  • reportType (string, required): One of the types in the table above.
  • reportVersion (string, required): Supported version for the report type.

Headers

  • WM_SEC.ACCESS_TOKEN (required)
  • WM_QOS.CORRELATION_ID (required)
  • Accept: application/json
  • Content-Type: application/json

Request body

{ "rowFilters": [ { "type": "enumFilter", "columnName": "SUPPLY ITEM STATUS CODE", "values": ["Active","Deleted"] }, { "type": "rangeFilter", "columnName": "Unit Cost", "from": "5.00", "to": "10.00" } ], "includeColumns": ["Invoice Date","Invoice Status","Total Invoice Amount"]
}

Response 200 (example)

{ "requestId": "4406b7c3-674e-41e4-a18a-5fd6f123479f", "requestStatus": "RECEIVED", "requestSubmissionDate": "2025-11-28T13:34:54Z", "reportType": "DSV_INVENTORY", "reportVersion": "v1"
}

cURL

curl -X POST "https://api-gateway.walmart.com/v3/reports/reportRequest?reportType=DSV_INVENTORY&reportVersion=v1" \ -H "WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>" \ -H "WM_QOS.CORRELATION_ID: <GUID>" \ -H "Content-Type: application/json" \ -d '{ "rowFilters":[{"type":"enumFilter","columnName":"SUPPLY ITEM STATUS CODE","values":["Active"]}] }'

Retrieve all report requests

GET /v3/reports/reportRequests

Returns report requests from the last 30 days. Use query params to filter.

Query parameters

  • reportType (string, optional)
  • reportVersion (string, required)
  • requestStatus (string, optional): RECEIVED, INPROGRESS, READY, ERROR
  • requestSubmissionStartDate (string, optional, ISO 8601)
  • requestSubmissionEndDate (string, optional, ISO 8601)

Headers

  • WM_SEC.ACCESS_TOKEN (required)
  • WM_QOS.CORRELATION_ID (required)
  • Accept: application/json

Response 200 (example)

{ "page": 1, "totalCount": 19, "limit": 10, "nextCursor": "reportType=DSV_INVENTORY&page=2&limit=10", "requests": [ { "requestId": "4406b7c3-674e-41e4-a18a-5fd6f123479f", "requestStatus": "RECEIVED", "requestSubmissionDate": "2025-11-28T13:34:54Z", "reportType": "VENDOR_MANAGED_PRICING", "reportVersion": "v1", "reportSummary": "Report summary", "reportGenerationDate": "2025-11-28T13:41:35Z" } ]
}

cURL

curl -G "https://api-gateway.walmart.com/v3/reports/reportRequests" \ -H "WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>" \ -H "WM_QOS.CORRELATION_ID: <GUID>" \ --data-urlencode "reportVersion=v1" \ --data-urlencode "reportType=DSV_INVENTORY"

Retrieve details on a single report

GET /v3/reports/reportRequests/{requestId}

Check the status and metadata for a specific request from the last 30 days.

Path parameter

  • requestId (uuid, required)

Headers

  • WM_SEC.ACCESS_TOKEN (required)
  • WM_QOS.CORRELATION_ID (required)
  • Accept: application/json

Response 200 (example)

{ "requestId": "4406b7c3-674e-41e4-a18a-5fd6f123479f", "requestStatus": "READY", "requestSubmissionDate": "2025-11-28T13:34:54Z", "reportType": "DSV_INVENTORY", "reportVersion": "v1", "reportSummary": "Report summary", "reportGenerationDate": "2025-11-28T13:41:35Z"
}

cURL

curl "https://api-gateway.walmart.com/v3/reports/reportRequests/4406b7c3-674e-41e4-a18a-5fd6f123479f" \ -H "WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>" \ -H "WM_QOS.CORRELATION_ID: <GUID>"

Download report URL

GET /v3/reports/downloadReport

Return the signed URL to download the report when requestStatus=READY.

Query parameters

  • requestId (uuid, required)

Headers

  • WM_SEC.ACCESS_TOKEN (required)
  • WM_QOS.CORRELATION_ID (required)
  • Accept: application/json

Response 200 (example)

{ "requestId": "2ae33c9d-fdf7-40e3-1230-9a73fec09adb", "requestStatus": "READY", "requestSubmissionDate": "2025-11-24T04:09:48Z", "reportType": "DSV_INVENTORY", "reportVersion": "v1", "reportGenerationDate": "2025-11-24T04:11:31Z", "downloadURL": "https://marketplace.walmartapis.com/v3/reports/getReport/inventory-dsv-report/InventoryDSVReport_721555_2025-11-241230948.277000.zip?...", "downloadURLExpirationTime": "2025-11-28T11:13:49Z"
}

cURL

curl -G "https://api-gateway.walmart.com/v3/reports/downloadReport" \ -H "WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>" \ -H "WM_QOS.CORRELATION_ID: <GUID>" \ --data-urlencode "requestId=<REQUEST_ID>"

The downloadURL is time-limited. Download the file before downloadURLExpirationTime.

You can refine reports with row filters and optionally limit output columns using includeColumns.

  • Row filters
    • enumFilter: match exact values with values
    • rangeFilter: specify numeric or date ranges with from and to
  • includeColumns: supply a list of column names to return

Example body with both

{ "rowFilters": [ {"type":"enumFilter","columnName":"SUPPLY ITEM STATUS CODE","values":["Active"]}, {"type":"rangeFilter","columnName":"Unit Cost","from":"5.00","to":"10.00"} ], "includeColumns": ["Season Year","Season Code","Shipping Dimensions"]
}

Error handling

  • Errors are returned with standard HTTP codes. For report requests, track requestStatus.
  • If a request reaches ERROR, adjust filters or inputs and submit a new request.

Support tips

  • Always send a fresh GUID in WM_QOS.CORRELATION_ID.
  • Keep requestId for tracking and support.
  • Prefer nextCursor when present.

Troubleshooting and Error Codes

Here are some hints for how to solve these possible errors in the event of failures.

Notice there are several reasons why users might get an INVALID_REQUEST_PARAM error. These reasons depend on which API the users call and which parameters are required for that API.

Error CodeDescription
SYSTEM_ERRORThere is an error in the system. Please wait and try again later.
INVALID_REQUEST_PARAMA required query parameter is missing. Make sure the user specified all required parameters. (e.g. reportType, requestId)
INVALID_REQUEST_PARAMIf the submission start date is beyond 30 days of the report expiration time, the user will get an error.
INVALID_REQUEST_PARAMThe request is possibly missing the start and end dates in the Retrieve all report requests request (GET /v3/reports/reportRequests). Try again with both dates provided.
INVALID_REQUEST_PARAMThe date specified might not be in correct date format.
MISSING_REQUEST_HEADERThe header is missing content. Make sure all required header parameters (e.g. channelType) are specified in the API call.
MISSING_REQUEST_PARAMMake sure to specify the required request parameter; for example, reportType.
CONTENT_NOT_FOUNDThe requestId could not be found. Try again with correct request ID.