DSV Inventory API overview

Overview

Use the Drop Ship Vendor (DSV) Inventory Management API to retrieve and update inventory for items on Walmart.com. Keeping accurate inventory improves customer experience and sales performance.

Use this API to:

  • Get the inventory for a single item at one ship node
  • Get the inventory for a single item across ship nodes
  • Update inventory for a single item at one ship node
  • Submit bulk inventory updates with a feed and track processing
  • Request and download inventory visibility reports

Base URLs

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

Audience

  • DSV suppliers and their solution providers

How it works

  1. Sync inventory in real time for one item using GET /v3/inventory or GET /v3/inventories/{id}.
  2. Update inventory for one item and ship node with PUT /v3/inventory/update using gtin, availabilityCode, and quantity.
  3. Bulk update inventory across many items and nodes using a DSV_INVENTORY feed with POST /v3/feeds.
  4. Track feed status with GET /v3/feeds/{feedId}. Use nextCursor for pagination.
  5. Request visibility reports with POST /v3/reports, poll status with GET /v3/reports/reportRequests/{requestId}, and download using GET /v3/reports/downloadReport.

Before you begin

  • Obtain API credentials and generate an access token.
  • Include Walmart headers on every request.
  • Use a unique correlation ID per call.

Required headers

HeaderTypeRequiredDescription
WM_SEC.ACCESS_TOKENstringYesAccess token from the Token API.
WM_QOS.CORRELATION_IDstringYesUnique ID per request. Use a UUID.
WM_SVC.NAMEstringYesYour Walmart service name.
AcceptstringYesapplication/json (some endpoints also support application/xml).
WM_CONSUMER.CHANNEL.TYPEstringNoChannel identifier from onboarding.

When sending a body, include Content-Type: application/json.

Authentication

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

Environments

  • Sandbox is for development and validation. It uses the same paths and headers.
  • Production returns live inventory and feed status data.

Rate limits and retries

Rate limits are not specified in this spec. Handle throttling responses such as 429 Too Many Requests and retry with exponential backoff. Avoid aggressive polling of feed and report status.

Errors

Handle HTTP status codes and error bodies. Common statuses:

StatusMeaning
200Success
400Bad request. Fix parameters or body.
401Unauthorized. Check or refresh token.
403Forbidden. Insufficient permissions.
404Not found.
409Conflict.
429Too many requests. Back off and retry.
500Server error. Retry.
503Service unavailable. Retry.

Endpoints

Retrieve inventory for a single item at one ship node

GET /v3/inventory

Returns the inventory for a single item at a single ship node.

Query parameters

NameTypeRequiredDescription
skustringConditionalYour SKU. Required if gtin is not provided.
gtinstringConditionalGTIN‑14. Left‑pad with zeros to 14 digits. Required if sku is not provided.
shipNodestringYesFacility identifier for the node to query.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/inventory?gtin=00012947218283&shipNode=123456701' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response (truncated)

{ "sku": "RG-IRAE-79VD", "gtin": "00012947218283", "quantity": {"unit": "EACH", "amount": 23}
}

Retrieve inventory for a single item across ship nodes

GET /v3/inventories/{id}

Returns inventory for an item across multiple ship nodes, or for a specified node.

Path and query

NameLocationTypeRequiredDescription
idpathstringYesItem identifier value. Use sku or gtin per productIdType.
productIdTypequerystringYessku or gtin.
shipNodequerystringNoLimit to a specific facility.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/inventories/00012947218283?productIdType=gtin' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response (truncated)

{ "sku": "RG-IRAE-79VD", "gtin": "00012947218283", "nodes": [ { "shipNode": "123456701", "inputQty": {"unit": "EACH", "amount": 214}, "availToSellQty": {"unit": "EACH", "amount": 21}, "reservedQty": {"unit": "EACH", "amount": 24} } ]
}

Update inventory for a single item at one ship node

PUT /v3/inventory/update

Updates inventory for an item identified by GTIN at a single ship node.

Query parameter

NameTypeRequiredDescription
shipNodestringYesFacility identifier where the update applies.

Request body

{ "gtin": "00012947218283", "availabilityCode": "AC", "quantity": {"unit": "EACH", "amount": 23}
}

Availability codes

CodeUse
AAInfinite inventory. Quantity not required.
ACStandard inventory updates.

cURL example

curl -X PUT 'https://api-gateway.walmart.com/v3/inventory/update?shipNode=123456701' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{ "gtin": "00012947218283", "availabilityCode": "AC", "quantity": {"unit": "EACH", "amount": 23} }'

Success response (truncated)

{ "sku": "RG-IRAE-79VD", "gtin": "00012947218283", "quantity": {"unit": "EACH", "amount": 23}
}

Update inventory for items in bulk (feed)

POST /v3/feeds?feedType=DSV_INVENTORY

Submits a DSV inventory feed to update inventory across multiple items and ship nodes.

Query parameter

NameTypeRequiredDescription
feedTypestringYesMust be DSV_INVENTORY. JSON only.

Request body (schema excerpt)

{ "InventoryFeedHeader": { "version": "5.0.20240905-15_39_48-api", "feedType": "DSV_INVENTORY", "feedDate": "2024-12-30T13:03:33.000Z", "locale": "en", "businessUnit": "WALMART_US" }, "Inventory": [ { "productId": "00097531246801", "shipNode": "123456701", "availabilityCode": "AC", "quantity": 100 }, { "productId": "00097531246801", "shipNode": "123456702", "availabilityCode": "AA" } ]
}

