---
updatedAt: 2026-04-12T09:23:19.000Z
---

# 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.\
> Refer to [Marketplace rate limiting documentation](/us-marketplace/docs/rate-limiting).

There are two types of feeds available:

* **[Bulk item inventory update](/us-marketplace/docs/bulk-inventory-update-feed#bulk-item-inventory-update)**\
  Single ship node per file. Spec 1.4. JSON or XML. Ship node is optional. If omitted, Walmart uses your default virtual node.
* **[MultiNode bulk inventory update](/us-marketplace/docs/bulk-inventory-update-feed#multinode-bulk-inventory-update)**\
  Multiple ship nodes per SKU. Spec 1.5. JSON only. Ship nodes are required for each SKU.

Once you submit a feed, you receive a feed ID in the response. You can then use the [Feed Status API](/us-marketplace/reference/getfeeditemstatus) or the [All Feed Statuses API](/us-marketplace/reference/getallfeedstatuses) 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, refer to the [Inventory API overview](/us-marketplace/docs/inventory-api-overview) and the [Marketplace Inventory API reference](/us-marketplace/reference/updatebulkinventory).

## 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](/us-marketplace/docs/inventory-api-overview).

Examples:

```bash
# 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

```text
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.

```json
{
  "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.

```bash
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"
```

```python
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

```json
{
  "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

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

### Sample feed file

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

```json
{
  "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

```bash
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"
```

```python
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

```json
{
  "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](/us-marketplace/reference/getfeeditemstatus) 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](/us-marketplace/reference/getfeeditemstatus) or the [All Feed Statuses API](/us-marketplace/reference/getallfeedstatuses) to monitor your submission and show the line-item status for each inventory update.