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.
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. Seu sistema cria a solicitação
- 2. MaisDOC responde 202 com o ID
- 3. Consulta nos provedores e órgãos
- 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ódigo | Documento | Esfera | Parâmetros |
|---|---|---|---|
| CNDT | Certidão Negativa de Débitos Trabalhistas | Federal | documento (CPF/CNPJ) |
| CND_FEDERAL | CND Federal (Receita/PGFN) | Federal | documento (CPF/CNPJ), data_nascimento (PF) |
| CRF_FGTS | Regularidade do FGTS | Federal | cnpj |
| PROTESTO | Certidão de Protesto | Cartorial | documento, uf, municipio (opcional) |
| MATRICULA | Certidão de Matrícula do Imóvel | Cartorial | uf, municipio, cartorio_cns, numero_matricula |
| TJ_CIVEL | Distribuição Cível Estadual | Estadual | documento, nome, uf, comarca |
| IPTU_DEBITOS | Certidão de Débitos de IPTU | Municipal | uf, municipio, inscricao_imobiliaria |
Consultar status
GET /v1/solicitacoes/{id}
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
| 400 | parametros_invalidos | Campo obrigatório ausente ou formato incorreto |
| 401 | nao_autorizado | Chave ausente, inválida ou revogada |
| 402 | saldo_insuficiente | Sem saldo ou limite pós-pago |
| 409 | requisicao_duplicada | Mesma Idempotency-Key com conteúdo diferente |
| 422 | tipo_nao_suportado | Tipo de documento indisponível para a UF/município |
| 429 | limite_excedido | Muitas 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.
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"}}]}'
