Nesta página

API Pública v1

Documentação da API

A API REST do Comando1 permite que sistemas externos leiam e manipulem dados da sua empresa de forma segura. Para integrações de sistema, autentique com uma chave de API estática (abaixo). Para conectar um assistente de IA, o servidor MCP também aceita OAuth 2.1 — nesse caso você cola a URL e autoriza pelo navegador, sem gerar chave.

URL base

https://api.comando.one/v1

Formato

REST / JSON

Autenticação

API Key (Bearer)

Início rápido

Em menos de 2 minutos você faz sua primeira chamada.

1

Crie uma chave de API

Acesse Configurações → API Keys dentro da plataforma e crie uma chave com as permissões desejadas.

2

Guarde em local seguro

A chave cmd_live_... é exibida uma única vez. Use variáveis de ambiente — nunca no código-fonte.

3

Primeira chamada

cURL
curl https://api.comando.one/v1/me \
  -H "Authorization: Bearer cmd_live_sua_chave_aqui"
Resposta JSON
{
  "company": {
    "id": "18fc359b-a460-4d5f-abfb-f493f153430f",
    "name": "Acme Serviços Ltda",
    "trade_name": "Acme",
    "document": "12345678000195"
  },
  "api_key": {
    "name": "Integração ERP",
    "scopes": ["customers:read", "invoices:read"],
    "last_used_at": "2026-06-04T18:17:47.222+00:00"
  }
}

Autenticação

Envie sua chave em um dos dois headers — ambos são equivalentes:

Opção A — Authorization

cURL
curl https://api.comando.one/v1/me \
  -H "Authorization: Bearer cmd_live_sua_chave_aqui"

Opção B — x-api-key

cURL
curl https://api.comando.one/v1/me \
  -H "x-api-key: cmd_live_sua_chave_aqui"

⚠️ Segurança

  • • Nunca exponha a chave no frontend ou código-fonte.
  • • Use variáveis de ambiente: COMANDO_API_KEY=cmd_live_...
  • • Chaves não expiram automaticamente — revogue imediatamente se comprometidas.
  • • Crie chaves com o mínimo de permissões necessário (princípio do mínimo privilégio).

SDK & Bibliotecas

Bibliotecas oficiais publicadas no npm para acelerar a integração.

Instalação do SDK

bash
npm install @comando.one/sdk

Uso

TypeScript
import { ComandoApi } from "@comando.one/sdk";

const api = new ComandoApi({ apiKey: "cmd_live_..." });

const me = await api.me();
const clientes = await api.customers.list({ status: "ativo" });
const todos = await api.customers.listAll();          // pagina sozinho
const cobranca = await api.charges.create({ invoice_id, method: "pix" });
Exemplos prontos no GitHub

Aplicações completas usando o SDK e o MCP — checkout, portal do cliente, chatbot, conciliação, NFS-e em lote, webhooks e mais. Veja github.com/comando-one/api-examples.

MCP — Model Context Protocol

Conecte assistentes de IA (Claude Desktop, agentes, chatbots) ao seu ERP. As ferramentas operam a API real, respeitando os scopes da chave; ações destrutivas exigem confirmação. Há duas formas de usar:

1. Local (stdio) — via npm

Adicione ao claude_desktop_config.json:

JSON
{
  "mcpServers": {
    "comando": {
      "command": "npx",
      "args": ["-y", "@comando.one/mcp-server"],
      "env": { "COMANDO_API_KEY": "cmd_live_..." }
    }
  }
}

2. Remoto (streaming) — sem instalar nada

Endpoint MCP Streamable HTTP em https://api.comando.one/mcp. Autentique com Authorization: Bearer cmd_live_….

cURL
curl https://api.comando.one/mcp \
  -H "Authorization: Bearer cmd_live_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

No Claude Desktop (conector remoto):

JSON
{
  "mcpServers": {
    "comando-remoto": {
      "type": "http",
      "url": "https://api.comando.one/mcp",
      "headers": { "Authorization": "Bearer cmd_live_..." }
    }
  }
}

💬 Chatbot de exemplo

Um chatbot funcional (Gemini + MCP remoto) está disponível nos exemplos — converse em português e ele opera o ERP. Veja o exemplo chatbot/ no repositório github.com/comando-one/api-examples.

Permissões (scopes)

Cada chave é criada com permissões específicas no formato módulo:ação. Sem o scope exigido, a API retorna 403.

Documentos

ScopeDescrição
documents:readLer anexos (boleto, guia, NF) e extrair valor, vencimento e emitente

Clientes

