A API da StockAI

Quase tudo o que você faz dentro da StockAI também pode ser feito pela API: enviar vendas, treinar e ler a previsão, ler o semáforo, registrar pedidos, gerenciar fornecedores e depósitos. Assim você a conecta ao seu ERP, ao seu POS ou a qualquer sistema próprio.

URL base
https://app.stockai.es/api/v1
Autenticação
Authorization: Bearer sk_live_…
Endpoints
298 documentados173 de leitura125 de escrita
GET/api/v1/planning
Requisição
curl "$STOCKAI/planning" \
  -H "Authorization: Bearer $STOCKAI_KEY"
Resposta
200 OK application/json
{
  "success": true,
  "data": {},
  "meta": {
    "timestamp": "2026-10-02T08:00:00Z"
  }
}

Autenticação

Cada chamada leva uma chave de API no cabeçalho Authorization. As chaves são criadas no aplicativo, em Automação → API Keys, e mostradas uma única vez: a StockAI guarda somente um hash.

shell
export STOCKAI=https://app.stockai.es/api/v1
export STOCKAI_KEY=sk_live_…

curl "$STOCKAI/planning" \
  -H "Authorization: Bearer $STOCKAI_KEY"

Uma chave age como ela mesma, não como a pessoa que a criou: continua funcionando se essa pessoa deixar a empresa.

Chaves de leitura e de escrita

Ao criar uma chave, você escolhe o que ela pode fazer. Cada endpoint da referência diz que tipo de chave ele exige.

LeituraLê tudo o que um usuário leitor vê: semáforo, previsões, fornecedores, pedidos, relatórios.
Leitura e escritaAlém disso, cria e altera, como um analista: envia arquivos, treina, registra pedidos, edita estoque e fornecedores.

Uma chave de leitura que tenta escrever recebe 403 com error_code api_key_scope_insufficient, e nada muda.

O que uma chave nunca pode fazer

Algumas ações são de pessoas, não de sistemas. Com uma chave de API, elas respondem 403 api_key_route_not_exposed:

  • Entrar, renovar tokens ou recuperar senhas.
  • Criar, convidar ou alterar usuários e suas permissões.
  • Criar, listar ou revogar chaves de API: uma chave não pode criar outra.
  • Configurar a instalação ou os canais da conta.
  • Exportar ou excluir a conta.
  • O que pertence a uma pessoa: sua caixa de mensagens, suas conversas com o assistente, suas preferências.
  • O que só um administrador pode fazer (por exemplo, trocar a moeda ou o período ativo).

Enviar um pedido ou um alerta por e-mail ou WhatsApp com uma chave de escrita exige que a conta tenha pelo menos um administrador com o e-mail verificado (caso contrário: 403 api_key_tenant_unverified).

Limites

Autenticação
/ min120 chamadas por minuto por chave.
APIA API, o servidor MCP e o bot do WhatsApp vêm com os planos Pro, Max e Corporativo; o plano Grátis não os inclui.

Ao ultrapassar o limite, você recebe 429 com o cabeçalho Retry-After (em segundos). O mesmo 429 serve para o limite por minuto e para o teto diário, e o corpo dele não traz error_code.

Não há cabeçalhos X-RateLimit-*: o único sinal é o 429 com Retry-After. Conte as suas chamadas ou espere o 429.

Medição e compra

A API vem com os planos Pro (2.000 chamadas por dia por chave), Max (20.000) e Corporativo (sem teto diário). Contamos cada chamada feita com uma chave de API que chegou a um endpoint, por dia (UTC) e por chave; as recusadas (chave inválida, sem permissão ou acima do limite) não contam. Um administrador vê o consumo do mês no aplicativo, na tela API.

Erros

Quase todo erro traz um error_code estável e, quando aplicável, error_params com os valores: ramifique pelo código, não pelo texto de detail, que é uma dica em inglês e pode mudar. As respostas do próprio framework (cabeçalho ausente, rota inexistente, método incorreto) e o 429 trazem apenas detail.

api_key_invalid401 a chave não existe, foi revogada ou venceu.
api_key_route_not_exposed403 esse endpoint não pode ser usado com uma chave de API.
api_key_scope_insufficient403 a chave é de leitura e o endpoint escreve.
api_key_tenant_unverified403 enviar algo para fora da StockAI exige um administrador verificado.
validation_error422 o corpo ou os parâmetros são inválidos; detail é uma lista com um objeto por campo.
PLAN_LIMIT_REACHED403 você atingiu um teto de uso; detail é um objeto e error_params diz qual.
server_busy503 o servidor está saturado; tente de novo após Retry-After.
(sem error_code)401 o cabeçalho Authorization falta ou não é “Bearer sk_live_…”: detail é “Not authenticated”.
(sem error_code)429 limite por minuto ou teto diário: aguarde Retry-After segundos.
(sem error_code)404 / 405 rota inexistente ou método não permitido.

A forma de detail

textoA maioria dos erros: uma frase em inglês.
lista422 validation_error: [{ type, loc, msg, input }], um por campo inválido; loc diz onde (por exemplo ["body", "name"]).
objetoPLAN_LIMIT_REACHED: { code, limit, current, max, tier }, o mesmo conteúdo de error_params.
403 Exemplo: chave de leitura que escreve
{
  "detail": "This endpoint writes and the API key is read-only. Use a write key.",
  "error_code": "api_key_scope_insufficient",
  "error_params": { "required_scope": "write", "key_scope": "read" }
}

