---
title: "Create a new Sync Variant"
method: POST
path: "/store/products/{id}/variants"
tags: ["Products API"]
---

# Create a new Sync Variant

`POST /store/products/{id}/variants`

Creates a new Sync Variant for an existing Sync Product ([See examples](#tag/Examples/Products-API-examples/Create-a-new-Sync-Variant)).

## Path parameters

- `id` union, required
  - integer
  - string

## Headers

- `X-PF-Store-Id` string

## Request body

- object — Information about the SyncVariant
  - `id` integer — Sync Variant ID
  - `external_id` string — Variant ID from the Ecommerce platform
  - `sync_product_id` integer — Sync Product ID that this variant belongs to
  - `name` string — Sync Variant name
  - `synced` boolean — Indicates if this Sync Variant is properly linked with Printful product
  - `variant_id` integer, required — Printful Variant ID that this Sync Variant is synced to
  - `retail_price` string — Retail price that this item is sold for
  - `currency` string — Currency in which prices are returned
  - `is_ignored` boolean — Indicates if this Sync Variant is ignored
  - `sku` string, nullable — SKU of this Sync Variant
  - `product` object — Short information about the Printful Product and Variant
    - `variant_id` integer — Variant ID
    - `product_id` integer — Product ID of this variant
    - `image` string — URL of a sample image for this variant
    - `name` string — Display name of this variant
  - `files` SyncVariantFile[], required — Array of attached printfiles / preview images
    - `type` string — Role of the file
    - `id` integer — File ID
    - `url` string, required — Source URL where the file is downloaded from. The use of .ai .psd and .tiff files have been depreciated, if your application uses these file types or accepts these types from users you will need to add validation.
    - `options` FileOption[] — Array of additional options for this file [See examples](#tag/Common/Options)
      - `id` string, required — Option id
      - `value` string, required — Option value
    - `hash` string — MD5 checksum of the file
    - `filename` string — File name
    - `mime_type` string — MIME type of the file
    - `size` integer — Size in bytes
    - `width` integer — Width in pixels
    - `height` integer — Height in pixels
    - `dpi` integer — Resolution DPI.<br>**Note:** for vector files this may be indicated as only 72dpi, but it doesn't affect print quality since the vector files are resolution independent.
    - `status` string — File processing status:<br>**ok** - file was processed successfuly<br>**waiting** - file is being processed<br>**failed** - file failed to be processed
    - `created` integer — File creation timestamp
    - `thumbnail_url` string — Small thumbnail URL
    - `preview_url` string — Medium preview image URL
    - `visible` boolean — Show file in the Printfile Library (default true)
    - `is_temporary` boolean — Whether it is a temporary printfile.
    - `stitch_count_tier` string, nullable — Stitch count tier see https://help.printful.com/hc/en-us/articles/4909652626204-What-s-the-new-large-embroidery-pricing-
  - `options` ItemOption[] — Array of additional options for the configured product/variant [See examples](#tag/Common/Options)
    - `id` string, required — Option id
    - `value` string, required — Option value
  - `main_category_id` integer, nullable — Printful Variant catalog category ID
  - `warehouse_product_id` integer, nullable — Warehousing product ID. If the sync variant is connected with a warehousing item, this is the ID of corresponding warehouse product.
  - `warehouse_product_variant_id` integer, nullable — Warehousing variant ID. If the sync variant is connected with a warehousing item, this is its ID.
  - `size` string, nullable — The size of the associated Catalog Variant
  - `color` string, nullable — The color of the associated Catalog Variant
  - `availability_status` 'active' | 'discontinued' | 'out_of_stock' | 'temporary_out_of_stock' — Indicates the status of the Sync Variant.

## Response `200`

OK

- object
  - `code` integer — Response status code `200`
  - `result` SyncVariant — Information about the SyncVariant
    - `id` integer — Sync Variant ID
    - `external_id` string — Variant ID from the Ecommerce platform
    - `sync_product_id` integer — Sync Product ID that this variant belongs to
    - `name` string — Sync Variant name
    - `synced` boolean — Indicates if this Sync Variant is properly linked with Printful product
    - `variant_id` integer — Printful Variant ID that this Sync Variant is synced to
    - `retail_price` string — Retail price that this item is sold for
    - `currency` string — Currency in which prices are returned
    - `is_ignored` boolean — Indicates if this Sync Variant is ignored
    - `sku` string, nullable — SKU of this Sync Variant
    - `product` object — Short information about the Printful Product and Variant
      - `variant_id` integer — Variant ID
      - `product_id` integer — Product ID of this variant
      - `image` string — URL of a sample image for this variant
      - `name` string — Display name of this variant
    - `files` SyncVariantFile[] — Array of attached printfiles / preview images
      - `type` string — Role of the file
      - `id` integer — File ID
      - `url` string, required — Source URL where the file is downloaded from. The use of .ai .psd and .tiff files have been depreciated, if your application uses these file types or accepts these types from users you will need to add validation.
      - `options` FileOption[] — Array of additional options for this file [See examples](#tag/Common/Options)
        - `id` string, required — Option id
        - `value` string, required — Option value
      - `hash` string — MD5 checksum of the file
      - `filename` string — File name
      - `mime_type` string — MIME type of the file
      - `size` integer — Size in bytes
      - `width` integer — Width in pixels
      - `height` integer — Height in pixels
      - `dpi` integer — Resolution DPI.<br>**Note:** for vector files this may be indicated as only 72dpi, but it doesn't affect print quality since the vector files are resolution independent.
      - `status` string — File processing status:<br>**ok** - file was processed successfuly<br>**waiting** - file is being processed<br>**failed** - file failed to be processed
      - `created` integer — File creation timestamp
      - `thumbnail_url` string — Small thumbnail URL
      - `preview_url` string — Medium preview image URL
      - `visible` boolean — Show file in the Printfile Library (default true)
      - `is_temporary` boolean — Whether it is a temporary printfile.
      - `stitch_count_tier` string, nullable — Stitch count tier see https://help.printful.com/hc/en-us/articles/4909652626204-What-s-the-new-large-embroidery-pricing-
    - `options` ItemOption[] — Array of additional options for the configured product/variant [See examples](#tag/Common/Options)
      - `id` string, required — Option id
      - `value` string, required — Option value
    - `main_category_id` integer, nullable — Printful Variant catalog category ID
    - `warehouse_product_id` integer, nullable — Warehousing product ID. If the sync variant is connected with a warehousing item, this is the ID of corresponding warehouse product.
    - `warehouse_product_variant_id` integer, nullable — Warehousing variant ID. If the sync variant is connected with a warehousing item, this is its ID.
    - `size` string, nullable — The size of the associated Catalog Variant
    - `color` string, nullable — The color of the associated Catalog Variant
    - `availability_status` 'active' | 'discontinued' | 'out_of_stock' | 'temporary_out_of_stock' — Indicates the status of the Sync Variant.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not found

---

[API](https://skmtc.net/printful/apis/api-documentation-printful.md) · [All operations](https://skmtc.net/printful/apis/api-documentation-printful/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/printful/api-documentation-printful/revisions/18e2f2e178dd/schema)