ScopeDescrição
customers:readConsultar clientes e contatos
customers:writeCriar novos clientes e editar dados
customers:deleteExcluir clientes permanentemente

Propostas

ScopeDescrição
proposals:readConsultar propostas comerciais
proposals:writeCriar e editar propostas
proposals:sendEnviar propostas por e-mail
proposals:deleteExcluir propostas

Faturas / Cobranças

ScopeDescrição
invoices:readConsultar faturas e cobranças
invoices:createGerar boletos, Pix e cobranças
invoices:cancelCancelar cobranças em aberto
invoices:sendEnviar segunda via da fatura por e-mail ao cliente
invoices:settleRegistrar o recebimento de uma parcela (baixa total ou parcial)
invoices:deleteExcluir faturas permanentemente (itens e cobranças vinculadas)

NFS-e

ScopeDescrição
nfse:readListar e visualizar notas fiscais
nfse:emitirEmitir notas fiscais de serviço
nfse:cancelarCancelar notas fiscais emitidas

Financeiro

ScopeDescrição
finance:readConsultar lançamentos e extratos
finance:writeLançar e editar movimentações
finance:deleteExcluir lançamentos

Contratos

ScopeDescrição
contracts:readConsultar contratos
contracts:writeCriar e editar contratos
contracts:deleteExcluir contratos

Fornecedores

ScopeDescrição
suppliers:readConsultar fornecedores
suppliers:writeCriar e editar fornecedores
suppliers:deleteExcluir fornecedores

Serviços

ScopeDescrição
services:readConsultar o catálogo de serviços
services:writeCriar e editar serviços
services:deleteExcluir serviços

Despesas

ScopeDescrição
expenses:readConsultar despesas
expenses:writeLançar e editar despesas
expenses:deleteExcluir despesas

Contas a Pagar

ScopeDescrição
purchase_invoices:readConsultar contas a pagar
purchase_invoices:createLançar contas a pagar
purchase_invoices:cancelCancelar contas a pagar
purchase_invoices:deleteExcluir contas a pagar definitivamente

Cobranças / Gateway

ScopeDescrição
charges:readListar e visualizar cobranças geradas via API
charges:createGerar Pix, boleto ou checkout de pagamento
charges:cancelCancelar cobranças em aberto
charges:refundDevolver (estornar) cobranças Pix pagas

Webhooks

ScopeDescrição
webhooks:manageRegistrar e configurar URLs de callback para eventos de pagamento

Contas bancárias

ScopeDescrição
bank_accounts:readConsultar contas bancárias (somente leitura, sem dados sensíveis)

Pagamentos a Fornecedor

ScopeDescrição
payouts:readListar e visualizar pagamentos a fornecedores
payouts:createExecutar ou agendar pagamentos Pix e boleto a fornecedores
payouts:cancelCancelar pagamentos agendados

Split de Pagamentos

ScopeDescrição
split:listConsultar regras, execuções e repasses de split
split:createCriar regras de divisão de recebimentos
split:updateEditar regras, liberar fatias e estornar repasses
split:deleteRemover regras de split

Caixa de Entrada

ScopeDescrição
inbox:readVer os e-mails recebidos e os boletos/notas extraídos deles
inbox:updateDevolver a mensagem ao processamento ou arquivá-la

Conciliação Bancária

ScopeDescrição
reconciliation:readVer lançamentos do extrato e os períodos de conciliação
reconciliation:writeDesconciliar um lançamento já casado (a conciliação em si é feita no aplicativo)

Cartão de Crédito

ScopeDescrição
cards:readVer as faturas de cartão, com fechamento, vencimento e total

DDA

ScopeDescrição
dda:readVer os boletos que o banco avisou por DDA e o status de casamento
dda:triageArquivar um boleto do DDA ou devolvê-lo à fila

Recorrentes

ScopeDescrição
recurring:readVer as regras que geram despesas e contas a pagar recorrentes
recurring:updatePausar ou retomar uma regra recorrente

Insumos

ScopeDescrição
insumos:readConsultar o catálogo de insumos
insumos:writeCriar e editar insumos
insumos:deleteExcluir insumos

Notificações

ScopeDescrição
notifications:readVer as notificações geradas para os usuários da empresa
notifications:updateMarcar notificação como lida ou não lida

Auditoria

ScopeDescrição
audit:readConsultar a timeline de alterações de uma entidade (audit_logs)

Lembretes

ScopeDescrição
reminders:listConsultar lembretes e resumos agendados
reminders:createCriar lembretes e resumos recorrentes da empresa
reminders:updateEditar, ativar e pausar lembretes
reminders:deleteExcluir lembretes