Availability codes

  • AA infinite inventory
  • AC standard inventory

Pre‑order support

Provide inTransitInventory when inventory is not on hand but is in transit for pre‑order items.

cURL example

curl -X POST 'https://api-gateway.walmart.com/v3/feeds?feedType=DSV_INVENTORY' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{ "InventoryFeedHeader": {"feedType": "DSV_INVENTORY", "version": "5.0.20240905-15_39_48-api", "businessUnit": "WALMART_US", "locale": "en", "feedDate": "2024-12-30T13:03:33.000Z"}, "Inventory": [ {"productId": "01234567891011", "shipNode": "123456701", "availabilityCode": "AA"}, {"productId": "01234567891011", "shipNode": "123456702", "availabilityCode": "AC", "quantity": 11} ] }'

Success response

{ "feedId": "991B8779687C4D5DBC06DF18DB167192@AQkBAQA" }

Single feed status

GET /v3/feeds/{feedId}

Returns processing details for one feed. Use nextCursor to paginate item details.

Path and query

NameLocationTypeRequiredDescription
feedIdpathstringYesIdentifier from the feed submission response.
includeDetailsquerystringNoInclude item details when true.
nextCursorquerystringNoCursor for the next page of item details. Preferred.
offsetquerystringNoDeprecated pagination. Use only for feeds with fewer than 1,000 records.
limitquerystringNoNumber of item detail records to return. Max 100.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/feeds/76E2D1549C3140C886C1D7F33B7345B6@AWYBCgA?includeDetails=true&limit=50' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response (truncated)

{ "feedId": "85CF30246B87483BA2290B8300750C47@AVABBgA", "activityId": "13CBADE2", "feedStatus": "PROCESSED", "itemsReceived": 20, "itemsSucceeded": 10, "itemsFailed": 5, "nextCursor": "AoE9MDAw...", "itemDetails": {"itemIngestionStatus": []}
}

Create inventory visibility report request

POST /v3/reports

Creates a request for a DSV inventory report.

Query parameters

NameTypeRequiredDescription
reportTypestringYesMust be DSV_INVENTORY.
reportVersionstringYesMust be v1.

Request body (filters)

{ "rowFilters": [ {"type": "enumFilter", "columnName": "Published Status", "values": ["UNPUBLISHED"]} ]
}

cURL example

curl -X POST 'https://api-gateway.walmart.com/v3/reports?reportType=DSV_INVENTORY&reportVersion=v1' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"rowFilters":[{"type":"enumFilter","columnName":"Published Status","values":["UNPUBLISHED"]}]}'

Success response

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

Retrieve report request status

GET /v3/reports/reportRequests/{requestId}

Returns the status and details for a single report request created in the last 30 days.

Path and query

NameLocationTypeRequiredDescription
requestIdpathstring (uuid)YesIdentifier from the create response.
reportTypequerystringYesDSV_INVENTORY (and other supported values if applicable).
reportVersionquerystringYesv1.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/reports/reportRequests/4406b7c3-674e-41e4-a18a-5fd6f123479f?reportType=DSV_INVENTORY&reportVersion=v1' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response (truncated)

{ "requestId": "4406b7c3-674e-41e4-a18a-5fd6f123479f", "requestStatus": "READY", "reportType": "DSV_INVENTORY", "reportVersion": "v1"
}

Download report URL

GET /v3/reports/downloadReport

Returns the download URL for a ready report.

Query parameters

NameTypeRequiredDescription
requestIdstring (uuid)YesIdentifier from the create response.

cURL example

curl -X GET 'https://api-gateway.walmart.com/v3/reports/downloadReport?requestId=4406b7c3-674e-41e4-a18a-5fd6f123479f' -H 'WM_SEC.ACCESS_TOKEN: <ACCESS_TOKEN>' -H 'WM_QOS.CORRELATION_ID: 16338294-795c-44eb-97cd-37967f8532e5' -H 'WM_SVC.NAME: <YOUR_SERVICE_NAME>' -H 'Accept: application/json'

Success response (example)

{ "requestId": "2ae33c9d-fdf7-40e3-1230-9a73fec09adb", "requestStatus": "READY", "reportType": "DSV_INVENTORY", "reportVersion": "v1", "downloadURL": "https://marketplace.walmartapis.com/v3/reports/getReport/inventory-dsv-report/InventoryDSVReport_721555_2025-08-241230948.277000.zip?sv=2025-08-24&se=1233-08-28T11%3A13%3A49Z&sr=b&sp=r&sig=...", "downloadURLExpirationTime": "2025-08-28T11:13:49Z"
}

Data model highlights

  • GTIN values must be 14 digits. Left‑pad with zeros if shorter.
  • Availability codes: AA infinite inventory, AC standard inventory.
  • Feed pagination prefers nextCursor. Offset is deprecated for large feeds.
  • Pre‑order items can use inTransitInventory with an expected availability date.

Best practices

  • Send one ship node per record. Use separate records for other nodes.
  • Avoid duplicate (productId, shipNode) entries in the same feed.
  • Validate GTIN format and numeric types before submission.
  • For polling, start with a longer interval and increase only if needed.
  • Download reports promptly. Links can expire.

Security and privacy

  • Do not include PII in URLs or logs.
  • Use HTTPS for all requests.
  • Rotate and protect tokens and secrets.