We use cookies to improve your experience and analyze site traffic. By clicking “Accept”, you agree to our use of cookies.

Learn more about our privacy practices
Corvo
English

Introdução

Emita NFS-e de empresas MEI e do Simples Nacional por uma API REST ou por um agente de IA (MCP): cálculo de tributos, várias empresas e webhooks.

A API da Corvo permite cadastrar empresas (MEI, Simples Nacional e outros regimes), enviar certificados A1, calcular tributos antes de emitir, emitir notas fiscais de serviço (NFS-e) e acompanhar o ciclo de vida completo por webhooks. Agentes de IA como Claude Code, Cursor e Codex fazem o mesmo pelo servidor MCP (veja Agentes de IA).

Quickstart

bash

export BASE_URL='https://api.corvo.tech/v1'
export CORVO_API_KEY='corvo_test_sua_chave'

curl "$BASE_URL/companies" -H "X-API-Key: $CORVO_API_KEY"

Todos os caminhos desta documentação são relativos a BASE_URL (https://api.corvo.tech/v1).

Formatos de resposta

Sucessos REST usam { "data": ... } e listagens acrescentam pagination. Datas JSON são strings ISO 8601; campos opcionais podem estar ausentes e campos anuláveis podem ser null.

OperaçãoFormato JSON
Criar, consultar ou atualizar empresa{ "data": Company }
Listar empresas{ "data": Company[], "pagination": {...} }
Excluir empresa{ "data": null }
Upload / listagem de certificados{ "data": Certificate } / listagem paginada
Emitir / consultar nota{ "data": Invoice }
Listar notas e eventos{ "data": [ ... ], "pagination": {...} }
URL de download / email{ "data": ... }
Webhooks e entregas{ "data": ... } ou listagem paginada
Plano e cotas{ "data": ... }

Os recursos vêm direto em data: uma nota é data, uma lista é data[]. Leia data uma única vez. PDF/XML, redirects, OAuth, MCP/JSON-RPC, health checks e respostas 204 mantêm seus formatos próprios.

Todas as operações

Todos os caminhos abaixo incluem o prefixo padrão. Os status representam o sucesso conforme a matriz de contratos HTTP; erros seguem o formato ERROR_* descrito em Erros.

MétodoCaminhoFunçãoSucesso
POST/v1/companiesCadastrar empresa201
GET/v1/companiesListar empresas200
GET/v1/companies/:idConsultar empresa200
PATCH/v1/companies/:idAtualizar empresa200
DELETE/v1/companies/:idExcluir empresa200
POST/v1/companies/:companyId/certificatesEnviar certificado201
GET/v1/companies/:companyId/certificatesListar certificados200
DELETE/v1/companies/:companyId/certificates/:certIdRevogar certificado204
POST/v1/invoicesSolicitar emissão202
POST/v1/invoices/batchesSolicitar a emissão de até 50 notas202
POST/v1/invoices/calculateCalcular tributos sem emitir200
GET/v1/invoicesListar notas200
GET/v1/invoices/:idConsultar nota200
GET/v1/invoices/:id/xmlBaixar XML200
GET/v1/invoices/:id/pdfBaixar PDF200
GET/v1/invoices/:id/eventsConsultar histórico200
POST/v1/invoices/:id/download-urlGerar URL assinada200
POST/v1/invoices/:id/emailSolicitar envio de email202
POST/v1/invoices/:id/cancelCancelar nota200/202
GET/v1/webhooksListar configurações200
POST/v1/webhooksCadastrar webhook201
DELETE/v1/webhooks/:idExcluir webhook200
POST/v1/webhooks/:id/testEnviar evento de teste200
GET/v1/webhooks/deliveriesListar entregas200
GET/v1/webhooks/deliveries/statsConsultar estatísticas200
POST/v1/webhooks/deliveries/:id/retryAgendar nova tentativa200
GET/v1/billing/planConsultar plano e consumo200
GET/v1/billing/usageConsultar disponibilidade e cotas200
POST/v1/billing/upgradeAgendar troca de plano200
POST/v1/billing/downgradeAgendar mudança de plano200
GET/v1/plansListar preços dos planos (público)200
GET/v1/plans/:slugConsultar o preço de um plano (público)200
GET/v1/plans/quoteRecomendar um plano para um volume (público)200

IDs nos caminhos representam identificadores dos recursos retornados pela API. Guarde-os como strings; não use CNPJ no lugar de um :id.

Sequência de integração

  • Obtenha uma chave test com escopo adequado — cadastro de empresa/certificado exige full_access; uma chave invoices_read_write pode emitir com cadastro prévio.
  • POST /v1/companies — cadastre a empresa com CNPJ, regime e município fiscal (municipalityCode); configure defaultServiceCode para simplificar as notas.
  • Em live, envie o certificado válido correspondente ao CNPJ (POST /v1/companies/:companyId/certificates). A inscrição municipal é opcional: informe só se o município a registrou no cadastro nacional.
  • POST /v1/invoices — use companyTaxId (CNPJ da empresa) e solicite a emissão com Idempotency-Key estável por operação de negócio e guarde data.id (ambiente live exige prontidão da empresa).
  • Acompanhe o ciclo por GET /v1/invoices/:id e webhooks assinados — a emissão é assíncrona.
  • Aguarde os documentos ficarem prontos para gerar a URL e solicitar o email; confira o estado do email separadamente.