Erros

A API usa HTTP padrão e sempre retorna { "error": "..." } no corpo — inclusive quando quem falha é um terceiro. Falha de dependência externa é 424, nunca 502: a borda da Cloudflare troca o corpo de todo 502/504 pela página HTML dela, e o motivo do erro não chegaria até você.

StatusCódigoDescrição
400Bad RequestParâmetros inválidos ou ausentes na requisição.
401UnauthorizedChave não fornecida, inválida ou revogada.
403ForbiddenA chave não possui o scope necessário para este endpoint.
404Not FoundRecurso não encontrado.
405Method Not AllowedMétodo HTTP não suportado nesta rota.
409ConflictConflito de estado (ex: cancelar fatura já cancelada) ou exclusão bloqueada por registros vinculados (ex: cliente com faturas, fornecedor com contas a pagar).
422UnprocessableA requisição está correta, mas o conteúdo não pode ser processado — ex.: NFS-e rejeitada pelo fisco (o corpo traz status: "rejeitada" e message) ou empresa sem NFS-e configurada.
424Failed DependencyA requisição estava correta, mas um terceiro falhou: o fisco, o banco, o gateway de pagamento. O motivo dele vem em error. A API nunca responde 502/504 — a borda substituiria o corpo pela página HTML dela e o motivo se perderia.
429Too Many RequestsRate limit excedido. Aguarde e tente novamente.
500Server ErrorErro interno no servidor.

Chave inválida (401)

JSON
{ "error": "API key inválida." }

Scope insuficiente (403)

JSON
{ "error": "A chave não possui o scope necessário: customers:read." }

Endpoints

Todas as respostas de listagem seguem o envelope { data: [...], meta: { page, per_page, total } }.

Autenticação

Retorna os dados da empresa e da chave autenticada. Ideal para verificar conectividade.

(qualquer chave válida)

Requisição

cURL
curl https://api.comando.one/v1/me \
  -H "Authorization: Bearer cmd_live_sua_chave_aqui"

Resposta — 200 OK

JSON
{
  "company": {
    "id": "18fc359b-a460-4d5f-abfb-f493f153430f",
    "name": "Acme Serviços Ltda",
    "trade_name": "Acme",
    "document": "12345678000195"
  },
  "api_key": {
    "name": "Integração ERP",
    "scopes": ["customers:read", "invoices:read"],
    "last_used_at": "2026-06-04T18:17:47.222+00:00"
  }
}

Campos

CampoTipoDescrição
company.iduuidID único da empresa
company.namestringRazão social
company.trade_namestring | nullNome fantasia
company.documentstringCNPJ (somente dígitos)
api_key.namestringNome da chave
api_key.scopesstring[]Permissões da chave
api_key.last_used_atISO 8601 | nullÚltimo uso
api_key.multi_companybooleanSe a chave acessa mais de uma empresa
api_key.accessible_company_idsuuid[]Empresas acessíveis pela chave
Multi-empresa: uma chave pode acessar várias empresas. Liste-as em GET /v1/companies e escolha o tenant de cada request com o header X-Company-Id. Omitido = empresa padrão da chave.

Clientes

Fornecedores

Serviços

Despesas

Contas a Pagar

Propostas

Contratos

Faturas / Cobranças

Financeiro

Relatórios, Auditoria & Categorias

NFS-e

Catálogos / Lookups

Listagens de referência para descobrir os IDs exigidos em writes (ex: nature_id em movimentações, category_id em despesas). Read-only.

Gateway de Pagamentos

Use a API como um gateway de pagamentos: gere cobranças (Pix, boleto, checkout) e seja notificado quando o pagamento for confirmado — sem depender do portal do banco. O provider é determinado automaticamente pela configuração da empresa.

Pix (QR dinâmico)

QR code e copia-e-cola em segundos.

Boleto bancário

Código de barras e linha digitável.

Webhooks HMAC

Notificação assinada quando o pagamento é confirmado.

Cobranças

Webhooks

Registre uma URL para receber notificações quando o status de cobranças mudar. Cada notificação inclui o header x-signature com assinatura HMAC-SHA256.

Disparar evento de teste

Cole a URL do seu endpoint, escolha um evento e clique em enviar. O Comando1 fará o POST assinado direto para o seu servidor e mostrará a resposta aqui.

Deve ser https://. URLs internas não são permitidas.

Use o mesmo secret configurado no seu servidor.

Validar assinatura (HMAC-SHA256)

