Lê um item: saldo, posições, bloqueios, política e atributos
current_assignments são as posições do item, com o saldo e a reposição de cada uma; blocks diz o que está parado e por quê. depot recorta a um CD.
product.getQuem cria a chave escolhe as ações que ela abre; sem esta, a rota recusa com api_key_action_not_granted.
Parâmetros do caminho
Parâmetros da consulta
O código do CD que recorta a ficha.
A origem da leitura, para o livro de recusas.
Devolve
O data do envelope { ok, data, error, error_code, field, trace_id }:
35 campos
5 campos
held, missing, unverified, damaged, quarantine, expired ou stopped.
Os outros códigos do item.
O cadastro tem o que o galpão precisa para operar o item.
Os itens do kit; vazio no item comum.
5 campos
A posição está nos CDs de quem pede.
O papel da posição para o item (picking, bulk…).
Os kits de que o item faz parte.
A última nota com o item, no recorte de depósito e alcance de quem lê. Nula sem nota.
6 campos
A próxima OS aberta com parada do item (fora a conferência). Nula sem nenhuma.
6 campos
O que pode ser vendido agora.
Em lote vencido.
Reservado por pedido.
Tudo o que está no galpão.
Em posição parada.
Os atributos que o tipo do item pede, com as unidades.
4 campos
Os atributos do item, pelo catálogo da empresa, na unidade base (peso em g, medidas em mm).
As embalagens do item (caixa, fardo), com o fator.
A unidade de medida, pelo código da NF-e (H87 é peça).
Recusas
HTTP 400 · Pedido mal formado
version_unknown HTTP 400A Kernos-Version pedida não existe. Use uma das versões declaradas no cabeçalho, ou não o mande.HTTP 401 · Sem credencial válida
api_key_expired HTTP 401A chave venceu. Gire a chave no painel e use a nova.api_key_wrong_environment HTTP 401A chave é do outro ambiente: ksk_test_ vai em https://stag.kernos.com.br, ksk_live_ em https://api.kernos.com.br.unauthenticated HTTP 401Credencial ausente, inválida ou expirada.HTTP 403 · Sem permissão
agent_token_out_of_scope HTTP 403O token de agente (kat_) só vale na porta MCP. Para a API, use o token de sessão ou uma chave de integração.api_key_action_not_granted HTTP 403A chave não tem esta ação. Edite as ações da chave no painel.api_key_out_of_scope HTTP 403A chave só vale nas rotas do contrato público.depot_out_of_reach HTTP 403Quem chama não alcança o CD deste objeto. Peça alcance ao CD ou use outra credencial.forbidden_role HTTP 403O papel de quem chama nesta empresa não permite esta ação.module_not_subscribed HTTP 403A empresa não assina o módulo desta rota.tenant_mismatch HTTP 403A credencial não pertence à empresa do endereço chamado.tenant_unavailable HTTP 403A empresa está indisponível no momento.HTTP 404 · Não encontrado
not_found HTTP 404Não existe objeto com esse identificador nesta empresa.HTTP 429 · Muitos pedidos
rate_limited HTTP 429Muitos pedidos por segundo com esta chave. Espere o Retry-After, em segundos, e tente de novo.curl -X GET "https://stag.kernos.com.br/v1/objects/product/<id>" \
-H "Authorization: Bearer ksk_test_…" \
-H "Kernos-Version: 2026-10-03"import { Kernos } from '@kernosbr/kernos'
const kernos = new Kernos(process.env.KERNOS_API_KEY)
const result = await kernos.product.get('<id>')import os
from kernos import Kernos
kernos = Kernos(os.environ["KERNOS_API_KEY"])
result = kernos.product.get("<id>")<?php
$kernos = new Kernos\Kernos(getenv('KERNOS_API_KEY'));
$result = $kernos->product->get('<id>');Kernos kernos = new Kernos(System.getenv("KERNOS_API_KEY"));
JsonNode result = kernos.product().get("<id>");var kernos = new KernosClient(Environment.GetEnvironmentVariable("KERNOS_API_KEY"));
var result = await kernos.Product.GetAsync("<id>");client, err := kernos.New(os.Getenv("KERNOS_API_KEY"))
result, err := client.Product.Get(ctx, "<id>", nil)let kernos = Kernos::new(&std::env::var("KERNOS_API_KEY")?)?;
let result = kernos.product().get("<id>", None, None)?;{
"ok": true,
"data": {
"product": {
"active": true,
"blocks": [
{
"location_code": "…",
"location_status": "…",
"lot_code": "…",
"qty": 0,
"reason": "…"
}
],
"codes": [
null
],
"complete": true,
"components": [
null
],
"created_at": "2026-10-03T12:00:00Z",
"current_assignments": [
{
"in_reach": true,
"kind": "…",
"location": {},
"qty_on_hand": 0,
"replenish": {}
}
],
"description": "…",
"ean": "…",
"id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
"in_kits": [
null
],
"last_receipt": {
"created_at": "2026-10-03T12:00:00Z",
"id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
"nfe_key": "…",
"short_code": "…",
"status": "…",
"supplier_name": "…"
},
"next_order": {
"from_location_code": "…",
"id": "3f1e0c8a-5b7d-4c21-9a3e-0b1c2d3e4f50",
"kind": "…",
"location_code": "…",
"short_code": "…",
"status": "…"
},
"policy_max_places": 0,
"policy_name": "…",
"policy_replenish_max": 0,
"policy_replenish_min": 0,
"policy_requires_kind": "…",
"qty_available": 0,
"qty_blocked": 0,
"qty_expired": 0,
"qty_held": 0,
"qty_on_hand": 0,
"qty_on_hold": 0,
"qty_stopped": 0,
"replenish_max": 0,
"replenish_min": 0,
"short_code": "…",
"sku": "…",
"tracks_lot": true,
"trait_specs": [
{
"entry": [],
"key": "…",
"natures": [],
"unit": "…"
}
],
"traits": {},
"units": [
null
],
"uom": "…",
"weight_on_hand_g": 0
}
},
"error": null,
"error_code": null,
"field": null,
"trace_id": null
}ksk_test_ fala com https://stag.kernos.com.br; ksk_live_, com https://api.kernos.com.br. O prefixo da chave escolhe o endereço.