O LLG é o dono do estoque. O site lê daqui o catálogo e o estoque, e avisa o LLG quando um pedido é pago (ou cancelado). Cada tamanho de cada produto tem um SKU (ex.: 0012-M) — é ele que liga a variação do site à peça da loja.
Só aparecem as peças que o lojista marcou como "Vender na loja virtual" (aba Estoque ou Integrações).
Endereço base: https://llgsistemas.com.br/api/v1
O lojista gera uma chave de integração na aba Integrações do LLG. Envie a chave em toda requisição:
Authorization: Bearer llg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Use a chave só no servidor do site (back-end, função serverless). Nunca no JavaScript que roda no navegador do cliente — quem tiver a chave consegue registrar pedidos.
Teste a chave:
curl https://llgsistemas.com.br/api/v1/loja -H "Authorization: Bearer SUA_CHAVE"
{ "loja": "Nome da Loja" }Produtos à venda, agrupados por produto, com uma variação por tamanho/modelo. Preços em reais. unidade é un, kg, g, m, l ou ml: fora de un, o preço é por unidade de medida e o estoque pode ter até 3 casas (ex.: 12.5 kg).
curl https://llgsistemas.com.br/api/v1/produtos -H "Authorization: Bearer SUA_CHAVE"
{
"produtos": [
{
"codigo": 12,
"nome": "Biquíni Tropical",
"categoria": "Moda Praia",
"foto": "https://.../foto.jpg",
"variacoes": [
{ "sku": "0012-P", "tamanho": "P", "cor": null, "preco": 89.9, "unidade": "un",
"estoque": 3, "codigo_barras": null, "foto": "https://.../foto.jpg" },
{ "sku": "0012-M", "tamanho": "M", "cor": null, "preco": 89.9, "unidade": "un",
"estoque": 0, "codigo_barras": null, "foto": "https://.../foto.jpg" }
]
}
]
}Sugestão: buscar o catálogo completo algumas vezes por dia (ou quando o lojista pedir).
Sem parâmetros: estoque atual de tudo que está à venda.
Com ?desde=: só o que mudou desde aquele momento (vendas no balcão, entradas, ajustes, vendas online...). Guarde o proximo_desde da resposta e mande na chamada seguinte.
curl "https://llgsistemas.com.br/api/v1/estoque?desde=2026-10-01T12:00:00Z" -H "Authorization: Bearer SUA_CHAVE"
{
"itens": [
{ "sku": "0012-M", "estoque": 2, "a_venda": true },
{ "sku": "0007-G", "estoque": 5, "a_venda": false },
{ "sku": "0003-U", "estoque": 0, "a_venda": false, "removido": true }
],
"proximo_desde": "2026-10-01T12:04:00.000Z"
}estoque é sempre o valor atual (não a diferença): pode aplicar direto no site. Um mesmo SKU pode vir repetido em chamadas seguidas — sem problema.a_venda: false: o lojista tirou a peça da loja virtual. removido: true: a peça foi excluída do LLG.Chame quando o pagamento for confirmado. O LLG baixa o estoque e registra a venda como "Loja virtual". preco_unitario é opcional (sem ele vale o preço do LLG); desconto é o desconto total do pedido, em reais. Frete não entra.
curl -X POST https://llgsistemas.com.br/api/v1/pedidos \
-H "Authorization: Bearer SUA_CHAVE" -H "Content-Type: application/json" \
-d '{
"numero": "1043",
"itens": [
{ "sku": "0012-M", "quantidade": 1, "preco_unitario": 89.9 },
{ "sku": "0007-G", "quantidade": 2 }
],
"desconto": 10
}'
{ "venda_id": "4f0c…", "ja_registrado": false, "total": 259.7 }Mandou o mesmo numero de novo (ex.: tentativa repetida)? O LLG não baixa duas vezes e responde "ja_registrado": true. Se faltar estoque de algum item, nada é registrado e a resposta diz qual SKU — vale chamar antes de finalizar a compra para confirmar.
Devolve as peças ao estoque e estorna a venda nos relatórios. Cancelar de novo não faz nada.
curl -X POST https://llgsistemas.com.br/api/v1/pedidos/cancelar \
-H "Authorization: Bearer SUA_CHAVE" -H "Content-Type: application/json" \
-d '{ "numero": "1043" }'
{ "venda_id": "4f0c…", "ja_cancelado": false }Sempre no formato { "erro": "mensagem", "codigo": "..." } (às vezes com sku). Status 400 = pedido recusado, 401 = chave inválida ou loja suspensa, 500 = tente de novo.
| codigo | Quando |
|---|---|
| nao_autorizado | Chave ausente, errada ou revogada |
| loja_suspensa | O acesso da loja ao LLG está suspenso |
| estoque_insuficiente | Algum item não tem estoque suficiente (veja "sku") |
| sku_desconhecido | SKU que não existe no LLG |
| quantidade_invalida | Quantidade menor ou igual a zero, com mais de 3 casas, ou quebrada num produto vendido por unidade |
| preco_invalido / desconto_invalido | Valor negativo ou maior que o pedido |
| numero_invalido / pedido_sem_itens | Faltou o número do pedido ou os itens |
| pedido_nao_encontrado | Cancelamento de pedido que não foi registrado |
| parametro_invalido | "desde" que não é uma data válida |