Update inventory in bulk

Call the Feeds endpoint to update the inventory of multiple SKUs in a single API call.

Note: These POST endpoints are throttled. If you submit too many feeds too quickly, you might receive HTTP 429 responses. Use the Retry-After header value before retrying.
See Marketplace rate limiting documentation.

There are two types of feeds available:

Once you submit a feed, you receive a feed ID in the response. You can then use the Feed Status API or the All Feed Statuses API to monitor the progress of your submission, including line-item level statuses.

Note: This page shows examples using only the required parameters and inputs for bulk inventory updates. For schema validation and additional options, see the Inventory API overview and the Marketplace Inventory API reference.

Validate your file

Validate your feed against the official schemas before you upload.

  • JSON: spec 1.5 (MultiNode) and 1.4 (single node)
  • XML: spec 1.4 (single node)
    Download links are on the Inventory API overview.

Examples:

# JSON validation with ajv (install: npm i -g ajv-cli)
ajv validate -s InventoryFeed.json -d ./BulkInventoryFeed.json # XML validation (xmllint)
xmllint --noout --schema InventoryFeed.xsd ./BulkInventoryFeed.xml

Bulk item inventory update

Endpoint

POST https://marketplace.walmartapis.com/v3/feeds?feedType=inventory

Sample feed file

This file defines two SKUs with the corresponding inventory quantities and an available date. Replace placeholders with your actual data.

{ "InventoryHeader": { "version": "1.4" }, "Inventory": [ { "sku": "SKU_012345", "quantity": { "unit": "EACH", "amount": 10 }, "inventoryAvailableDate": "YYYY-MM-DD" }, { "sku": "SKU_678901", "quantity": { "unit": "EACH", "amount": 20 }, "inventoryAvailableDate": "YYYY-MM-DD" } ]
}

Sample request

This sample updates inventory for multiple SKUs at a single fulfillment center. If no ship node is provided, the update applies to the seller's default virtual node.

curl -X POST "https://marketplace.walmartapis.com/v3/feeds?feedType=inventory" -H "Authorization: Basic <Base64EncodedConsumerKey:ConsumerSecret>" -H "WM_SVC.NAME: Walmart Marketplace" -H "WM_QOS.CORRELATION_ID: 1234567890" -H "Accept: application/json" -F "file=@/path/to/BulkInventoryFeed.json"
import requests url = "https://marketplace.walmartapis.com/v3/feeds"
params = {"feedType": "inventory"} headers = { "Authorization": "Basic <Base64EncodedConsumerKey:ConsumerSecret>", "WM_SVC.NAME": "Walmart Marketplace", "WM_QOS.CORRELATION_ID": "1234567890", "Accept": "application/json",
} files = { "file": ("BulkInventoryFeed.json", open("/path/to/BulkInventoryFeed.json", "rb"), "application/json")
} response = requests.post(url, headers=headers, params=params, files=files)
print("Status code:", response.status_code)
print("Response JSON:", response.json())

Modify your code

  1. Replace /path/to/BulkInventoryFeed.json with the path to your JSON feed.
  2. Insert your Base64-encoded credentials in the Authorization header.
  3. Set a unique WM_QOS.CORRELATION_ID for your request logs.

Sample response

{ "feedId": "0123456789abcdef"
}

MultiNode bulk inventory update

This feed updates the inventory of multiple items across multiple fulfillment centers. Specify the ship node for each item. If you do not include ship nodes, the feed fails.

Endpoint

POST https://marketplace.walmartapis.com/v3/feeds?feedType=MP_INVENTORY

Sample feed file

This file updates inventory for multiple SKUs across multiple fulfillment centers.

{ "inventoryHeader": { "version": "1.5" }, "inventory": [ { "sku": "SKU_012345", "shipNodes": [ { "shipNode": "SHIP_NODE_012345", "quantity": { "unit": "EACH", "amount": 100 } } ] }, { "sku": "SKU_678901", "shipNodes": [ { "shipNode": "SHIP_NODE_012345", "quantity": { "unit": "EACH", "amount": 21 } } ] }, { "sku": "SKU_234567", "shipNodes": [ { "shipNode": "SHIP_NODE_012345", "quantity": { "unit": "EACH", "amount": 13 } }, { "shipNode": "SHIP_NODE_345678", "quantity": { "unit": "EACH", "amount": 12 } } ] } ]
}

Sample request

curl -X POST "https://marketplace.walmartapis.com/v3/feeds?feedType=MP_INVENTORY" -H "Authorization: Basic <Base64EncodedConsumerKey:ConsumerSecret>" -H "WM_SVC.NAME: Walmart Marketplace" -H "WM_QOS.CORRELATION_ID: 1234567890" -H "Accept: application/json" -F "file=@/path/to/MultiNodeBulkInventoryFeed.json"
import requests url = "https://marketplace.walmartapis.com/v3/feeds"
params = {"feedType": "MP_INVENTORY"} headers = { "Authorization": "Basic <Base64EncodedConsumerKey:ConsumerSecret>", "WM_SVC.NAME": "Walmart Marketplace", "WM_QOS.CORRELATION_ID": "1234567890", "Accept": "application/json",
} files = { "file": ("MultiNodeBulkInventoryFeed.json", open("/path/to/MultiNodeBulkInventoryFeed.json", "rb"), "application/json")
} response = requests.post(url, headers=headers, params=params, files=files)
print("Status code:", response.status_code)
print("Response JSON:", response.json())

Modify your code

Replace /path/to/MultiNodeBulkInventoryFeed.json with the path to your JSON feed.

Sample response

{ "feedId": "0123456789abcdef"
}

Troubleshooting

  • Invalid SKU (422): The SKU is not in your catalog. Fix the SKU and upload again.
  • Unsupported media type (415): For MP_INVENTORY, send JSON only. For inventory, send JSON or XML.
  • Missing file (400): The multipart body must include a file field.
  • Rate limited (429): Wait the number of seconds in Retry-After, then retry.

Check the Feed Status API for line-item errors.

Result

After you submit a feed using either feed type, you receive a response that contains a feed ID.

Use the Feed Status API or the All Feed Statuses API to monitor your submission and see the line-item status for each inventory update.