Clonar produto
Duplica um produto, com opções, características, imagens, tags, faixas de preço, variações e relacionados, e devolve a cópia para você ajustar.
Use esta operação para criar um produto parecido com outro sem recadastrar tudo: uma caneca em outra cor, um item de uma mesma linha, um modelo para a equipe preencher. O clone copia os dados do produto original (nome, descrição, preço, estoque, dimensões, categorias, SEO e regras de quantidade) e, conforme as opções que você enviar, também os itens ligados a ele.
A clonagem cria um produto novo a partir de um produto que já existe.
O clone nasce com algumas diferenças em relação ao original, e elas são de propósito:
- O nome ganha o sufixo
(Copy)e oslugé gerado a partir dele (com-2,-3em caso de repetição). - O SKU fica vazio, porque o SKU é único na loja. Defina um novo com Alterar produto.
- O status é
R(aguardando aprovação), com ointended_statusdo original guardado. O clone não aparece na loja até alguém aprová-lo ou você enviarstatus: "A"noPUT. - As contagens (visualizações, vendas, avaliações) começam do zero.
- O estoque é copiado (
quantityigual ao do original). Ajuste antes de ativar, para não contar o mesmo estoque duas vezes.
/api/v1/admin/products/{id}/cloneAdminClona um produto
Autenticação: Authorization: Bearer <token> de um usuário administrador com o privilégio manage_catalog. O corpo é opcional.
Path parameters
iduuidobrigatórioCorpo da requisição
clone_optionsbooleanclone_featuresbooleanclone_imagesbooleanclone_tagsbooleanclone_price_tiersbooleanclone_variationsbooleanclone_relationsbooleanExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/products/0497b6a8-c868-43be-ac21-2abddd24cd3c/clone" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"clone_images": true, "clone_features": true, "clone_price_tiers": true}'Resposta
{
"product": {
"id": "302a9a40-f4ca-4d84-bcf3-b9c0c4b0272f",
"display_id": 10665,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"category_id": "7ebc648d-6091-4511-8ea2-f86f7b3b4dd9",
"name": "Caneca Esmaltada 350 ml (Copy)",
"slug": "caneca-esmaltada-350-ml-copy",
"price": 4990,
"track_inventory": true,
"quantity": 12,
"status": "R",
"intended_status": "A",
"approval_status": "pending",
"created_at": "2026-10-11T21:08:12.410552Z",
"updated_at": "2026-10-11T21:08:12.410552Z",
"images": [],
"price_tiers": []
},
"original_name": "Caneca Esmaltada 350 ml",
"cloned_name": "Caneca Esmaltada 350 ml (Copy)"
}Exemplo abreviado: o objeto product traz todos os campos descritos em Consultar produto.
Campos da resposta
productobjectsku ausente, status: "R" e approval_status: "pending".original_namestringcloned_namestring (Copy)).Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem credenciais ou token expirado | {"error":"invalid or expired token"} |
| 403 | Usuário sem o privilégio manage_catalog | {"error":"insufficient privileges","required":"manage_catalog"} |
| 404 | O produto não existe ou está na lixeira | {"error":"product not found"} |
| 429 | Limite de requisições | {"error":"rate limit exceeded","detail":"too many requests, please try again later"} |
| 500 | {id} que não é UUID (por limitação conhecida, não é 400), ou falha interna | {"error":"failed to clone product","detail":"o valor \"abc\" não é um uuid válido. Corrija o campo e reenvie."} |
Falhas ao copiar um item ligado (por exemplo, as imagens) não derrubam a chamada: o produto é criado e o erro fica só no registro do servidor. Confira o clone antes de ativá-lo.