---
title: "Create a product"
method: POST
path: "/v2/products"
tags: ["Products"]
---

# Create a product

`POST /v2/products`

## Request body

- union — Product details
  - union — Product details
    - object
      - `clientProductId` string — Your unique identifier for this product. Minimum 1 character, maximum 100 characters. Allowed characters: letters (a–z, A–Z), numbers (0–9), dot (.), underscore (_), and hyphen (-). Example: 'prod_123', 'my-product.v2'.
      - `description` string — Optional description of the product shown to customers. Minimum 1 character, maximum 280 characters.
      - `displayName` string, required — The name of the product shown to customers.
      - `image` string, uri — URL of the product image shown to customers.
      - `type` 'REGULAR' | 'SUBSCRIPTION', required — The type of product.
      - `amount` string
      - `unitAmount` integer, required — Price of the product in minor units / cents (e.g., currency: "USD", 1000 = USD 10).
      - `currency` 'USD' | 'AUD' | 'CAD' | 'CHF' | 'DKK' | 'EUR' | 'GBP' | 'NOK' | 'NZD' | 'PLN' | 'SEK' | 'SGD', required — Three-letter ISO currency code for the product price. Supported values: USD, AUD, CAD, CHF, DKK, EUR, GBP, NOK, NZD, PLN, SEK, SGD.
    - object
      - `clientProductId` string — Your unique identifier for this product. Minimum 1 character, maximum 100 characters. Allowed characters: letters (a–z, A–Z), numbers (0–9), dot (.), underscore (_), and hyphen (-). Example: 'prod_123', 'my-product.v2'.
      - `description` string — Optional description of the product shown to customers. Minimum 1 character, maximum 280 characters.
      - `displayName` string, required — The name of the product shown to customers.
      - `image` string, uri — URL of the product image shown to customers.
      - `type` 'REGULAR' | 'SUBSCRIPTION', required — The type of product.
      - `amount` string, required
      - `unitAmount` integer — Price of the product in minor units / cents (e.g., currency: "USD", 1000 = USD 10).
      - `currency` 'USD' | 'AUD' | 'CAD' | 'CHF' | 'DKK' | 'EUR' | 'GBP' | 'NOK' | 'NZD' | 'PLN' | 'SEK' | 'SGD', required — Three-letter ISO currency code for the product price. Supported values: USD, AUD, CAD, CHF, DKK, EUR, GBP, NOK, NZD, PLN, SEK, SGD.
  - SubscriptionProduct — Product details
    - `clientProductId` string — Your unique identifier for this product. Minimum 1 character, maximum 100 characters. Allowed characters: letters (a–z, A–Z), numbers (0–9), dot (.), underscore (_), and hyphen (-). Example: 'prod_123', 'my-product.v2'.
    - `description` string — Optional description of the product shown to customers. Minimum 1 character, maximum 280 characters.
    - `displayName` string, required — The name of the product shown to customers.
    - `image` string, uri — URL of the product image shown to customers.
    - `type` 'REGULAR' | 'SUBSCRIPTION', required — The type of product.

## Response `200`

Success

- object — The created product
  - `status` 'SUCCEEDED', required
  - `data` CreateProductResponse, required
    - `id` string
    - `createdAt` number
    - `updatedAt` number
    - `defaultPriceId` string
    - `clientProductId` string
    - `description` string
    - `displayName` string, required
    - `image` string
    - `livemode` boolean, required
    - `merchantId` string, required
    - `status` 'ACTIVE' | 'INACTIVE' | 'PENDING' | 'DELETED', required
    - `type` 'SUBSCRIPTION' | 'REGULAR', required

## Other responses

- `400` — Bad request
- `401` — Unauthorized

---

[API](https://skmtc.net/breeze/apis/breeze-api.md) · [All operations](https://skmtc.net/breeze/apis/breeze-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/breeze/breeze-api/versions/8911892bdf29/schema)
