Alterar produto
Altera só os campos enviados de um produto do seller; o que não vem no corpo fica como está.
A alteração é parcial: mande apenas o que mudou. Mudar quantity grava um movimento no histórico de estoque (com o motivo, se enviado) e mudar o preço pode refazer preços derivados. Para mudar muitos produtos de uma vez, use o Modo planilha.
/api/v1/vendor/products/{id}SellerAlterar um produto
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idstring (uuid)obrigatórioId do produto.
Corpo da requisição
namestringNovo nome. Não pode ser vazio.
category_idstring (uuid)Nova categoria principal. Não pode ser vazia se enviada.
additional_category_idsarray of stringSubstitui as categorias adicionais.
descriptionstringDescrição em HTML.
short_descriptionstringResumo curto.
highlight_textstringLinha curta sob o nome na página do produto.
skustringSKU.
barcodestringEAN/GTIN.
slugstringTrecho da URL.
priceintegerPreço em centavos. Zero é aceito, negativo não.
list_priceinteger | nullPreço "De".
null ou "" limpa o valor; ausente não mexe.cost_priceinteger | nullCusto.
null ou "" limpa; ausente não mexe.quantitynumberNovo estoque. A mudança é registrada no histórico de movimentação.
stock_adjust_reasonstringMotivo do ajuste, gravado no histórico. Só vale junto com
quantity.statusstringADHNovo status:
A, D ou H. Veja a observação sobre moderação abaixo.intended_statusstringDestino depois da aprovação (
A, D, H).weightnumberPeso em kg.
widthnumberLargura em cm.
heightnumberAltura em cm.
lengthnumberComprimento em cm.
free_shippingbooleanFrete grátis.
shipping_freightintegerFrete extra em centavos.
requires_shippingbooleanfalse para produto digital.ncm_codestringNCM de 8 dígitos.
min_quantitynumberQuantidade mínima por pedido.
max_quantitynumberQuantidade máxima por pedido.
quantity_stepnumberPasso de quantidade.
sale_unitstringUnidade de venda.
sale_unit_labelstringRótulo da unidade.
allow_fractionalbooleanPermite fração.
seo_titlestringTítulo SEO.
seo_descriptionstringDescrição SEO.
meta_keywordsstringPalavras-chave.
search_wordsstringPalavras extras de busca.
promo_textstringTexto promocional.
zero_price_actionstringPRAPreço zero.
out_of_stock_actionstringNBSSem estoque.
avail_sincestringData de início de exibição (RFC 3339).
usergroup_idsarray of stringGrupos que veem o produto. Lista vazia limpa a restrição; ausente não mexe.
low_stock_alertintegerLimite de estoque baixo. Não pode ser negativo.
vendor_internal_skustringSeu código interno.
buy_now_urlstringLink externo de "Comprar agora" (modo catálogo). Vazio ou
http(s).whatsapp_hiddenbooleanEsconde do catálogo do WhatsApp.
descriptionsobjectConteúdo por idioma. Cada idioma enviado é regravado por inteiro; os não enviados ficam como estão.
Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/vendor/products/$PRODUCT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"price": 4590,
"quantity": 40,
"stock_adjust_reason": "Recontagem do estoque"
}'Resposta
200Produto alterado
json
{
"id": "7bc1d5e9-a9a4-457b-866f-bbb3879d258d",
"display_id": 10664,
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"category_id": "345ac33e-4dcd-4d60-bedf-a2c2d47897d9",
"name": "Camiseta Básica Algodão Preta",
"slug": "camiseta-basica-algodao-preta",
"sku": "CAM-001",
"barcode": "7891234567895",
"description": "<p>Camiseta 100% algodão.</p>",
"short_description": "Camiseta 100% algodão",
"price": 4590,
"list_price": 5990,
"track_inventory": true,
"quantity": 40,
"low_stock_alert": 5,
"min_quantity": 0,
"max_quantity": 0,
"quantity_step": 1,
"sale_unit": "un",
"zero_price_action": "P",
"popularity": 0,
"out_of_stock_action": "N",
"weight": 0.25,
"width": 30,
"height": 2,
"length": 40,
"status": "A",
"intended_status": "A",
"approval_status": "approved",
"view_count": 0,
"sales_count": 0,
"rating_avg": 0,
"rating_count": 0,
"free_shipping": false,
"shipping_freight": 0,
"requires_shipping": true,
"vendor_name": "Loja Seller Teste",
"vendor_slug": "loja-seller-teste",
"created_at": "2026-10-11T20:56:24.231132Z",
"updated_at": "2026-10-11T21:05:40.573283Z"
}Campos da resposta
(corpo)objectO produto como ficou, com os campos de Consultar produto.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | Token que não é de seller, ou usuário sem o privilégio exigido pela rota. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_catalog"]} |
| 400 | Nome ou categoria vazios, preço ou custo negativos, status inválido. | {"error":"validation_failed","fields":{"price":"invalid_price"}} |
| 400 | Regras de negócio, como list_price_below_price ou physical_shipping_data_required. | {"error":"list_price_below_price","detail":"..."} |
| 403 | Produto de outro seller, ou tentativa de mandar o próprio produto para R/X. | {"error":"vendors cannot change product status to pending or rejected"} |
| 404 | Produto não existe. | {"error":"product not found"} |
| 409 | Campo travado pelo catálogo mestre. | {"error":"master-locked fields cannot be edited","locked_fields":["name"]} |
| 409 | EAN já usado em outro produto. | {"error":"barcode_exists: ..."} |