---
title: "Create Product"
method: POST
path: "/v1/products"
tags: ["Products"]
---

# Create Product

`POST /v1/products`

Creates a product object.



> 📘 Upsert Mode
>
> If you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.

## Request body

- ProductsCreateRequestBody — Request schema for **POST** `v1/products`.
  - `id` string — A unique identifier that represents the product and is assigned by Voucherify.
  - `source_id` string — Unique product source ID.
  - `name` string — Unique user-defined product name.
  - `price` integer — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
  - `attributes` string[] — A list of product attributes whose values you can customize for given SKUs: `["color","size","ranking"]`. Each child SKU can have a unique value for a given attribute.
  - `metadata` object — The metadata object stores all custom attributes assigned to the product. A set of key/value pairs that you can attach to a product object. It can be useful for storing additional information about the product in a structured format.
  - `image_url` string — The HTTPS URL pointing to the .png or .jpg file that will be used to render the product image.

## Response `200`

Returns a product object if the operation succeeded.

- ProductsCreateResponseBody — This is an object representing a product. This entity should be used to map product items from your inventory management system. The aim of products is to build which reflect product-specific campaigns.
  - `id` string, required — Unique product ID assigned by Voucherify.
  - `source_id` string, nullable, required — Unique product source ID.
  - `name` string, nullable, required — Unique user-defined product name.
  - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
  - `attributes` string[], required — A list of product attributes whose values you can customize for given SKUs: `["color","size","ranking"]`. Each child SKU can have a unique value for a given attribute.
  - `metadata` object, required — The metadata object stores all custom attributes assigned to the product. A set of key/value pairs that you can attach to a product object. It can be useful for storing additional information about the product in a structured format. It can be used to create product collections.
  - `image_url` string, nullable — The HTTPS URL pointing to the .png or .jpg file that will be used to render the product image.
  - `created_at` string, date-time — Timestamp representing the date and time when the product was created. The value is shown in the ISO 8601 format.
  - `updated_at` string, date-time, nullable — Timestamp representing the date and time when the product was updated. The value is shown in the ISO 8601 format.
  - `object` 'product', required — The type of the object represented by JSON. This object stores information about the product.
  - `skus` SkusListForProduct — Contains information about child SKUs.
    - `object` string, required — The type of the object represented by JSON. This object stores information about SKUs.
    - `data_ref` string, required — Identifies the name of the JSON property that contains the array of SKUs.
    - `data` Sku[], required — A dictionary that contains an array of SKUs.
      - `id` string, required — A unique identifier that represents the SKU and is assigned by Voucherify.
      - `source_id` string, nullable, required — A unique SKU identifier from your inventory system.
      - `product_id` string, required — The parent product's unique ID.
      - `sku` string, nullable, required — Unique user-defined SKU name.
      - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
      - `currency` string, nullable — SKU price currency.
      - `attributes` object, required — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
      - `image_url` string, nullable, required — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
      - `metadata` object, required — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections.
      - `created_at` string, date-time, required — Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time, nullable, required — Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.
      - `object` 'sku', required — The type of the object represented by JSON. This object stores information about the `SKU`.
    - `total` integer, required — Total number of SKUs in the product.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/versions/4982266e0494/schema)
