Skip to content

Catalog Product — Copy

Duplicates an existing catalog product. Fires catalog.product.create.before / catalog.product.create.after so listeners (search index, cache flush) trigger on the copy.

Endpoint

EndpointMethod
/api/admin/catalog/products/{sourceId}/copyPOST

Path parameters

FieldTypeRequiredNotes
sourceIdintegeryesID of the product to duplicate.

Request body

Empty. Send an empty JSON object {} if your client requires a body.

Response

200 OK

FieldTypeNotes
idintegerID of the newly created copy.
sourceIdintegerID of the source product.
skustringGenerated SKU, always temporary-sku-<hex> — it does not derive from the source SKU.
typestringProduct type, matching the source.
namestring|nullSource name prefixed with Copy Of .
successbooleanAlways true on success. Failures come back as an error status, never as success: false.
messagestringTranslated confirmation.

The copy is created disabled (status: 0) with a null urlKey, so it is never live on the storefront by accident. Give it a real SKU, name, and URL key through Update before enabling it.

The response is a small summary, not a product payload — read the copy back with Product Detail using the returned id.

Errors

HTTPCause
401 UnauthorizedMissing or invalid admin Bearer token.
403 ForbiddenAdmin role lacks catalog.products.create.
404 Not FoundSource product not found.
422 Unprocessable EntitySource is a configurable variant (parent_id != null).
500 Internal Server ErrorUnderlying copy threw an exception.

What Gets Copied

Attribute values, images, categories, inventories, and customer-group prices all carry over, as do the type-specific structures — a configurable's variants, a bundle's options, a grouped product's links.

Two things do not: the SKU and URL key are regenerated, and the copy starts disabled.

Variants Cannot Be Copied

Passing a configurable variant id returns 422 with Variants of configurable products cannot be copied. Copy the parent configurable product instead. Copying the parent brings its variants along, which is what you want in nearly every case.

Released under the MIT License.