Professional Plan - All Inventory Write APIs Return 404 Across Every Version - Store Configuration Issue

Plan: Professional (recently upgraded from Basic)
Issue Duration: Persistent across multiple months
API Versions Tested: 2023-10, 2024-01, 2024-04, 2024-07, 2024-10, unstable

Problem Description:

Every single inventory write API endpoint returns 404 Not Found across all API versions, despite having a Professional/Grow plan with proper permissions. This affects both REST and GraphQL approaches.

What Works:

:white_check_mark: All read operations (products, variants, locations, inventory levels)
:white_check_mark: Private app authentication
:white_check_mark: Standard API access for non-inventory operations

What Fails (ALL return 404):

:cross_mark: POST /admin/api/{version}/inventory_levels/set.json
:cross_mark: POST /admin/api/{version}/inventory_levels/adjust.json
:cross_mark: POST /admin/api/{version}/inventory_levels/connect.json
:cross_mark: GraphQL inventoryAdjustQuantities mutations

Troubleshooting Completed:

  • :white_check_mark: Verified Professional plan active

  • :white_check_mark: Created fresh private app with write_inventory permissions

  • :white_check_mark: Tested across 6 different API versions

  • :white_check_mark: Removed all third-party inventory apps

  • :white_check_mark: Confirmed products have “Track quantity” enabled

  • :white_check_mark: Verified single active location setup

  • :white_check_mark: Same code works perfectly on other Shopify stores (even a Free plan store)

Technical Details:

  • Error Response: {"errors":"Not Found"} (consistent across all endpoints)

  • HTTP Status: 404 (not 403 or 422)

  • Request Format: Standard JSON payloads as per documentation

  • Authentication: Working (evidenced by successful read operations)

Key Observation:

The same API calls work perfectly on stores with Free promotional plans ($1/month for 3 months), but fail consistently on this Professional plan store.

Questions:

  1. Has anyone encountered 404s across ALL inventory write endpoints on a specific store?

  2. Could this be a database/configuration corruption issue?

  3. Are there hidden store settings that could disable inventory API access?

  4. Should Professional plan stores have universal access to inventory write APIs?

I was experiencing persistent 404 “Not Found” errors when trying to update inventory via Shopify’s REST API. All read operations (GET requests) worked perfectly, but any write operations (POST requests) to endpoints like /inventory_levels/set.json would fail with 404 errors, even though:

  • Authentication was correct (private app with all necessary scopes)

  • Read operations worked fine

  • Same code worked on test stores

  • Multiple API versions tested (2023-01 through 2024-10)

  • Both REST and GraphQL mutations failed

Root Cause: The issue was using the wrong myshopify.com domain in API requests. I was using forgely.myshopify.com (based on my store name), but the actual canonical domain was v0ntuy-js.myshopify.com.

How Shopify Handles This:

  • GET requests (reads): Shopify automatically redirects to the correct domain

  • POST requests (writes): Shopify does NOT follow redirects, resulting in 404 errors

Solution Steps:

  1. Find Your Canonical Domain: Make any successful API call and check the response headers:

    curl -H "X-Shopify-Access-Token: your_token" \
         "https://your-store.myshopify.com/admin/api/2024-10/shop.json" -I
    
    

    Look for the x-shopid header or check the actual domain in redirects.

  2. Test Different Domain Formats: Your actual domain might be:

    • store-name.myshopify.com

    • random-string.myshopify.com

    • store-name-xx.myshopify.com

  3. Update All API Calls: Use the canonical domain for ALL requests, especially writes:

    python  # Wrong (causes 404 on writes)
    base_url = "https://forgely.myshopify.com/admin/api/2024-10"
    
    # Correct (works for all operations)
    base_url = "https://v0123y-js.myshopify.com/admin/api/2024-10"
    
    

Verification: Once I updated to the correct domain, inventory write operations immediately started working:

  • POST /inventory_levels/set.json returned 200 OK

  • Inventory levels updated successfully

  • No other code changes needed

Key Takeaways:

  • Always use the canonical myshopify.com domain revealed by API responses

  • Don’t assume your store name matches your API domain

  • GET requests can mask this issue by working despite wrong domain

  • This affects ALL write operations, not just inventory

Hope this helps others experiencing similar 404 issues with Shopify API write operations!