MaisDOC — Inteligência Documental

API MaisDOC

Integre seu CRM, ERP ou sistema jurídico à MaisDOC. Seu sistema envia a solicitação com os parâmetros de cada tipo de documento; a MaisDOC consulta os órgãos emissores e devolve o documento gerado e/ou o relatório de análise.

Base URL
https://api.maisdoc.com.br/v1
Formato
JSON · UTF-8 · REST
Entrega
Documento PDF + relatório de análise

Autenticação

Cada cliente recebe chaves próprias (sandbox e produção) pelo time MaisDOC. Envie no cabeçalho Authorization: Bearer <chave>. Nunca exponha a chave no navegador.

Limites de requisição

Cada chave pode solicitar até 60 emissões por minuto. As respostas trazem X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Ao exceder, a API responde 429 limite_excedido com Retry-After em segundos, sem cobrança. Reenvios com a mesma Idempotency-Key não contam no limite.

Fluxo assíncrono

  1. 1. Seu sistema cria a solicitação
  2. 2. MaisDOC responde 202 com o ID
  3. 3. Consulta nos provedores e órgãos
  4. 4. Webhook avisa; você baixa o resultado

Use o cabeçalho Idempotency-Key: repetir a mesma requisição nunca gera cobrança nem emissão em dobro.

Criar solicitação

POST /v1/solicitacoes
Authorization: Bearer <sua_chave>
Idempotency-Key: 7f1c2e9a-pedido-1234
Content-Type: application/json

{
  "referencia_externa": "CRM-2026-0042",
  "entrega": ["documento", "relatorio_analise"],
  "webhook_url": "https://seusistema.com/maisdoc/retorno",
  "itens": [
    { "tipo": "CNDT", "parametros": { "documento": "12345678000190" } },
    { "tipo": "MATRICULA", "parametros": {
        "uf": "SP", "municipio": "São Paulo",
        "cartorio_cns": "11.234-5", "numero_matricula": "98765" } }
  ]
}
HTTP/1.1 202 Accepted
{
  "id": "sol_01HZX8...",
  "status": "em_processamento",
  "itens": [
    { "id": "item_1", "tipo": "CNDT", "status": "na_fila", "prazo_previsto": "2026-10-29T18:00:00-03:00" },
    { "id": "item_2", "tipo": "MATRICULA", "status": "consulta_previa", "prazo_previsto": "2026-11-03" }
  ],
  "custo_estimado": { "moeda": "BRL", "valor": 0.00 }
}

Tipos de documento e parâmetros

Cada tipo exige campos específicos. Lista completa em GET /v1/tipos-documento.

CódigoDocumentoEsferaParâmetros
CNDTCertidão Negativa de Débitos Trabalhistas
Federal
documento (CPF/CNPJ)
CND_FEDERALCND Federal (Receita/PGFN)
Federal
documento (CPF/CNPJ), data_nascimento (PF)
CRF_FGTSRegularidade do FGTS
Federal
cnpj
PROTESTOCertidão de Protesto
Cartorial
documento, uf, municipio (opcional)
MATRICULACertidão de Matrícula do Imóvel
Cartorial
uf, municipio, cartorio_cns, numero_matricula
TJ_CIVELDistribuição Cível Estadual
Estadual
documento, nome, uf, comarca
IPTU_DEBITOSCertidão de Débitos de IPTU
Municipal
uf, municipio, inscricao_imobiliaria

Consultar status

GET /v1/solicitacoes/{id}

na_fila — Recebido e aguardando processamento
consulta_previa — Verificando disponibilidade junto ao órgão/cartório
em_emissao — Consulta em andamento no órgão emissor
concluido — Documento e/ou relatório disponível
pendencia — Faltam dados ou o órgão retornou exigência
falhou — Não foi possível emitir; não há cobrança do item

Resultado: documento e relatório de análise

Escolha em entrega: o documento oficial (PDF com hash), o relatório de análise (dados extraídos, resultado, risco e achados) ou ambos.

GET /v1/solicitacoes/sol_01HZX8.../itens/item_1
{
  "status": "concluido",
  "documento": {
    "url": "https://api.maisdoc.com.br/v1/arquivos/...pdf",
    "expira_em": "2026-11-05T00:00:00Z",
    "hash_sha256": "9b1f...",
    "emitido_em": "2026-10-29T14:12:00-03:00",
    "validade_ate": "2027-04-27"
  },
  "relatorio_analise": {
    "resultado": "negativa",
    "risco": "baixo",
    "achados": [],
    "dados_extraidos": { "nome": "EMPRESA EXEMPLO LTDA", "numero_certidao": "123456/2026" }
  }
}

Webhooks

Cadastre a URL em Integrações → Webhooks ou envie webhook_url na solicitação. Eventos: documento.concluido, documento.falhou e webhook.teste. Cada envio traz X-Maisdoc-Timestamp e X-Maisdoc-Signature: sha256=…, que é o HMAC-SHA256 de {timestamp}.{corpo} com seu segredo. Responda 2xx em até 10 segundos.

POST https://seusistema.com/maisdoc/retorno
X-Maisdoc-Event: documento.concluido
X-Maisdoc-Timestamp: 1730222400
X-Maisdoc-Signature: sha256=5a3c...
{
  "id": "evt_9f2c...",
  "evento": "documento.concluido",
  "criado_em": "2026-11-01T22:40:00Z",
  "dados": { "id": "sol_01HZX8...", "status": "concluido", "referencia_externa": "CRM-2026-0042",
             "arquivo": { "nome": "certidao.pdf", "sha256": "...", "url": "https://...", "expira_em_segundos": 600 } }
}
// Node.js
import crypto from "node:crypto";
const ts = req.headers["x-maisdoc-timestamp"];
const esperado = "sha256=" + crypto.createHmac("sha256", process.env.MAISDOC_WEBHOOK_SECRET)
  .update(`${ts}.${corpoBruto}`).digest("hex");
const ok = crypto.timingSafeEqual(Buffer.from(esperado), Buffer.from(req.headers["x-maisdoc-signature"]));

# Python
import hmac, hashlib
esperado = "sha256=" + hmac.new(segredo.encode(), f"{ts}.{corpo_bruto}".encode(), hashlib.sha256).hexdigest()
ok = hmac.compare_digest(esperado, assinatura)

Erros

400parametros_invalidosCampo obrigatório ausente ou formato incorreto
401nao_autorizadoChave ausente, inválida ou revogada
402saldo_insuficienteSem saldo ou limite pós-pago
409requisicao_duplicadaMesma Idempotency-Key com conteúdo diferente
422tipo_nao_suportadoTipo de documento indisponível para a UF/município
429limite_excedidoMuitas requisições; respeite o cabeçalho Retry-After

Sandbox

Ambiente de testes em https://sandbox.api.maisdoc.com.br/v1 com respostas simuladas, sem cobrança. Solicite suas chaves ao time comercial.

Solicitar acesso
AO VIVO

Teste a API agora

Consulta real do cadastro de CNPJ na Receita Federal. Sem cadastro e sem custo, limitado a 3 testes por hora.

Requisição equivalente na sua integração

curl -X POST https://api.maisdoc.com.br/v1/solicitacoes \
  -H "Authorization: Bearer <sua_chave>" \
  -H "Content-Type: application/json" \
  -d '{"itens":[{"tipo":"CNPJ_RECEITA","parametros":{"cnpj":"00000000000000"}}]}'