Veja o corpo exato que o Comando1 enviaria e calcule a assinatura esperada — útil para validar seu código de verificação antes de configurar o endpoint.

{"event":"charge.paid","charge":{"id":"chg_demo","provider":"inter","invoice_id":"inv_demo","customer_id":"cus_demo","amount":250,"method":"pix","status":"paid","status_raw":"DEMO"},"timestamp":"2026-09-11T02:19:42.564Z"}

Como verificar no seu servidor:

const expected = hmacSHA256(secret, rawBody)
const ok = timingSafeEqual(expected, req.headers["x-signature"])

Exemplo de payload recebido

JSON
// POST para https://seu-sistema.com/webhooks/pagamento
// Headers:
//   Content-Type: application/json
//   x-event: charge.paid
//   x-signature: <hmac-sha256 do payload com seu secret>

{
  "event": "charge.paid",
  "charge": {
    "id": "a3d2f1e0-1234-5678-abcd-ef0123456789",
    "provider": "inter",
    "invoice_id": "inv-uuid",
    "status": "paid",
    "status_raw": "RECEBIDO"
  },
  "timestamp": "2026-06-04T15:30:00.000Z"
}

Verificar assinatura (Node.js)

JS
// Node.js — verificar assinatura HMAC-SHA256
import crypto from 'crypto';

app.post('/webhooks/pagamento', (req, res) => {
  const sig = req.headers['x-signature'];
  const payload = JSON.stringify(req.body);
  const expected = crypto
    .createHmac('sha256', process.env.WEBHOOK_SECRET)
    .update(payload)
    .digest('hex');

  if (sig !== expected) return res.status(401).send('Assinatura inválida');

  const { event, charge } = req.body;
  if (event === 'charge.paid') {
    // Pagamento confirmado — liberar serviço
  }
  res.sendStatus(200);
});

Métodos de pagamento

Descubra quais formas de recebimento (Pix, boleto, checkout) estão ativas na empresa antes de criar uma cobrança.

Contas bancárias

Somente leitura. Dados sensíveis (agência, conta, chave Pix, documento do titular) são omitidos da API pública.

Caixa de Entrada

Somente leitura. Os e-mails que chegaram no endereço da empresa e os documentos (boleto, NF-e, guia) extraídos deles. A senha do PDF, o caminho no storage e o corpo completo do e-mail ficam fora da listagem — o corpo volta no detalhe da mensagem.

Conciliação bancária

Somente leitura. Lançamentos do extrato importado e os períodos de conciliação. O `raw_data` do banco fica fora: é payload cru, grande e sem uso para integração.

Faturas de cartão

Somente leitura. As faturas de cartão de crédito, com fechamento, vencimento, total e o boleto quando houver.

DDA

Somente leitura. Boletos que o banco avisou por DDA, com o status de casamento com uma conta a pagar.

Recorrentes

Somente leitura. As REGRAS que geram despesas e contas a pagar recorrentes — não os documentos gerados, que ficam em /v1/expenses e /v1/purchase-invoices.

Insumos

Somente leitura. O catálogo de insumos da empresa.

Notificações

Somente leitura. As notificações geradas para os usuários da empresa.

Pagamentos a Fornecedor

Pague ou agende Pix e boleto a fornecedores. O banco é escolhido pela integração ativa (Inter ou C6) ou pelo campo provider.

Split de Pagamentos

Divida automaticamente cada recebimento entre a empresa e seus fornecedores. Defina uma regra com beneficiários (percentual, fixo ou combinado); ao confirmar o recebimento, o sistema calcula as fatias e repassa via Pix. Eventos: split.calculated, repasse.released, repasse.paid, repasse.failed, repasse.reversed.

Formas de pagamento do fornecedor

Cadastre onde/como pagar cada fornecedor (Pix, transferência, boleto). Usado por supplier_payment_method_id nos payouts.

Rate Limiting

A API limita o número de requisições por chave por minuto para garantir estabilidade do serviço. O limite padrão é 60 requisições/minuto por chave de API.

Limite padrão

60 req/min

Quando excedido

429 Too Many Requests

Resposta quando o limite é excedido

{
  "error": "Rate limit excedido: 60 requisições por minuto. Tente novamente em 34 segundos."
}

• O contador é por chave de API e reinicia a cada minuto completo.

• O limite pode variar por chave — entidades com necessidade maior podem solicitar aumento em contato@comando.one.

• Implemente exponential backoff ao receber 429: aguarde e refaça a requisição após alguns segundos.

Pronto para integrar?

Acesse a plataforma, crie sua chave e comece a integrar em minutos.

Criar chave de API →