VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Guia rápido/Preço e estoque do produto

Estoque do produto

Ajusta o saldo de estoque de um produto (definir o total ou somar uma variação), com as regras do modelo de estoque.

O estoque de um produto é a quantidade disponível para venda. Esta página mostra como alterar o saldo (PUT). Antes de usá-la, leia o modelo de estoque em Preço e estoque do produto.

Pontos-chave
  • O saldo fica no campo quantity do produto (a resposta também traz amount, o mesmo número, como nome alternativo).
  • Em PUT .../stock você precisa dizer a intenção: set_to (deixar o estoque em N) ou delta (somar N, que pode ser negativo). quantity sozinho é recusado, para ninguém gravar o total achando que é variação.
  • O saldo nunca fica negativo: um total negativo vira 0 e uma variação que passaria de 0 para baixo também para em 0.
  • Esta rota trabalha com números inteiros. Decimais (como 10.5) são recusados.
  • PUT .../stock exige o privilégio manage_features (o mesmo das características do produto), não manage_catalog.

Ajustar o estoque

PUT/api/v1/admin/products/{id}/stockAdmin

Define ou ajusta o estoque de um produto

Muda o saldo de um produto e devolve o produto inteiro já atualizado. Use para refletir uma contagem de inventário (set_to) ou uma entrada ou saída de mercadoria (delta). A conta de delta é feita pelo banco, em uma só operação, então duas chamadas ao mesmo tempo somam as duas.

Efeitos colaterais: o evento de estoque alterado é emitido, a vitrine e a busca são atualizadas, o razão de estoque da loja (quando já existe para o produto) acompanha o novo saldo, e a mudança fica no registro de atividades (com o reason, se enviado).

Path parameters

iduuidobrigatório
Id do produto. Um SKU é recusado com 400.

Corpo da requisição

set_tointeger
O novo saldo total. {"set_to": 25} deixa o estoque em 25. Negativo vira 0.
deltainteger
A variação a somar ao saldo atual: 5 para uma entrada, -3 para uma saída. O resultado nunca fica abaixo de 0.
adjustmentinteger
Outro nome de delta. Se os dois vierem, precisam ter o mesmo valor.
quantityinteger
Só na forma antiga, junto de absolute. Sozinho, é recusado.
absoluteboolean
Só na forma antiga: com quantity, true significa total e false significa variação.
reasonstring
Motivo do ajuste (por exemplo, quebra ou contagem), gravado no registro de atividades.

Envie uma destas formas: set_to, delta (ou adjustment), ou quantity com absolute. Qualquer outra combinação é recusada com 400 stock_intent_required.

Exemplo de requisição

bash
curl -X PUT "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/stock" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "set_to": 25,
  "reason": "contagem"
}'

Para somar ou subtrair em vez de definir o total:

bash
curl -X PUT "$BASE_URL/api/v1/admin/products/$PRODUCT_ID/stock" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "delta": -3,
  "reason": "quebra"
}'

Resposta

200Estoque atualizado
json
{
  "id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
  "sku": "MOCH-001",
  "name": "Mochila Urbana",
  "price": 4990,
  "price_str": "49.90",
  "status": "A",
  "track_inventory": true,
  "quantity": 22,
  "amount": 22,
  "low_stock_alert": 5,
  "out_of_stock_action": "S",
  "min_quantity": 0,
  "max_quantity": 0,
  "quantity_step": 1,
  "sale_unit": "un",
  "updated_at": "2026-10-11T20:56:23.894112Z"
}

Response fields

quantityinteger
Saldo depois do ajuste.
amountinteger
O mesmo valor de quantity, com outro nome.
track_inventoryboolean
Se a loja controla o estoque deste produto. Veja o modelo de estoque.
low_stock_alertinteger
Limite de estoque baixo.
out_of_stock_actionstring
NBS
O que a loja faz quando o saldo zera.
priceinteger
Preço em centavos.

A resposta é o produto completo, com os mesmos campos de Consultar produto; acima estão só os que interessam ao estoque.

Erros

StatusQuandoCorpo
400Corpo sem a intenção ({}, ou só campos desconhecidos).{"error":"stock_intent_required","detail":"o corpo não trouxe número de estoque nenhum. Use {\"set_to\": N} ..."}
400Só quantity, sem absolute.{"error":"stock_intent_required","detail":"\"quantity\" sozinho não diz se é o TOTAL NOVO ..."}
400Intenções misturadas (set_to com delta, quantity com delta, delta diferente de adjustment).{"error":"stock_intent_required","detail":"..."}
400Número decimal ou texto onde se espera inteiro.{"error":"invalid request body","detail":"json: cannot unmarshal number 10.5 into ..."}
400O {id} não é um UUID (por exemplo, um SKU).{"error":"invalid product id","detail":"..."}
404Nenhum produto ativo com esse id.{"error":"product not found","detail":"..."}
401 / 403Sem token / sem manage_features.{"error":"insufficient privileges","required":"manage_features"}

As mensagens de detail dos 400 e 404 vêm em português, como o servidor as devolve.

Nunca envie só quantity

Um quantity sem intenção já fez um pedido de "deixe em 60, a entrada é de 5" virar 120 unidades, porque o número era lido como variação. Hoje a API recusa o corpo ambíguo. Escreva sempre set_to (total) ou delta (variação).

Saldo por depósito

Esta rota muda o saldo do produto. Lojas com mais de um depósito também podem consultar o resumo por depósito em GET /api/v1/admin/products/{id}/stock (mesmo caminho, método GET), que devolve total_quantity, total_reserved, total_available e by_warehouse. É uma leitura do módulo de depósitos e pertence à referência completa da API.

Veja também

  • Preço e estoque do produto: o modelo de estoque explicado do zero.
  • Faixas de preço por quantidade
  • Atualizar produto: low_stock_alert, out_of_stock_action e as regras de quantidade.
Anterior
Faixas de preço por quantidade
Próxima
Recorrência do produto
Nesta página
  • Ajustar o estoque
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também