---
title: Product
description: >-
  Manage a store's products, which are the individual items and services for
  sale in the store.
api_version: 2026-07
source_url:
  html: 'https://shopify.dev/docs/api/admin-rest/latest/resources/product'
  md: 'https://shopify.dev/docs/api/admin-rest/latest/resources/product.md'
api_name: admin-rest
api_type: rest
---

The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the [GraphQL Admin API](https://shopify.dev/docs/api/admin-graphql). For details and migration steps, visit our [migration guide](https://shopify.dev/docs/apps/build/graphql/migrate).

# Product

**Requires \`products\` access scope.:**

**Important:**

Listing, creating, updating, and deleting products is deprecated as of REST API 2024-04. For more information, refer to the [guide to the new product model](https://shopify.dev/docs/api/admin/migrate/new-product-model).

The Product resource lets you update and create products in a merchant's store. You can use [product variants](https://shopify.dev/docs/admin-api/rest/reference/products/product-variant) with the Product resource to create or update different versions of the same product. You can also add or update [product images](https://shopify.dev/docs/admin-api/rest/reference/products/product-image).

You can add products to collections with the [CustomCollection](https://shopify.dev/docs/admin-api/rest/reference/products/customcollection) resource and the [SmartCollection](https://shopify.dev/docs/admin-api/rest/reference/products/smartcollection) resource.

\#

## Endpoints

* [post](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#post-products)

  [/admin/api/latest/products.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#post-products)

  Create a new product

  [productCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate)

* [get](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#get-products?ids=632910392,921728736)

  [/admin/api/latest/products.​json?ids=632910392,921728736](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#get-products?ids=632910392,921728736)

  Retrieve a list of products

  [products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products?example=retrieve-a-list-of-products)

* [get](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#get-products-product-id)

  [/admin/api/latest/products/{product\_​id}.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#get-products-product-id)

  Retrieve a single product

  [product](https://shopify.dev/docs/api/admin-graphql/latest/queries/product?example=retrieve-a-single-product)

* [get](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#get-products-count)

  [/admin/api/latest/products/count.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#get-products-count)

  Retrieve a count of products

  [productsCount](https://shopify.dev/docs/api/admin-graphql/latest/queries/productsCount?example=retrieve-a-count-of-products)

* [put](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#put-products-product-id)

  [/admin/api/latest/products/{product\_​id}.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#put-products-product-id)

  Updates a product

  [productUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdate)

* [del](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#delete-products-product-id)

  [/admin/api/latest/products/{product\_​id}.​json](https://shopify.dev/docs/api/admin-rest/latest/resources/product.md#delete-products-product-id)

  Delete a product

  [productDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productDelete?example=delete-a-product)

***

## The Product resource

### Properties

***

body\_html

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.descriptionHtml)

A description of the product. Supports HTML formatting.

***

created\_at

**date**

**ISO 8601**

**read-only**

->[createdAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.createdAt)

The date and time ([ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601)) when the product was created.

***

handle

**string**

->[handle](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.handle)

A unique human-friendly string for the product. Automatically generated from the product's `title`. Used by the Liquid templating language to refer to objects.

***

id

**integer**

**int64**

**read-only**

->[id](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.id)

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

***

images

**array**

->[media](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.media)

A list of [product image](https://shopify.dev/docs/admin-api/rest/reference/products/product-image) objects, each one representing an image associated with the product.

***

options

**array**

->[options](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.options)

The custom product properties. For example, **Size**, **Color**, and **Material**. Each product can have up to 3 options and each option value can be up to 255 characters. Product variants are made of up combinations of option values.

Options cannot be created without values. To create new options, a variant with an associated option value also needs to be created.

***

product\_type

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.productType)

A categorization for the product used for filtering and searching products.

***

published\_at

**date**

**ISO 8601**

->[publishedAt](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.publishedAt)

The date and time ([ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601)) when the product was published. Can be set to `null` to unpublish the product from the Online Store channel.

***

published\_scope

**string**

->[publishedOnPublication](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.publishedOnPublication)

Whether the product is published to the Point of Sale channel. Valid values:

* `web`: The product isn't published to the Point of Sale channel.
* `global`: The product is published to the Point of Sale channel.

***

status

**string**

->[status](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.status)

The status of the product. Valid values:

* `active`: The product is ready to sell and is available to customers on the online store, sales channels, and apps. By default, existing products are set to active.
* `archived`: The product is no longer being sold and isn't available to customers on sales channels and apps.
* `draft`: The product isn't ready to sell and is unavailable to customers on sales channels and apps. By default, duplicated and unarchived products are set to draft.

***

tags

**string**

->[tags](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.tags)

A string of comma-separated tags that are used for filtering and search. A product can have up to 250 tags. Each tag can have up to 255 characters.

***

template\_suffix

**string**

->[templateSuffix](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product#field-Product.fields.templateSuffix)

The suffix of the Liquid template used for the product page. If this property is specified, then the product page uses a template called "product.suffix.liquid", where "suffix" is the value of this property. If this property is \<code>"" or `null`, then the product page uses the default template "product.liquid". (default: `null`)

***

{}

## The Product resource

```json
{
  "body_html": "It's the small iPod with a big idea: Video.",
  "created_at": "2012-02-15T15:12:21-05:00",
  "handle": "ipod-nano",
  "id": 632910392,
  "images": [
    {
      "id": 850703190,
      "product_id": 632910392,
      "position": 1,
      "created_at": "2018-01-08T12:34:47-05:00",
      "updated_at": "2018-01-08T12:34:47-05:00",
      "width": 110,
      "height": 140,
      "src": "http://example.com/burton.jpg",
      "variant_ids": [
        {}
      ]
    }
  ],
  "options": {
    "id": 594680422,
    "product_id": 632910392,
    "name": "Color",
    "position": 1,
    "values": [
      "Pink",
      "Red",
      "Green",
      "Black"
    ]
  },
  "product_type": "Cult Products",
  "published_at": "2007-12-31T19:00:00-05:00",
  "published_scope": "global",
  "status": "active",
  "tags": "Emotive, Flash Memory, MP3, Music",
  "template_suffix": "special",
  "title": "IPod Nano - 8GB",
  "updated_at": "2012-08-24T14:01:47-04:00",
  "variants": [
    {
      "barcode": "1234_pink",
      "compare_at_price": null,
      "created_at": "2012-08-24T14:01:47-04:00",
      "fulfillment_service": "manual",
      "grams": 567,
      "weight": 0.2,
      "weight_unit": "kg",
      "id": 808950810,
      "inventory_item_id": 341629,
      "inventory_management": "shopify",
      "inventory_policy": "continue",
      "inventory_quantity": 10,
      "option1": "Pink",
      "position": 1,
      "price": 199.99,
      "product_id": 632910392,
      "requires_shipping": true,
      "sku": "IPOD2008PINK",
      "taxable": true,
      "title": "Pink",
      "updated_at": "2012-08-24T14:01:47-04:00"
    }
  ],
  "vendor": "Apple"
}
```

***

## postCreate a new product

[productCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate)

Create a new product



### Parameters

***

api\_version

**string**

**required**

***

### Examples

### Create a new draft product

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

product.status:​"draft"

**string**

->[status](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-status)

The status of the product. Valid values:

* `active`: The product is ready to sell and is available to customers on the online store, sales channels, and apps. By default, existing products are set to active.
* `archived`: The product is no longer being sold and isn't available to customers on sales channels and apps.
* `draft`: The product isn't ready to sell and is unavailable to customers on sales channels and apps. By default, duplicated and unarchived products are set to draft.

### Create a new product with multiple product variants

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

product.variants:​\[{"option1":"First",​"price":"10.00",​"sku":"123"},​{"option1":"Second",​"price":"20.00",​"sku":"123"}]

**array**

An array of [product variants](https://shopify.dev/docs/admin-api/rest/reference/products/product-variant), each representing a different version of the product.

The `position` property is read-only. The position of variants is indicated by the order in which they are listed.

### Create a new product with multiple product variants and multiple options

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

product.variants:​\[{"option1":"Blue",​"option2":"155"},​{"option1":"Black",​"option2":"159"}]

**array**

An array of [product variants](https://shopify.dev/docs/admin-api/rest/reference/products/product-variant), each representing a different version of the product.

The `position` property is read-only. The position of variants is indicated by the order in which they are listed.

product.options:​\[{"name":"Color",​"values":\["Blue",​"Black"]},​{"name":"Size",​"values":\["155",​"159"]}]

**array**

The custom product properties. For example, **Size**, **Color**, and **Material**. Each product can have up to 3 options and each option value can be up to 255 characters. Product variants are made of up combinations of option values.

Options cannot be created without values. To create new options, a variant with an associated option value also needs to be created.

### Create a new product with the default product variant

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

product.tags:​\["Barnes & Noble",​"Big Air",​"John's Fav"]

**string**

->[tags](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-tags)

A string of comma-separated tags that are used for filtering and search. A product can have up to 250 tags. Each tag can have up to 255 characters.

### Create a new product with the default variant and a product image that will be downloaded by Shopify

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

product.images:​\[{"src":"http://example.com/rails\_logo.gif"}]

**array**

A list of [product image](https://shopify.dev/docs/admin-api/rest/reference/products/product-image) objects, each one representing an image associated with the product.

### Create a new product with the default variant and base64 encoded image

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

product.images:​\[{"attachment":"R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==\n"}]

**array**

A list of [product image](https://shopify.dev/docs/admin-api/rest/reference/products/product-image) objects, each one representing an image associated with the product.

### Create a new unpublished product

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

### Create a product with a metafield

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

### Create a product with an SEO title and description

### Request body

product​

**Product resource**

product.title:​"Burton Custom Freestyle 151"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.body\_​html:​"\<strong>Good snowboard!\</strong>"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

product.vendor:​"Burton"

**string**

->[vendor](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-vendor)

The name of the product's vendor.

product.product\_​type:​"Snowboard"

**string**

->[productType](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-productType)

A categorization for the product used for filtering and searching products.

### Creating a product without a title will return an error

### Request body

product​

**Product resource**

product.body\_​html:​"A mystery!"

**string**

->[descriptionHtml](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-descriptionHtml)

A description of the product. Supports HTML formatting.

post

## /admin/api/2026-07/products.​json

```bash
curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","status":"draft"}}' \
-X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
-H "X-Shopify-Access-Token: {access_token}" \
-H "Content-Type: application/json"
```

{}

## Response

JSON

```json
HTTP/1.1 201 Created
{
  "product": {
    "id": 1072481069,
    "title": "Burton Custom Freestyle 151",
    "body_html": "<strong>Good snowboard!</strong>",
    "vendor": "Burton",
    "product_type": "Snowboard",
    "created_at": "2026-07-01T12:16:55-04:00",
    "handle": "burton-custom-freestyle-151",
    "updated_at": "2026-07-01T12:16:55-04:00",
    "published_at": null,
    "template_suffix": null,
    "published_scope": "web",
    "tags": "",
    "status": "draft",
    "admin_graphql_api_id": "gid://shopify/Product/1072481069",
    "variants": [
      {
        "id": 1070325059,
        "product_id": 1072481069,
        "title": "Default Title",
        "price": "0.00",
        "position": 1,
        "inventory_policy": "deny",
        "compare_at_price": null,
        "option1": "Default Title",
        "option2": null,
        "option3": null,
        "created_at": "2026-07-01T12:16:55-04:00",
        "updated_at": "2026-07-01T12:16:56-04:00",
        "taxable": true,
        "barcode": null,
        "fulfillment_service": "manual",
        "grams": 0,
        "inventory_management": null,
        "requires_shipping": true,
        "sku": null,
        "weight": 0,
        "weight_unit": "lb",
        "inventory_item_id": 1070325059,
        "inventory_quantity": 0,
        "old_inventory_quantity": 0,
        "presentment_prices": [
          {
            "price": {
              "amount": "0.00",
              "currency_code": "USD"
            },
            "compare_at_price": null
          }
        ],
        "admin_graphql_api_id": "gid://shopify/ProductVariant/1070325059",
        "image_id": null
      }
    ],
    "options": [
      {
        "id": 1064576524,
        "product_id": 1072481069,
        "name": "Title",
        "position": 1,
        "values": [
          "Default Title"
        ]
      }
    ],
    "images": [],
    "image": null
  }
}
```

### examples

* #### Create a new draft product

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","status":"draft"}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

  #### response

  ```json
  HTTP/1.1 201 Created{"product":{"id":1072481069,"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","created_at":"2026-07-01T12:16:55-04:00","handle":"burton-custom-freestyle-151","updated_at":"2026-07-01T12:16:55-04:00","published_at":null,"template_suffix":null,"published_scope":"web","tags":"","status":"draft","admin_graphql_api_id":"gid://shopify/Product/1072481069","variants":[{"id":1070325059,"product_id":1072481069,"title":"Default Title","price":"0.00","position":1,"inventory_policy":"deny","compare_at_price":null,"option1":"Default Title","option2":null,"option3":null,"created_at":"2026-07-01T12:16:55-04:00","updated_at":"2026-07-01T12:16:56-04:00","taxable":true,"barcode":null,"fulfillment_service":"manual","grams":0,"inventory_management":null,"requires_shipping":true,"sku":null,"weight":0,"weight_unit":"lb","inventory_item_id":1070325059,"inventory_quantity":0,"old_inventory_quantity":0,"presentment_prices":[{"price":{"amount":"0.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/1070325059","image_id":null}],"options":[{"id":1064576524,"product_id":1072481069,"name":"Title","position":1,"values":["Default Title"]}],"images":[],"image":null}}
  ```

* #### Create a new product with multiple product variants

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","variants":[{"option1":"First","price":"10.00","sku":"123"},{"option1":"Second","price":"20.00","sku":"123"}]}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a new product with multiple product variants and multiple options

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","variants":[{"option1":"Blue","option2":"155"},{"option1":"Black","option2":"159"}],"options":[{"name":"Color","values":["Blue","Black"]},{"name":"Size","values":["155","159"]}]}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a new product with the default product variant

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","tags":["Barnes & Noble","Big Air","John's Fav"]}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a new product with the default variant and a product image that will be downloaded by Shopify

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","images":[{"src":"http://example.com/rails_logo.gif"}]}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a new product with the default variant and base64 encoded image

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","images":[{"attachment":"R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==\n"}]}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a new unpublished product

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","published":false}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a product with a metafield

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","metafields":[{"key":"new","value":"newvalue","type":"single_line_text_field","namespace":"global"}]}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Create a product with an SEO title and description

  #####

  ```curl
  curl -d '{"product":{"title":"Burton Custom Freestyle 151","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","metafields_global_title_tag":"Product SEO Title","metafields_global_description_tag":"Product SEO Description"}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Creating a product without a title will return an error

  #####

  ```curl
  curl -d '{"product":{"body_html":"A mystery!"}}' \
  -X POST "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

  #### response

  ```json
  HTTP/1.1 422 Unprocessable Entity{"errors":{"title":["can't be blank"]}}
  ```

***

## getRetrieve a list of products

[products](https://shopify.dev/docs/api/admin-graphql/latest/queries/products?example=retrieve-a-list-of-products)

Retrieve a list of products.

### Parameters

***

api\_version

**string**

**required**

***

collection\_id

Return products by product collection ID.

***

created\_at\_max

Return products created before a specified date. (format: 2014-04-25T16:15:47-04:00)

***

created\_at\_min

Return products created after a specified date. (format: 2014-04-25T16:15:47-04:00)

***

fields

Return fields by a comma-separated list of field names. Fields: admin\_graphql\_api\_id, body\_html, created\_at, handle, id, image, images, options, product\_type, published\_at, published\_scope, status, tags, template\_suffix, title, updated\_at, variants, vendor

***

handle

Return only products specified by a comma-separated list of product handles.

***

ids

Return only products specified by a comma-separated list of product IDs.

***

limit

**≤ 250**

**default 50**

Return up to this many results per page.

***

presentment\_currencies

Return presentment prices in only certain currencies, specified by a comma-separated list of [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency codes.

***

product\_type

Return products by product type.

***

published\_at\_max

Return products published before a specified date. (format: 2014-04-25T16:15:47-04:00)

***

published\_at\_min

Return products published after a specified date. (format: 2014-04-25T16:15:47-04:00)

***

### Examples

### Retrieve a list of specific products

### Query parameters

ids=​632910392,​921728736

Return only products specified by a comma-separated list of product IDs.

### Retrieve all products

### Retrieve all products after the specified ID

### Query parameters

since\_​id=​632910392

Return only products after the specified ID.

### Retrieve all products that belong to a certain collection

### Query parameters

collection\_​id=​841564295

Return products by product collection ID.

### Retrieve all products with prices in selected presentment currencies

### Query parameters

presentment\_​currencies=​USD

Return presentment prices in only certain currencies, specified by a comma-separated list of [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency codes.

### Retrieve all products, showing only some attributes

### Query parameters

fields=​id,​images,​title

Return fields by a comma-separated list of field names. Fields: admin\_graphql\_api\_id, body\_html, created\_at, handle, id, image, images, options, product\_type, published\_at, published\_scope, status, tags, template\_suffix, title, updated\_at, variants, vendor

get

## /admin/api/2026-07/products.​json?ids=​632910392,​921728736

```bash
curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json?ids=632910392%2C921728736" \
-H "X-Shopify-Access-Token: {access_token}"
```

{}

## Response

JSON

```json
HTTP/1.1 200 OK
{
  "products": [
    {
      "id": 632910392,
      "title": "IPod Nano - 8GB",
      "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>",
      "vendor": "Apple",
      "product_type": "Cult Products",
      "created_at": "2026-07-01T12:15:55-04:00",
      "handle": "ipod-nano",
      "updated_at": "2026-07-01T12:15:55-04:00",
      "published_at": "2007-12-31T19:00:00-05:00",
      "template_suffix": null,
      "published_scope": "web",
      "tags": "Emotive, Flash Memory, MP3, Music",
      "status": "active",
      "admin_graphql_api_id": "gid://shopify/Product/632910392",
      "variants": [
        {
          "id": 808950810,
          "product_id": 632910392,
          "title": "Pink",
          "price": "199.00",
          "position": 1,
          "inventory_policy": "continue",
          "compare_at_price": null,
          "option1": "Pink",
          "option2": null,
          "option3": null,
          "created_at": "2026-07-01T12:15:55-04:00",
          "updated_at": "2026-07-01T12:15:55-04:00",
          "taxable": true,
          "barcode": "1234_pink",
          "fulfillment_service": "manual",
          "grams": 567,
```

### examples

* #### Retrieve a list of specific products

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json?ids=632910392%2C921728736" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

  #### response

  ```json
  HTTP/1.1 200 OK{"products":[{"id":632910392,"title":"IPod Nano - 8GB","body_html":"<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>","vendor":"Apple","product_type":"Cult Products","created_at":"2026-07-01T12:15:55-04:00","handle":"ipod-nano","updated_at":"2026-07-01T12:15:55-04:00","published_at":"2007-12-31T19:00:00-05:00","template_suffix":null,"published_scope":"web","tags":"Emotive, Flash Memory, MP3, Music","status":"active","admin_graphql_api_id":"gid://shopify/Product/632910392","variants":[{"id":808950810,"product_id":632910392,"title":"Pink","price":"199.00","position":1,"inventory_policy":"continue","compare_at_price":null,"option1":"Pink","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_pink","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008PINK","weight":1.25,"weight_unit":"lb","inventory_item_id":808950810,"inventory_quantity":10,"old_inventory_quantity":10,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/808950810","image_id":562641783},{"id":49148385,"product_id":632910392,"title":"Red","price":"199.00","position":2,"inventory_policy":"continue","compare_at_price":null,"option1":"Red","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_red","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008RED","weight":1.25,"weight_unit":"lb","inventory_item_id":49148385,"inventory_quantity":20,"old_inventory_quantity":20,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/49148385","image_id":null},{"id":39072856,"product_id":632910392,"title":"Green","price":"199.00","position":3,"inventory_policy":"continue","compare_at_price":null,"option1":"Green","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_green","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008GREEN","weight":1.25,"weight_unit":"lb","inventory_item_id":39072856,"inventory_quantity":30,"old_inventory_quantity":30,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/39072856","image_id":null},{"id":457924702,"product_id":632910392,"title":"Black","price":"199.00","position":4,"inventory_policy":"continue","compare_at_price":null,"option1":"Black","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_black","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008BLACK","weight":1.25,"weight_unit":"lb","inventory_item_id":457924702,"inventory_quantity":40,"old_inventory_quantity":40,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/457924702","image_id":null}],"options":[{"id":594680422,"product_id":632910392,"name":"Color","position":1,"values":["Pink","Red","Green","Black"]}],"images":[{"id":850703190,"alt":null,"position":1,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/498048120","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]},{"id":562641783,"alt":null,"position":2,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/1071517486","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano-2.png?v=1505944417","variant_ids":[808950810]},{"id":378407906,"alt":null,"position":3,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/220090436","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]}],"image":{"id":850703190,"alt":null,"position":1,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/498048120","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]}},{"id":921728736,"title":"IPod Touch 8GB","body_html":"<p>The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.</p>","vendor":"Apple","product_type":"Cult Products","created_at":"2026-07-01T12:15:55-04:00","handle":"ipod-touch","updated_at":"2026-07-01T12:15:55-04:00","published_at":"2008-09-25T20:00:00-04:00","template_suffix":null,"published_scope":"web","tags":"","status":"active","admin_graphql_api_id":"gid://shopify/Product/921728736","variants":[{"id":447654529,"product_id":921728736,"title":"Black","price":"199.00","position":1,"inventory_policy":"continue","compare_at_price":null,"option1":"Black","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_black","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2009BLACK","weight":1.25,"weight_unit":"lb","inventory_item_id":447654529,"inventory_quantity":13,"old_inventory_quantity":13,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/447654529","image_id":null}],"options":[{"id":891236591,"product_id":921728736,"name":"Title","position":1,"values":["Black"]}],"images":[],"image":null}]}
  ```

* #### Retrieve all products

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

* #### Retrieve all products after the specified ID

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json?since_id=632910392" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

* #### Retrieve all products that belong to a certain collection

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json?collection_id=841564295" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

* #### Retrieve all products with prices in selected presentment currencies

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json?presentment_currencies=USD" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

* #### Retrieve all products, showing only some attributes

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products.json?fields=id%2Cimages%2Ctitle" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

***

## getRetrieve a single product

[product](https://shopify.dev/docs/api/admin-graphql/latest/queries/product?example=retrieve-a-single-product)

Retrieve a single product.

### Parameters

***

api\_version

**string**

**required**

***

product\_id

**string**

**required**

***

fields

A comma-separated list of fields to include in the response.

***

### Examples

### Retrieve a single product by ID

### Path parameters

product\_​id=​632910392

**string**

**required**

### Retrieve only particular fields from a single product

### Path parameters

product\_​id=​632910392

**string**

**required**

### Query parameters

fields=​id,​images,​title

A comma-separated list of fields to include in the response.

get

## /admin/api/2026-07/products/632910392.​json

```bash
curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
-H "X-Shopify-Access-Token: {access_token}"
```

{}

## Response

JSON

```json
HTTP/1.1 200 OK
{
  "product": {
    "id": 632910392,
    "title": "IPod Nano - 8GB",
    "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>",
    "vendor": "Apple",
    "product_type": "Cult Products",
    "created_at": "2026-07-01T12:15:55-04:00",
    "handle": "ipod-nano",
    "updated_at": "2026-07-01T12:15:55-04:00",
    "published_at": "2007-12-31T19:00:00-05:00",
    "template_suffix": null,
    "published_scope": "web",
    "tags": "Emotive, Flash Memory, MP3, Music",
    "status": "active",
    "admin_graphql_api_id": "gid://shopify/Product/632910392",
    "variants": [
      {
        "id": 808950810,
        "product_id": 632910392,
        "title": "Pink",
        "price": "199.00",
        "position": 1,
        "inventory_policy": "continue",
        "compare_at_price": null,
        "option1": "Pink",
        "option2": null,
        "option3": null,
        "created_at": "2026-07-01T12:15:55-04:00",
        "updated_at": "2026-07-01T12:15:55-04:00",
        "taxable": true,
        "barcode": "1234_pink",
        "fulfillment_service": "manual",
        "grams": 567,
        "inventory_management": "shopify",
```

### examples

* #### Retrieve a single product by ID

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

  #### response

  ```json
  HTTP/1.1 200 OK{"product":{"id":632910392,"title":"IPod Nano - 8GB","body_html":"<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>","vendor":"Apple","product_type":"Cult Products","created_at":"2026-07-01T12:15:55-04:00","handle":"ipod-nano","updated_at":"2026-07-01T12:15:55-04:00","published_at":"2007-12-31T19:00:00-05:00","template_suffix":null,"published_scope":"web","tags":"Emotive, Flash Memory, MP3, Music","status":"active","admin_graphql_api_id":"gid://shopify/Product/632910392","variants":[{"id":808950810,"product_id":632910392,"title":"Pink","price":"199.00","position":1,"inventory_policy":"continue","compare_at_price":null,"option1":"Pink","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_pink","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008PINK","weight":1.25,"weight_unit":"lb","inventory_item_id":808950810,"inventory_quantity":10,"old_inventory_quantity":10,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/808950810","image_id":562641783},{"id":49148385,"product_id":632910392,"title":"Red","price":"199.00","position":2,"inventory_policy":"continue","compare_at_price":null,"option1":"Red","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_red","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008RED","weight":1.25,"weight_unit":"lb","inventory_item_id":49148385,"inventory_quantity":20,"old_inventory_quantity":20,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/49148385","image_id":null},{"id":39072856,"product_id":632910392,"title":"Green","price":"199.00","position":3,"inventory_policy":"continue","compare_at_price":null,"option1":"Green","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_green","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008GREEN","weight":1.25,"weight_unit":"lb","inventory_item_id":39072856,"inventory_quantity":30,"old_inventory_quantity":30,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/39072856","image_id":null},{"id":457924702,"product_id":632910392,"title":"Black","price":"199.00","position":4,"inventory_policy":"continue","compare_at_price":null,"option1":"Black","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_black","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008BLACK","weight":1.25,"weight_unit":"lb","inventory_item_id":457924702,"inventory_quantity":40,"old_inventory_quantity":40,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/457924702","image_id":null}],"options":[{"id":594680422,"product_id":632910392,"name":"Color","position":1,"values":["Pink","Red","Green","Black"]}],"images":[{"id":850703190,"alt":null,"position":1,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/498048120","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]},{"id":562641783,"alt":null,"position":2,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/1071517486","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano-2.png?v=1505944417","variant_ids":[808950810]},{"id":378407906,"alt":null,"position":3,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/220090436","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]}],"image":{"id":850703190,"alt":null,"position":1,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/498048120","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]}}}
  ```

* #### Retrieve only particular fields from a single product

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json?fields=id%2Cimages%2Ctitle" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

***

## getRetrieve a count of products

[productsCount](https://shopify.dev/docs/api/admin-graphql/latest/queries/productsCount?example=retrieve-a-count-of-products)

Retrieve a count of products.

### Parameters

***

api\_version

**string**

**required**

***

collection\_id

Return products by product collection ID.

***

created\_at\_max

Return products created before a specified date. (format: 2014-04-25T16:15:47-04:00)

***

created\_at\_min

Return products created after a specified date. (format: 2014-04-25T16:15:47-04:00)

***

product\_type

Return products by product type.

***

published\_at\_max

Return products published before a specified date. (format: 2014-04-25T16:15:47-04:00)

***

published\_at\_min

Return products published after a specified date. (format: 2014-04-25T16:15:47-04:00)

***

published\_status

**default any**

Return products by their published status.

* **published**: Return only published products.

* **unpublished**: Return only unpublished products.

* **any**: Return all products.

***

updated\_at\_max

Return products last updated before a specified date. (format: 2014-04-25T16:15:47-04:00)

***

updated\_at\_min

Return products last updated after a specified date. (format: 2014-04-25T16:15:47-04:00)

***

vendor

Return products by product vendor.

***

### Examples

### Retrieve a count of all products

### Retrieve a count of all products of a given collection

### Query parameters

collection\_​id=​841564295

Return products by product collection ID.

get

## /admin/api/2026-07/products/count.​json

```bash
curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products/count.json" \
-H "X-Shopify-Access-Token: {access_token}"
```

{}

## Response

JSON

```json
HTTP/1.1 200 OK
{
  "count": 2
}
```

### examples

* #### Retrieve a count of all products

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products/count.json" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

  #### response

  ```json
  HTTP/1.1 200 OK{"count":2}
  ```

* #### Retrieve a count of all products of a given collection

  #####

  ```curl
  curl -X GET "https://your-development-store.myshopify.com/admin/api/2026-07/products/count.json?collection_id=841564295" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

***

## putUpdates a product

[productUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdate)

Update a product



### Parameters

***

api\_version

**string**

**required**

***

product\_id

**string**

**required**

***

### Examples

### Add a metafield to an existing product

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

### Hide a published product by changing the published attribute to false

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

### Show a hidden product by changing the published attribute to true

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

### Update a product and one of its variants

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.title:​"Updated Product Title"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

product.variants:​\[{"id":808950810,​"price":"2000.00",​"sku":"Updating the Product SKU"},​{"id":49148385},​{"id":39072856},​{"id":457924702}]

**array**

An array of [product variants](https://shopify.dev/docs/admin-api/rest/reference/products/product-variant), each representing a different version of the product.

The `position` property is read-only. The position of variants is indicated by the order in which they are listed.

### Update a product by adding a new product image

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.images:​\[{"id":850703190},​{"id":562641783},​{"id":378407906},​{"src":"http://example.com/rails\_logo.gif"}]

**array**

A list of [product image](https://shopify.dev/docs/admin-api/rest/reference/products/product-image) objects, each one representing an image associated with the product.

### Update a product by clearing product images

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.images:​\[]

**array**

A list of [product image](https://shopify.dev/docs/admin-api/rest/reference/products/product-image) objects, each one representing an image associated with the product.

### Update a product by reordering the product images

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.images:​\[{"id":850703190,​"position":3},​{"id":562641783,​"position":2},​{"id":378407906,​"position":1}]

**array**

A list of [product image](https://shopify.dev/docs/admin-api/rest/reference/products/product-image) objects, each one representing an image associated with the product.

### Update a product by reordering the product variants

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.variants:​\[{"id":457924702},​{"id":39072856},​{"id":49148385},​{"id":808950810}]

**array**

An array of [product variants](https://shopify.dev/docs/admin-api/rest/reference/products/product-variant), each representing a different version of the product.

The `position` property is read-only. The position of variants is indicated by the order in which they are listed.

### Update a product's SEO title and description

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

### Update a product's status

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.status:​"draft"

**string**

->[status](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-status)

The status of the product. Valid values:

* `active`: The product is ready to sell and is available to customers on the online store, sales channels, and apps. By default, existing products are set to active.
* `archived`: The product is no longer being sold and isn't available to customers on sales channels and apps.
* `draft`: The product isn't ready to sell and is unavailable to customers on sales channels and apps. By default, duplicated and unarchived products are set to draft.

### Update a product's tags

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.tags:​"Barnes & Noble,​John's Fav"

**string**

->[tags](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-tags)

A string of comma-separated tags that are used for filtering and search. A product can have up to 250 tags. Each tag can have up to 255 characters.

### Update a product's title

### Path parameters

product\_​id=​632910392

**string**

**required**

### Request body

product​

**Product resource**

product.id:​632910392

**integer**

**int64**

**read-only**

An unsigned 64-bit integer that's used as a unique identifier for the product. Each `id` is unique across the Shopify system. No two products will have the same `id`, even if they're from different shops.

product.title:​"New product title"

**string**

->[title](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductInput#fields-title)

The name of the product.

put

## /admin/api/2026-07/products/632910392.​json

```bash
curl -d '{"product":{"id":632910392,"metafields":[{"key":"new","value":"newvalue","type":"single_line_text_field","namespace":"global"}]}}' \
-X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
-H "X-Shopify-Access-Token: {access_token}" \
-H "Content-Type: application/json"
```

{}

## Response

JSON

```json
HTTP/1.1 200 OK
{
  "product": {
    "id": 632910392,
    "title": "IPod Nano - 8GB",
    "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>",
    "vendor": "Apple",
    "product_type": "Cult Products",
    "created_at": "2026-07-01T12:15:55-04:00",
    "handle": "ipod-nano",
    "updated_at": "2026-07-01T12:16:42-04:00",
    "published_at": "2007-12-31T19:00:00-05:00",
    "template_suffix": null,
    "published_scope": "web",
    "tags": "Emotive, Flash Memory, MP3, Music",
    "status": "active",
    "admin_graphql_api_id": "gid://shopify/Product/632910392",
    "variants": [
      {
        "id": 808950810,
        "product_id": 632910392,
        "title": "Pink",
        "price": "199.00",
        "position": 1,
        "inventory_policy": "continue",
        "compare_at_price": null,
        "option1": "Pink",
        "option2": null,
        "option3": null,
        "created_at": "2026-07-01T12:15:55-04:00",
        "updated_at": "2026-07-01T12:15:55-04:00",
        "taxable": true,
        "barcode": "1234_pink",
        "fulfillment_service": "manual",
        "grams": 567,
        "inventory_management": "shopify",
```

### examples

* #### Add a metafield to an existing product

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"metafields":[{"key":"new","value":"newvalue","type":"single_line_text_field","namespace":"global"}]}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

  #### response

  ```json
  HTTP/1.1 200 OK{"product":{"id":632910392,"title":"IPod Nano - 8GB","body_html":"<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>","vendor":"Apple","product_type":"Cult Products","created_at":"2026-07-01T12:15:55-04:00","handle":"ipod-nano","updated_at":"2026-07-01T12:16:42-04:00","published_at":"2007-12-31T19:00:00-05:00","template_suffix":null,"published_scope":"web","tags":"Emotive, Flash Memory, MP3, Music","status":"active","admin_graphql_api_id":"gid://shopify/Product/632910392","variants":[{"id":808950810,"product_id":632910392,"title":"Pink","price":"199.00","position":1,"inventory_policy":"continue","compare_at_price":null,"option1":"Pink","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_pink","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008PINK","weight":1.25,"weight_unit":"lb","inventory_item_id":808950810,"inventory_quantity":10,"old_inventory_quantity":10,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/808950810","image_id":562641783},{"id":49148385,"product_id":632910392,"title":"Red","price":"199.00","position":2,"inventory_policy":"continue","compare_at_price":null,"option1":"Red","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_red","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008RED","weight":1.25,"weight_unit":"lb","inventory_item_id":49148385,"inventory_quantity":20,"old_inventory_quantity":20,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/49148385","image_id":null},{"id":39072856,"product_id":632910392,"title":"Green","price":"199.00","position":3,"inventory_policy":"continue","compare_at_price":null,"option1":"Green","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_green","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008GREEN","weight":1.25,"weight_unit":"lb","inventory_item_id":39072856,"inventory_quantity":30,"old_inventory_quantity":30,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/39072856","image_id":null},{"id":457924702,"product_id":632910392,"title":"Black","price":"199.00","position":4,"inventory_policy":"continue","compare_at_price":null,"option1":"Black","option2":null,"option3":null,"created_at":"2026-07-01T12:15:55-04:00","updated_at":"2026-07-01T12:15:55-04:00","taxable":true,"barcode":"1234_black","fulfillment_service":"manual","grams":567,"inventory_management":"shopify","requires_shipping":true,"sku":"IPOD2008BLACK","weight":1.25,"weight_unit":"lb","inventory_item_id":457924702,"inventory_quantity":40,"old_inventory_quantity":40,"presentment_prices":[{"price":{"amount":"199.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/457924702","image_id":null}],"options":[{"id":594680422,"product_id":632910392,"name":"Color","position":1,"values":["Pink","Red","Green","Black"]}],"images":[{"id":850703190,"alt":null,"position":1,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/498048120","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]},{"id":562641783,"alt":null,"position":2,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/1071517486","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano-2.png?v=1505944417","variant_ids":[808950810]},{"id":378407906,"alt":null,"position":3,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/220090436","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]}],"image":{"id":850703190,"alt":null,"position":1,"product_id":632910392,"created_at":"2017-09-20T17:53:37-04:00","updated_at":"2017-09-20T17:53:37-04:00","admin_graphql_api_id":"gid://shopify/MediaImage/498048120","width":123,"height":456,"src":"https://cdn.shopify.com/s/files/1/0005/4838/0009/products/ipod-nano.png?v=1505944417","variant_ids":[]}}}
  ```

* #### Hide a published product by changing the published attribute to false

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"published":false}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Show a hidden product by changing the published attribute to true

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"published":true}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product and one of its variants

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"title":"Updated Product Title","variants":[{"id":808950810,"price":"2000.00","sku":"Updating the Product SKU"},{"id":49148385},{"id":39072856},{"id":457924702}]}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product by adding a new product image

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"images":[{"id":850703190},{"id":562641783},{"id":378407906},{"src":"http://example.com/rails_logo.gif"}]}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product by clearing product images

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"images":[]}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product by reordering the product images

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"images":[{"id":850703190,"position":3},{"id":562641783,"position":2},{"id":378407906,"position":1}]}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product by reordering the product variants

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"variants":[{"id":457924702},{"id":39072856},{"id":49148385},{"id":808950810}]}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product's SEO title and description

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"metafields_global_title_tag":"Brand new title","metafields_global_description_tag":"Brand new description"}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product's status

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"status":"draft"}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product's tags

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"tags":"Barnes & Noble, John's Fav"}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

* #### Update a product's title

  #####

  ```curl
  curl -d '{"product":{"id":632910392,"title":"New product title"}}' \
  -X PUT "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}" \
  -H "Content-Type: application/json"
  ```

***

## delDelete a product

[productDelete](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productDelete?example=delete-a-product)

Deletes a product.

### Parameters

***

api\_version

**string**

**required**

***

product\_id

**string**

**required**

***

### Examples

### Delete a product along with all its variants and images

### Path parameters

product\_​id=​632910392

**string**

**required**

del

## /admin/api/2026-07/products/632910392.​json

```bash
curl -X DELETE "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
-H "X-Shopify-Access-Token: {access_token}"
```

{}

## Response

JSON

```json
HTTP/1.1 200 OK
{}
```

### examples

* #### Delete a product along with all its variants and images

  #####

  ```curl
  curl -X DELETE "https://your-development-store.myshopify.com/admin/api/2026-07/products/632910392.json" \
  -H "X-Shopify-Access-Token: {access_token}"
  ```

  #### response

  ```json
  HTTP/1.1 200 OK{}
  ```
