Criar produto
Cadastra um produto novo no catálogo do seller, que fica pendente de aprovação se a loja usa premoderação.
Crie o produto com os dados essenciais e complemente depois: imagens em Imagens, características em Características, variações na seção de variações. O produto nasce com o seu vendor_id; um vendor_id no corpo é descartado.
/api/v1/vendor/productsSellerCriar um produto
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Corpo da requisição
namestringobrigatórioNome do produto, até 255 caracteres. Tags HTML são removidas.
category_idstring (uuid)obrigatórioCategoria principal. Obrigatória: produto sem categoria some da navegação.
priceintegerobrigatórioPreço em centavos. Não pode ser negativo; zero é aceito.
additional_category_idsarray of stringOutras categorias onde o produto também aparece.
slugstringTrecho da URL. Se vazio, nasce do nome. Se já existir, a plataforma acrescenta
-2, -3...descriptionstringDescrição em HTML. O HTML é sanitizado.
short_descriptionstringResumo curto.
skustringSKU. Único na loja: repetido volta
409.barcodestringEAN/GTIN. Único na loja; obrigatório se a loja exigir.
list_priceintegerPreço "De" em centavos. Se informado e maior que zero, não pode ser menor que
price.cost_priceintegerCusto em centavos.
quantitynumberEstoque inicial.
statusstringpadrão: AADHStatus pretendido:
A, D ou H (ou active, disabled, hidden). Vazio = A. R e X são recusados.weightnumberPeso em kg. Não pode ser negativo.
widthnumberLargura em cm.
heightnumberAltura em cm.
lengthnumberComprimento em cm.
free_shippingbooleanFrete grátis no produto.
shipping_freightintegerFrete extra do produto em centavos.
requires_shippingbooleanpadrão: truefalse para produto digital.ncm_codestringNCM de 8 dígitos.
meta_keywordsstringPalavras-chave de SEO.
min_quantitynumberQuantidade mínima por pedido.
max_quantitynumberQuantidade máxima por pedido. Se também houver mínimo, não pode ser menor que ele.
quantity_stepnumberPasso de quantidade.
sale_unitstringUnidade de venda (
un, kg...).sale_unit_labelstringRótulo da unidade mostrado ao cliente.
allow_fractionalbooleanPermite quantidade fracionada.
usergroup_idsarray of stringRestringe a visibilidade a estes grupos de clientes. Vazio = todos veem.
zero_price_actionstringpadrão: RPRAPreço zero:
P, R ou A.out_of_stock_actionstringpadrão: SNBSSem estoque:
N, B ou S.low_stock_alertintegerLimite de alerta de estoque baixo.
search_wordsstringPalavras extras para a busca.
promo_textstringTexto promocional perto do botão de compra.
avail_sincestringData (RFC 3339) a partir da qual o produto aparece. Serve para pré-venda.
vendor_internal_skustringSeu código interno, que não aparece para o cliente.
whatsapp_hiddenbooleanEsconde só do catálogo do WhatsApp.
descriptionsobjectConteúdo por idioma, chaves como
pt-BR e en, cada uma com name, description, short_description.Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/vendor/products" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Camiseta Básica Algodão Preta",
"category_id": "345ac33e-4dcd-4d60-bedf-a2c2d47897d9",
"sku": "CAM-001",
"price": 4990,
"list_price": 5990,
"quantity": 25,
"status": "A",
"description": "<p>Camiseta 100% algodão.</p>",
"weight": 0.25,
"width": 30,
"height": 2,
"length": 40
}'Resposta
201Produto criado
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": 4990,
"list_price": 5990,
"track_inventory": true,
"quantity": 25,
"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)objectErros
| 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 | Falta nome, categoria ou preço é negativo. | {"error":"validation_failed","fields":{"category_id":"category_required"}} |
| 400 | Status inválido (inclusive R e X). | {"error":"invalid product status","detail":"..."} |
| 400 | Regra de negócio: list_price_below_price, name_required, name_too_long, physical_shipping_data_required, peso/medida/quantidade negativos, zero_price_action ou out_of_stock_action inválidos. | {"error":"list_price_below_price","detail":"list_price (4000) must be >= price (4990)"} |
| 400 | A loja exige EAN e ele não foi enviado. | {"error":"barcode_required: product barcode (EAN/GTIN) is required on this store"} |
| 403 | A loja só deixa o seller vender produtos do catálogo mestre. | {"error":"vendor_normal_product_blocked","detail":"..."} |
| 409 | SKU, nome/slug ou EAN já usados na loja. | {"error":"a product with this SKU already exists"} |