# Product Variant

Important

Listing, creating, updating, and deleting product variants is deprecated as of REST API 2024-04. For more information, refer to the guide to the new product model.

Important

Apps can no longer set inventory using inventory_quantity. For more information, refer to the Inventory Level resource.

A variant can be added to a Product resource to represent one version of a product with several options. The Product resource will have a variant for every possible combination of its options. Each product can have a maximum of three options and a maximum of 100 variants. ## Resource Properties ### Product Variant * barcode: The barcode, UPC, or ISBN number for the product. * Type: x-string * Example: "1234_pink" * compare_at_price: The original price of the item before an adjustment or a sale. * Type: x-string * Example: "299.00" * created_at: The date and time (ISO 8601 format) when the product variant was created. * Type: x-string * Example: "2012-08-24T14:01:47-04:00" * fulfillment_service: The handle of a fulfillment service that stocks a product variant.

This is the handle of a third-party fulfillment service if the following conditions are met:

  1. The product variant is stocked by a single fulfillment service.
  2. The FulfillmentService is a third-party fulfillment service. Third-party fulfillment services don't have a handle with the value manual.
  3. The fulfillment service hasn't opted into SKU sharing.
If the conditions aren't met, then this is manual.

The relationship between a product variant and a fulfillment service was changed in the 2022-07 API version. A ProductVariant can be stocked by multiple fulfillment services. As a result, we recommend that you use the InventoryLevel resource if you need to determine where a product variant is stocked.

If you previously set this field, then we recommend that you instead connect an inventory item to a location. Each Location is associated with a single FulfillmentService. The value of this field after setting it will be as described above.

If you need to determine whether a product is a gift card, then you should continue to use this field until an alternative is available.

Learn more about managing inventory quantities and states.

* Type: x-string * Example: "manual" * grams: The weight of the product variant in grams. * Type: x-string * Example: 567 * id: The unique numeric identifier for the product variant. * Type: x-string * Example: 808950810 * image_id: The unique numeric identifier for a product's image. The image must be associated to the same product as the variant. * Type: x-string * Example: 434522 * inventory_item_id: The unique identifier for the inventory item, which is used in the Inventory API to query for inventory information. * Type: x-string * Example: 342916 * inventory_management: The fulfillment service that tracks the number of items in stock for the product variant. Valid values: * Type: x-string * Example: "shopify" * inventory_policy: Whether customers are allowed to place an order for the product variant when it's out of stock. Valid values:

