Printago API
POST /v1/skus/{id}/duplicate

Duplicate a SKU

Creates a copy of an existing SKU under a new, unique SKU code. The copy carries the linked parts, variant options, cost entries and description of the original.

Requires: sku.createsku.view

Path Parameters

id required
string
The unique identifier of the SKU to copy

Request Body

The new SKU code, and optionally a title, folder and which parts of the original to carry over

SkuDuplicateRequest
folderIdoptionalnullable
string
pattern: ^[a-z0-9]{24}$
includeCostEntriesoptional
boolean
includeDescriptionoptional
boolean
includeLinkedPartsoptional
boolean
includeVariantOptionsoptional
boolean
skurequired
string
titleoptional
string

Example Request

application/json
{
  "sku": "string",
  "title": "string",
  "folderId": "string",
  "includeLinkedParts": true,
  "includeVariantOptions": true,
  "includeCostEntries": true,
  "includeDescription": true
}

Response Schema

SkuLinkedPartsRelation
createdAtrequired
string
format: date-time
customMetadataoptional
Record<string, any>
Construct a type with a set of properties K of type T
descriptionrequired
string
externalIdrequirednullable
string
externalProviderrequirednullable
"etsy" | "shopify"
etsyshopify
folderIdoptionalnullable
string
pattern: ^[a-z0-9]{24}$
idrequired
string
pattern: ^[a-z0-9]{24}$
linkedPartsrequired
object[]
createdAtrequired
string
format: date-time
exposedParametersrequired
string[]
extensionsoptionalnullable
object
3mfoptional
object
plateLabelsoptional
Record<string, string>
plateQuantitiesrequired
Record<string, number>
skipObjectsoptional
Record<string, string[]>
Construct a type with a set of properties K of type T
idrequired
string
pattern: ^[a-z0-9]{24}$
labelrequired
string
materialAssignmentsoptionalnullable
Record<string, object[]>
Construct a type with a set of properties K of type T
parameterBindingsoptionalnullable
Record<string, string>
Construct a type with a set of properties K of type T
parametersrequired
object[]
namerequired
string
typerequired
"number" | "string" | "boolean" | "file"
numberstringbooleanfile
valueoptional
number | string | boolean
partIdrequired
string
pattern: ^[a-z0-9]{24}$
plateQuantitiesBindingoptionalnullable
string
quantityrequired
number
min: 0max: 500
sequenceBindingsoptionalnullable
Record<string, string>
Construct a type with a set of properties K of type T
skuIdrequired
string
pattern: ^[a-z0-9]{24}$
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
skurequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
titlerequired
string
totalCogsrequired
number
updatedAtrequired
string
format: date-time

Example Response

201 OK — application/json
{
  "sku": "string",
  "title": "string",
  "description": "string",
  "externalId": "string",
  "externalProvider": "etsy",
  "folderId": "string",
  "totalCogs": 1,
  "customMetadata": {},
  "id": "string",
  "storeId": "string",
  "createdAt": "2025-01-15T12:00:00.000Z",
  "updatedAt": "2025-01-15T12:00:00.000Z",
  "linkedParts": [
    {
      "skuId": "string",
      "partId": "string",
      "parameters": [
        {
          "name": "string",
          "type": "number",
          "value": 1
        }
      ],
      "quantity": 0,
      "label": "string",
      "exposedParameters": [
        "string"
      ],
      "materialAssignments": {},
      "extensions": {
        "3mf": {
          "skipObjects": {},
          "plateQuantities": {},
          "plateLabels": {}
        }
      },
      "parameterBindings": {},
      "sequenceBindings": {},
      "plateQuantitiesBinding": "string",
      "id": "string",
      "storeId": "string",
      "createdAt": "2025-01-15T12:00:00.000Z",
      "updatedAt": "2025-01-15T12:00:00.000Z"
    }
  ]
}