How to get product_id and variant_id from inventoryItem_id of Shopify product via GraphQL API

  • Post category:Shopify
  • Post last modified:February 6, 2023
  • Reading time:2 mins read

Here’s a sample PHP code to make a GraphQL API request to get the product ID and variant ID of an InventoryItem using Shopify’s GraphQL API and PHP cURL:

Replace SHOPIFY_ACCESS_TOKEN with your Shopify store’s access token and SHOPIFY_STORE_DOMAIN with the domain of your Shopify store. Replace INVENTORY_ITEM_ID with the actual ID of the InventoryItem you want to retrieve.

The code creates a cURL handle, sets its options, executes the API request, and decodes the JSON response. Finally, it retrieves the product ID and variant ID from the response and outputs them.

<?php
  $inventory_item_id = "INVENTORY_ITEM_ID";
  $query = '
    query {
      node(id: "'.$inventory_item_id.'") {
        ... on InventoryItem {
          id
          variant {
            id
            product {
              id
            }
          }
        }
      }
    }
  ';

  $access_token = "SHOPIFY_ACCESS_TOKEN";
  $shopify_domain = "SHOPIFY_STORE_DOMAIN";

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://$shopify_domain/admin/api/2021-01/graphql.json");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["query" => $query]));
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "X-Shopify-Access-Token: $access_token"
  ]);

  $result = curl_exec($ch);
  $result = json_decode($result, true);
  curl_close($ch);

  $product_id = $result['data']['node']['variant']['product']['id'];
  $variant_id = $result['data']['node']['variant']['id'];
  echo "Product ID: $product_id\n";
  echo "Variant ID: $variant_id\n";
?>

Leave a Reply