GraphQL mutation always returns 400 errors

This is a little less readable, but would you mind trying this:

curl -L -X POST ‘https://SHOP-NAME.myshopify.com/admin/api/2022-10/graphql.json’ \ -H ‘X-Shopify-Access-Token: MY-TOKEN’ \ -H ‘Content-Type: application/json’ \ –data-raw ‘{“query”:“mutation {productUpdate(input:{id: "gid://shopify/Product/MY-PRODUCT-ID", title: "title 123"}){product{id title}}}”}’

The above works on my end:

Generally, it’s a little easier to read when we break out the variables separately as well:

–data-raw ‘{“query”:“mutation productUpdate($input:ProductInput!){productUpdate(input:$input){product{id}}}”, “variables”:{“input”:{“id”:“gid://shopify/Product/6767605416054”,“title”:“New title.”}}}’