Arcane Cardápio

API do Arcane Cardápio

Para o ERP, o app próprio ou o fluxo no n8n de um restaurante. Cada chave pertence a uma loja e só enxerga os dados dela, com as permissões que o dono marcou.

Chave e permissões

O dono gera a chave em Painel → Integrações → API do Arcane Cardápio. Envie em todas as chamadas:

Authorization: Bearer cw_...
cardapio:lerLer categorias e produtos
cardapio:escreverCriar e alterar produtos, preços, estoque e esgotado
pedidos:lerLer pedidos
pedidos:escreverCriar pedidos e mudar status/pagamento
clientes:lerLer clientes (nome, WhatsApp, total gasto)
loja:escreverAbrir e fechar a loja

Limite de 120 chamadas por minuto por chave. Valores em reais (número com ponto). Datas em ISO 8601. Disponível no plano Completo.

Rotas

  • GET/api/v1/loja

    Dados da loja e se está aberta agora. Permissão: cardapio:ler

  • PATCH/api/v1/loja

    Abrir, fechar ou voltar a seguir o horário. Permissão: loja:escrever

    { "aberto": false }
  • GET/api/v1/categorias

    Lista as categorias. Permissão: cardapio:ler

  • POST/api/v1/categorias

    Cria uma categoria. Permissão: cardapio:escrever

    { "nome": "Pizzas doces" }
  • GET/api/v1/produtos

    Lista os produtos à venda. Permissão: cardapio:ler

  • POST/api/v1/produtos

    Cria um produto. Preço em reais. Permissão: cardapio:escrever

    { "nome": "Pizza de calabresa", "preco": 49.9, "categoria_id": "…", "estoque": 20 }
  • GET/api/v1/produtos/{id}

    Um produto. Permissão: cardapio:ler

  • PATCH/api/v1/produtos/{id}

    Altera preço, estoque, esgotado, etiquetas… Permissão: cardapio:escrever

    { "preco": 52.9, "esgotado": false, "estoque": 15 }
  • DELETE/api/v1/produtos/{id}

    Tira o produto do cardápio. Permissão: cardapio:escrever

  • GET/api/v1/pedidos?status=novo&desde=2026-11-01T00:00:00Z&limite=50

    Lista pedidos (de todos os canais: cardápio, balcão, iFood…). Permissão: pedidos:ler

  • POST/api/v1/pedidos

    Cria um pedido. Os preços sempre vêm do cadastro. Permissão: pedidos:escrever

    { "nome": "Ana", "telefone": "51999990000", "tipo": "retirada", "pagamento": "pix", "itens": [{ "produto_id": "…", "quantidade": 2, "opcoes": [] }] }
  • GET/api/v1/pedidos/{numero}

    Um pedido pelo número. Permissão: pedidos:ler

  • PATCH/api/v1/pedidos/{numero}

    Muda status (novo, aceito, preparo, pronto, saiu, entregue, cancelado) e/ou marca pago. Permissão: pedidos:escrever

    { "status": "preparo", "pago": true }
  • GET/api/v1/clientes?limite=100

    Clientes com total gasto e último pedido. Permissão: clientes:ler

Exemplo: marcar um produto como esgotado

curl -X PATCH http://localhost:3000/api/v1/produtos/ID_DO_PRODUTO \
  -H "Authorization: Bearer cw_..." \
  -H "Content-Type: application/json" \
  -d '{ "esgotado": true }'

Webhooks

Em Integrações → n8n, Zapier e Make, o dono informa uma URL https. A cada evento enviamos um POST:

POST https://sua-url
X-Cardapio-Evento: pedido.criado
X-Cardapio-Assinatura: <HMAC-SHA256 do corpo, em hex, com o segredo>

{ "evento": "pedido.criado", "enviado_em": "...", "dados": { "numero": 42, "status": "novo", "total_centavos": 5990, ... } }

Eventos: pedido.criado, pedido.status, pedido.pago, assinatura.criada. Confira a assinatura antes de confiar no corpo.

ChatGPT e Claude (MCP)

Cada loja tem um servidor MCP (HTTP, sem estado) em http://localhost:3000/api/mcp/SLUG. Ferramentas: resumo de vendas, listar pedidos, mudar status, listar produtos, pausar produto, alterar preço, criar cupom, abrir e fechar a loja.

Seu cardápio no ar ainda hoje.