---
title: "Duplicate product"
method: POST
path: "/api/v1/products/{id}/duplicate"
tags: ["Products"]
---

# Duplicate product

`POST /api/v1/products/{id}/duplicate`

Duplicates an existing product, including its plans, addons, and configuration.

## Path parameters

- `id` string, required

## Headers

- `X-ACCOUNT-ID` string
- `X-ENVIRONMENT-ID` string

## Request body

- DuplicateProductRequestDto — Duplicate an existing product with a new unique identifier and optional display overrides.
  - `targetId` string, required — The unique identifier for the entity
  - `displayName` string — Display name of the product
  - `description` string, nullable — Description of the product

## Response `201`

The newly created duplicate product object.

- ProductResponseDto — Response object
  - `data` object, required — Product configuration object
    - `id` string, required — The unique identifier for the entity
    - `displayName` string, required — Display name of the product
    - `description` string, nullable, required — Description of the product
    - `status` 'PUBLISHED' | 'ARCHIVED', required — The status of the product
    - `multipleSubscriptions` boolean, required — Indicates if multiple subscriptions to this product are allowed
    - `metadata` object, required — Metadata associated with the entity
    - `productSettings` object — Product behavior settings for subscription lifecycle management.
      - `subscriptionEndSetup` 'DOWNGRADE_TO_FREE' | 'CANCEL_SUBSCRIPTION', required — Setup for the end of the subscription
      - `subscriptionCancellationTime` 'END_OF_BILLING_PERIOD' | 'IMMEDIATE' | 'SPECIFIC_DATE', required — Time when the subscription will be cancelled
      - `downgradePlanId` string, nullable — ID of the plan to downgrade to at the end of the billing period
      - `subscriptionStartSetup` 'PLAN_SELECTION' | 'TRIAL_PERIOD' | 'FREE_PLAN', required — Setup for the start of the subscription
      - `subscriptionStartPlanId` string, nullable — ID of the plan to start the subscription with
      - `prorateAtEndOfBillingPeriod` boolean, nullable — Indicates if the subscription should be prorated at the end of the billing period
    - `createdAt` string, date-time, required — Timestamp of when the record was created
    - `updatedAt` string, date-time, required — Timestamp of when the record was last updated

## Other responses

- `400` — bad request.
- `401` — User is not authenticated.
- `403` — User is not allowed to access this resource.
- `409` — Product conflict error.
- `429` — Too many requests.

## Changes

- **2026-07-23** `b876edd1a4fc` — 5 warning, 1 info
  - added the new `CreditOveragePriceCurrencyNotFound` enum value to the `code` response property for the response status `400`
  - added the new `InvalidCreditOverageBillingModel` enum value to the `code` response property for the response status `400`
  - added the new `InvoicePreviewNotAvailableForDraftContract` enum value to the `code` response property for the response status `400`
  - added the new `OveragePriceNotSupportedOnAddon` enum value to the `code` response property for the response status `400`
  - …2 more
- **2026-07-08** `58bb216ff8ce` — 1 warning
  - added the new `GovernanceNotEnabled` enum value to the `code` response property for the response status `403`
- **2026-06-15** `7296f9e4b654` — 1 warning
  - added the new `InvoicePreviewNotAvailableForDraftContract` enum value to the `code` response property for the response status `409`
- **2026-06-08** `3acd63d6c861` — 2 info
  - added the new optional `header` request parameter `X-ACCOUNT-ID`
  - added the new optional `header` request parameter `X-ENVIRONMENT-ID`
- **2026-06-04** `4fa87d66426d` — 1 warning
  - added the new `PricingModelNotSupportedByBillingIntegration` enum value to the `code` response property for the response status `400`

[Full history](https://skmtc.dev/stiggio/apis/stigg-api/changes/api/v1/products/:id/duplicate/post.md)

---

[API](https://skmtc.dev/stiggio/apis/stigg-api.md) · [All operations](https://skmtc.dev/stiggio/apis/stigg-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stiggio/stigg-api/revisions/3e2c8cfcd035/schema)
