REST API failing to POST inventory update with "inventory_item_id" error message

Topic summary

A user encountered a “Required parameter missing or invalid” error when attempting to POST inventory updates via Shopify’s REST API. The error message specifically referenced inventory_item_id.

Initial Setup:

  • Client uses a 3PL and doesn’t track inventory in Shopify
  • Pushing inventory updates via API multiple times daily
  • Using Parabola workflow tool to send requests
  • Confirmed proper write permissions for inventory
  • inventory_item_id and location_id pulled directly from API

Root Cause:
The JSON payload was incorrectly nested inside an inventory_level object. The API expects the inventory fields (available, inventory_item_id, location_id) to be direct properties within the data object, not wrapped in an additional layer.

Solution:
Removing the inventory_level wrapper resolved the issue. The corrected structure places available, inventory_item_id, and location_id directly under data.

Status: Resolved. The user confirmed the fix worked after restructuring the payload.

Summarized with AI on November 17. AI used: claude-sonnet-4-5-20250929.

My client is using a 3PL and not using Shopify for inventory tracking as other systems are pulling from the same inventory as the Shopify store. To (attempt) to counter this, we will push updates to the store via API several times per day.

The JSON is failing with the following error message:

{
  "errors": {
    "inventory_item_id": "Required parameter missing or invalid"
  }
}

Here is the JSON I am sending:

{
  "auth": {
    "password": "ABCDEFG",
    "username": "ABCDEFG"
  },
  "data": {
    "inventory_level": {
      "available": 875,
      "inventory_item_id": 44611000000000,
      "location_id": 6470000000
    }
  },
  "headers": {
    "Content-Type": "application/json",
    "X-Shopify-Access-Token": "XXXXXXXXX"
  },
  "method": "POST",
  "url": "https://XXXXX.myshopify.com/admin/api/2023-04/inventory_levels/set.json"
}

I am following the information in the article here: https://shopify.dev/docs/api/admin-rest/2023-07/resources/inventorylevel so I am confused as to what my error is.

The inventory_item_id and the location_id are being pulled directly from the API.

Any ideas? I have been testing this all afternoon and double-checking the data without any progress. I’m stumped.

Edited to add: I have confirmed that the proper permissions are in place to write to inventory.

Hey @colleenc

Seems like an issue with the request formatting - inventory_item_id isn’t making it through.

Are you able to test the request in something like Postman or Curl? And if not, can you send me the request ID from the response headers?

Hi @SBD ,

Thanks for the quick response!

I am using Parabola to send my request. I noticed that there is another post here where the user tried Curl and it failed in the same way I am experiencing, but he did get it to work via Postman.

Unfortunately, for my purposes, I need to use Parabola as part of my workflow.

The Issue ID is: fe29e347-2473-4cd0-9d2f-4def5028f660

Post with same issue using Curl:

https://community.shopify.com/c/fulfillment-and-inventory/inventory-level-set-json-not-working-error-400-bad-request-2023/td-p/2115669

I followed the same basic troubleshooting methods as the poster of the above issue and got the same results. I also turned off read/write to inventory and turned it back on. Nothing on the request side seems to be changing the outcome. He notes on a later reply that he copy/pasted his request into Postman and it ran without issue.

Another similar issue here:

https://community.shopify.com/c/fulfillment-and-inventory/404-when-updating-inventory-level/m-p/2203419#M5477

I appreciate your help on this.

Strange! Are you able to DM me the Curl command you were using (without the access token) along with the store url?

I just noticed the payload is nested inside inventory_level. Try again without this property. E.g:

"data": {
    "available": 875,
    "inventory_item_id": 44611000000000,
    "location_id": 6470000000
  },

FWIW I had success with the following CURL command:

curl -d '{"location_id":1234,"inventory_item_id":"1234","available":42}' \
-X POST "https://STORE.myshopify.com/admin/api/2023-04/inventory_levels/set.json" \
-H "X-Shopify-Access-Token: TOKEN" \
-H "Content-Type: application/json"

Let me know if you’re still stuck.

This worked! Thank you for your help @SBD