O formato da resposta

Toda resposta JSON vem envolvida: { "success": true, "data": …, "meta": { "timestamp": … } }. O conteúdo útil está em data, que, conforme o endpoint, é um objeto ou uma lista; as listas paginadas trazem a lista em data.items.

200 application/json
{
  "success": true,
  "data": {},
  "meta": {
    "timestamp": "2026-10-02T08:00:00Z"
  }
}

Os endpoints que devolvem um arquivo (Excel, PDF, CSV) respondem o próprio arquivo, sem envoltório.

O endpoint MCP (POST /mcp) fala JSON-RPC 2.0 e não usa esse envoltório.

Tipos e formatos

DatasAs datas são YYYY-MM-DD; os instantes, ISO 8601 em UTC, por exemplo 2026-10-01T08:00:00+00:00.
NúmerosQuantidades e valores são números JSON, não textos. Os valores ficam na moeda da conta (GET /tenant/currency).
Sem valorUm campo sem valor geralmente chega como null em vez de ser omitido.
IdentificadoresTextos opacos com prefixo (sess_…, ds_…, sup_…): guarde-os como estão.
SinaisO semáforo usa PEDIR_YA, PEDIR_PRONTO, OK e SOBRESTOCK: valores fixos que não se traduzem.

Paginação

Há três formas, e cada endpoint declara a sua nos parâmetros:

skip e limitExecuções, resumo das execuções, fontes de dados e datasets. A resposta traz items, total, skip e limit.
limit e offsetA atividade de alertas (/alerts/activity). A resposta traz items, total, limit e offset.
somente limitOs mais recentes primeiro, até limit: alertas, histórico de pedidos, lacunas de configuração, perdas de estoque e histórico de retreinamentos.
sem paginaçãoOs demais devolvem o conjunto completo e são restringidos pelos seus filtros, por exemplo signal ou supplier em /inventory/status.

Idempotência

POST /inventory/log-po e POST /inventory/po aceitam o cabeçalho Idempotency-Key: um valor único (um UUID) por pedido que você quer fazer. Se repetir a requisição com a mesma chave, você recebe o pedido que já foi criado (200 com replayed: true) em vez de um segundo; a mesma chave com outras linhas responde 409 po_idempotency_key_reused. Os demais endpoints de escrita não são idempotentes: antes de repetir uma escrita cujo resultado você não viu, consulte se ela já foi aplicada.

HTTP
Idempotency-Key: 3f1c9a5e-7d62-4b0e-9d6a-2c8f4a1b5e70

Para clientes de IA (MCP)

A mesma chave abre um servidor MCP em POST /mcp com cinco ferramentas somente de leitura, para que um assistente de IA consulte o seu semáforo. Por design, ele não escreve nada. GET /mcp responde 405: o servidor não abre um fluxo para o cliente.

Referência de endpoints

Gerada a partir do próprio serviço: se um endpoint está aqui, ele pode ser chamado com uma chave de API. As respostas de exemplo são chamadas reais a uma conta de teste. As descrições estão em inglês, como o código.

POST Explain a SKU's recommendation
Narrativas com IA

Explain a SKU's recommendation

POST/api/v1/ai/narrative/forecast-explanation
Chave de leituraResponde 200 · application/json

Explains a specific SKU's inventory signal and recommendation in plain language.

Requisição

Cabeçalhos
  • AuthorizationBearer sk_live_…obrigatório

    Sua chave de API. Sempre obrigatória.

  • Content-Typeapplication/jsonobrigatório
Corpo

application/jsonO corpo é obrigatório.

object Um objeto.
  • skustringobrigatório
  • session_idstringobrigatório
  • profilestringopcionalpadrão "distributor"
  • languagestringopcionalpadrão "es"

Respostas

200 Se der certo

Para este endpoint não foi capturada uma resposta de exemplo. Toda resposta JSON traz este envoltório; o que vem em data depende do endpoint.

Erros possíveis

Além dos erros de cada endpoint, toda chamada feita com uma chave pode responder:

  • 401Authorization header missing, or API key invalid, revoked or expired.
  • 403Key may not call this endpoint, is read-only on a write, or a permission check refused it.
  • 429Per-minute limit or daily ceiling reached; honour Retry-After.
  • 422Validation Error
Erros
Requisição
curl -X POST "$STOCKAI/ai/narrative/forecast-explanation" \
  -H "Authorization: Bearer $STOCKAI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sku":"SKU-001","session_id":"<session_id>","profile":"distributor","language":"es"}'
Resposta
200 OK application/json
{
  "success": true,
  "data": {},
  "meta": {
    "timestamp": "2026-10-02T08:00:00Z"
  }
}

Ponha sua própria IA para prever suas vendas. Hoje.

Três formas de começar, conforme o quanto você quer se comprometer agora. As três chegam ao mesmo produto.

Crie sua conta

Com o motor completo. Envie seu arquivo de vendas e veja sua primeira previsão, e com ela a sua primeira lista do que pedir.

Criar minha conta

Veja antes de dar seu e-mail

Uma conta de teste na hora, com dados de exemplo. Dura 24 horas e depois é apagada.

Testar sem se cadastrar

Fale com a gente

Para o plano corporativo, o código-fonte, ou para ver com os seus dados e acompanhado. Respondemos em menos de 24 horas.

Vendas e contato: contacto@stockai.es. Telefone: +506 7186 2820.

Previsão de vendas feita na Costa Rica, para empresas da América Latina.