Default value: deny. * Type: x-string * Example: "continue" * inventory_quantity: An aggregate of inventory across all locations. To adjust inventory at a specific location, use the InventoryLevel resource. * Type: x-string * Example: 10 * old_inventory_quantity: This property is deprecated. Use the InventoryLevel resource instead. * Type: x-string * Example: 5 * option: The custom properties that a shop owner uses to define product variants. You can define three options for a product variant: option1, option2, option3. Default value: Default Title. The title field is a concatenation of the option1, option2, and option3 fields. Updating the option fields updates the title field. * Type: x-string * Example: {"option1"=>"Pink"} * presentment_prices: A list of the variant's presentment prices and compare-at prices in each of the shop's enabled presentment currencies. Each price object has the following properties: Requires the header 'X-Shopify-Api-Features': 'include-presentment-prices'. * Type: x-string * Example: {"presentment_prices"=>[{"price"=>{"currency_code"=>"USD", "amount"=>"199.99"}, "compare_at_price"=>{"currency_code"=>"USD", "amount"=>"249.99"}}, {"price"=>{"currency_code"=>"EUR", "amount"=>"158.95"}, "compare_at_price"=>{"currency_code"=>"EUR", "amount"=>"198.95"}}, {"price"=>{"currency_code"=>"GBP", "amount"=>"143.00"}, "compare_at_price"=>{"currency_code"=>"GBP", "amount"=>"179.00"}}, {"price"=>{"currency_code"=>"JPY", "amount"=>"22400"}, "compare_at_price"=>{"currency_code"=>"JPY", "amount"=>"28000"}}]} * position: The order of the product variant in the list of product variants. The first position in the list is 1. The position of variants is indicated by the order in which they are listed. * Type: x-string * Example: 1 * price: The price of the product variant. * Type: x-string * Example: "199.00" * product_id: The unique numeric identifier for the product. * Type: x-string * Example: 632910392 * requires_shipping: This property is deprecated. Use the `requires_shipping` property on the InventoryItem resource instead. * Type: x-string * Example: true * sku: A unique case-sensitive identifier for the product variant in the shop. Required in order to connect to a FulfillmentService. * Type: x-string * Example: "IPOD2008PINK" * taxable: Whether a tax is charged when the product variant is sold. * Type: x-string * Example: true * tax_code: This parameter applies only to the stores that have the Avalara AvaTax app installed. Specifies the Avalara tax code for the product variant. * Type: x-string * Example: "DA040000" * title: The title of the product variant. The title field is a concatenation of the option1, option2, and option3 fields. You can only update title indirectly using the option fields. * Type: x-string * Example: "Pink" * updated_at: The date and time when the product variant was last modified. Gets returned in ISO 8601 format. * Type: x-string * Example: "2012-08-24T14:01:47-04:00" * weight: The weight of the product variant in the unit system specified with weight_unit. * Type: x-string * Example: 100.0 * weight_unit: The unit of measurement that applies to the product variant's weight. If you don't specify a value for weight_unit, then the shop's default unit of measurement is applied. Valid values: g, kg, oz, and lb. * Type: x-string * Example: "oz" ## Retrieves a list of product variants Retrieves a list of product variants. Note: This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to Make paginated requests to the REST Admin API. ### Endpoint /admin/api/#{api_version}/products/{product_id}/variants.json (GET) ### Parameters * api_version (required): * product_id (required): * fields: A comma-separated list of fields to include in the response * limit: 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 currency codes. * since_id: Restrict results to after the specified ID ### Responses #### 200 Retrieves a list of product variants Examples: ##### Retrieve all variants for a product Request: ``` GET /admin/api/unstable/products/632910392/variants.json ``` Response: ``` HTTP/1.1 200 OK {"variants":[{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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":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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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":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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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},{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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}]} ``` ##### Retrieve all variants for a product after a specified ID Request: ``` GET /admin/api/unstable/products/632910392/variants.json ``` Response: ``` HTTP/1.1 200 OK {"variants":[{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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},{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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}]} ``` ##### Retrieve all variants for a product with prices in specified presentment currencies Request: ``` GET /admin/api/unstable/products/632910392/variants.json ``` Response: ``` HTTP/1.1 200 OK {"variants":[{"id":39072856,"product_id":632910392,"title":"Green","price":"199.00","position":3,"inventory_policy":"continue","compare_at_price":"249.00","option1":"Green","option2":null,"option3":null,"created_at":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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":{"amount":"249.00","currency_code":"USD"}},{"price":{"amount":"249.00","currency_code":"CAD"},"compare_at_price":{"amount":"312.00","currency_code":"CAD"}}],"admin_graphql_api_id":"gid://shopify/ProductVariant/39072856","image_id":null},{"id":49148385,"product_id":632910392,"title":"Red","price":"199.00","position":2,"inventory_policy":"continue","compare_at_price":"249.00","option1":"Red","option2":null,"option3":null,"created_at":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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":{"amount":"249.00","currency_code":"USD"}},{"price":{"amount":"249.00","currency_code":"CAD"},"compare_at_price":{"amount":"312.00","currency_code":"CAD"}}],"admin_graphql_api_id":"gid://shopify/ProductVariant/49148385","image_id":null},{"id":457924702,"product_id":632910392,"title":"Black","price":"199.00","position":4,"inventory_policy":"continue","compare_at_price":"249.00","option1":"Black","option2":null,"option3":null,"created_at":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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":{"amount":"249.00","currency_code":"USD"}},{"price":{"amount":"249.00","currency_code":"CAD"},"compare_at_price":{"amount":"312.00","currency_code":"CAD"}}],"admin_graphql_api_id":"gid://shopify/ProductVariant/457924702","image_id":null},{"id":808950810,"product_id":632910392,"title":"Pink","price":"199.00","position":1,"inventory_policy":"continue","compare_at_price":"249.00","option1":"Pink","option2":null,"option3":null,"created_at":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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":{"amount":"249.00","currency_code":"USD"}},{"price":{"amount":"249.00","currency_code":"CAD"},"compare_at_price":{"amount":"312.00","currency_code":"CAD"}}],"admin_graphql_api_id":"gid://shopify/ProductVariant/808950810","image_id":562641783}]} ``` ## Create a new Product Variant Creates a new product variant ### Endpoint /admin/api/#{api_version}/products/{product_id}/variants.json (POST) ### Parameters * api_version (required): * product_id (required): ### Responses #### 201 Create a new Product Variant Examples: ##### Create a new product variant Request: ``` POST /admin/api/unstable/products/632910392/variants.json {"variant":{"option1":"Yellow","price":"1.00"}} ``` Response: ``` HTTP/1.1 201 Created {"variant":{"id":1070325040,"product_id":632910392,"title":"Yellow","price":"1.00","position":5,"inventory_policy":"deny","compare_at_price":null,"option1":"Yellow","option2":null,"option3":null,"created_at":"2024-09-24T10:57:03-04:00","updated_at":"2024-09-24T10:57:03-04:00","taxable":true,"barcode":null,"fulfillment_service":"manual","grams":0,"inventory_management":"shopify","requires_shipping":true,"sku":"","weight":0.0,"weight_unit":"lb","inventory_item_id":1070325040,"inventory_quantity":0,"old_inventory_quantity":0,"presentment_prices":[{"price":{"amount":"1.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/1070325040","image_id":null}} ``` ##### Create a new product variant with a metafield Request: ``` POST /admin/api/unstable/products/632910392/variants.json {"variant":{"option1":"Blue","metafields":[{"key":"new","value":"newvalue","type":"single_line_text_field","namespace":"global"}]}} ``` Response: ``` HTTP/1.1 201 Created {"variant":{"id":1070325042,"product_id":632910392,"title":"Blue","price":"0.00","position":5,"inventory_policy":"deny","compare_at_price":null,"option1":"Blue","option2":null,"option3":null,"created_at":"2024-09-24T10:57:10-04:00","updated_at":"2024-09-24T10:57:10-04:00","taxable":true,"barcode":null,"fulfillment_service":"manual","grams":0,"inventory_management":"shopify","requires_shipping":true,"sku":"","weight":0.0,"weight_unit":"lb","inventory_item_id":1070325042,"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/1070325042","image_id":null}} ``` ##### Create a new product variant with an image Request: ``` POST /admin/api/unstable/products/632910392/variants.json {"variant":{"image_id":850703190,"option1":"Purple"}} ``` Response: ``` HTTP/1.1 201 Created {"variant":{"id":1070325041,"product_id":632910392,"title":"Purple","price":"0.00","position":5,"inventory_policy":"deny","compare_at_price":null,"option1":"Purple","option2":null,"option3":null,"created_at":"2024-09-24T10:57:04-04:00","updated_at":"2024-09-24T10:57:04-04:00","taxable":true,"barcode":null,"fulfillment_service":"manual","grams":0,"inventory_management":"shopify","requires_shipping":true,"sku":"","weight":0.0,"weight_unit":"lb","inventory_item_id":1070325041,"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/1070325041","image_id":850703190}} ``` ## Receive a count of all Product Variants Retrieves a count of product variants ### Endpoint /admin/api/#{api_version}/products/{product_id}/variants/count.json (GET) ### Parameters * api_version (required): * product_id (required): ### Responses #### 200 Receive a count of all Product Variants Examples: ##### Retrieve a count all variants for a product Request: ``` GET /admin/api/unstable/products/632910392/variants/count.json ``` Response: ``` HTTP/1.1 200 OK {"count":4} ``` ## Receive a single Product Variant Retrieves a single product variant by ID ### Endpoint /admin/api/#{api_version}/variants/{variant_id}.json (GET) ### Parameters * api_version (required): * variant_id (required): * fields: A comma-separated list of fields to include in the response ### Responses #### 200 Receive a single Product Variant Examples: ##### Retrieve a product variant by ID Request: ``` GET /admin/api/unstable/variants/808950810.json ``` Response: ``` HTTP/1.1 200 OK {"variant":{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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}],"tax_code":"DA040000","admin_graphql_api_id":"gid://shopify/ProductVariant/808950810","image_id":562641783}} ``` ## Modify an existing Product Variant Updates an existing product variant ### Endpoint /admin/api/#{api_version}/variants/{variant_id}.json (PUT) ### Parameters * api_version (required): * variant_id (required): ### Responses #### 200 Modify an existing Product Variant Examples: ##### Add a metafield to an existing variant Request: ``` PUT /admin/api/unstable/variants/808950810.json {"variant":{"id":808950810,"metafields":[{"key":"new","value":"newvalue","type":"single_line_text_field","namespace":"global"}]}} ``` Response: ``` HTTP/1.1 200 OK {"variant":{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:33:18-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}} ``` ##### Add an existing image to an existing variant Request: ``` PUT /admin/api/unstable/variants/808950810.json {"variant":{"id":808950810,"image_id":562641783}} ``` Response: ``` HTTP/1.1 200 OK {"variant":{"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":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:57:06-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}} ``` ##### Update the title and price of an existing variant Request: ``` PUT /admin/api/unstable/variants/808950810.json {"variant":{"id":808950810,"option1":"Not Pink","price":"99.00"}} ``` Response: ``` HTTP/1.1 200 OK {"variant":{"id":808950810,"product_id":632910392,"title":"Not Pink","price":"99.00","position":1,"inventory_policy":"continue","compare_at_price":null,"option1":"Not Pink","option2":null,"option3":null,"created_at":"2024-09-24T10:33:18-04:00","updated_at":"2024-09-24T10:57:05-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":"99.00","currency_code":"USD"},"compare_at_price":null}],"admin_graphql_api_id":"gid://shopify/ProductVariant/808950810","image_id":562641783}} ``` ## Remove an existing Product Variant ### Endpoint /admin/api/#{api_version}/products/{product_id}/variants/{variant_id}.json (DELETE) ### Parameters * api_version (required): * product_id (required): * variant_id (required): ### Responses #### 200 Remove an existing Product Variant Examples: ##### Delete a product variant Request: ``` DELETE /admin/api/unstable/products/632910392/variants/808950810.json ``` Response: ``` HTTP/1.1 200 OK {} ```