1. Visão geral
A API expõe um endpoint de consulta de falecidos
via HTTP GET. Os parâmetros são enviados na query string. A resposta segue
um envelope JSON consistente com os campos success, data,
meta e error.
https://api.falecidosdobrasil.com.br/v1/obitos
2. Autenticação
A API utiliza o header proprietário CNF-API-Authorization para autenticação. A chave de API deve ser enviada diretamente nesse header, sem prefixos adicionais.
CNF-API-Authorization
CNF-API-Authorization: SUA_API_KEY
Envie a chave diretamente, sem o prefixo Bearer ou qualquer outro.
?api_key=.... Além de não ser a forma implementada no código, isso pode expor a credencial em histórico, logs e ferramentas de observabilidade.
3. Fluxo da requisição
Método
A API aceita GET. Qualquer outro método retorna HTTP 405.
Autenticação
A chave é localizada nos headers e validada contra o cliente e o plano.
Autorização e limites
O cliente precisa estar ativo, o plano precisa
estar ativo e a feature consulta_imediata, quando definida, precisa
estar habilitada. Depois são conferidos limites por minuto, dia, mês e total.
Normalização
O nome é higienizado, convertido para maiúsculo e
tem tags/caracteres inválidos removidos. O CPF é normalizado para somente
dígitos. Datas precisam estar em YYYY-MM-DD.
Consulta e similaridade
Os filtros são aplicados sobre o nome, CPF, estado, cidade e data. A API ordena por similaridade e retorna apenas o registro mais relevante (maior pontuação).
Resposta
A saída é um envelope JSON. Quando não há resultado imediato e webhooks estão habilitados, a busca é registrada para tratamento manual (veja a seção Webhook).
4. Parâmetros
Todos são query parameters porque o endpoint é GET.
nomefalcpfdata_exataYYYY-MM-DD. Quando informada, substitui o filtro por intervalo.
data_iniYYYY-MM-DD.
data_fimYYYY-MM-DD.
estadofalcidadefal| Código | UF | Nome do Estado |
|---|
data_exata for enviada, a consulta usa
somente essa data. Caso contrário, data_ini e/ou data_fim podem
formar um intervalo. A API rejeita o período quando a data inicial é maior que a final.
5. Estrutura da resposta JSON
O envelope é padronizado. O campo data carrega
o registro de maior similaridade; meta traz os filtros
aplicados; error fica preenchido nas respostas de erro.
{
"success": true,
"data": {
"indice": 0,
"registro": {
"U_ID": 1,
"ID": 44940177,
"Cpf": 0,
"NomeFalecido": "LUIZ ALBERTO DA SILVA",
"DataNascimento": "-",
"NomeMae": "LUIZA CERBIA DA SILVA",
"NomePai": "-",
"DataFalecimento": "2018-12-28",
"Cartorio_OrigemFonte": "202",
"Cartorio_Codigo": 0,
"Livro": "-",
"Folha": "-",
"Termo": "-",
"DataLavramento": "-",
"Cidade": "Porto Ferreira",
"UF": "SP",
"cidade_id_cod": null,
"nome_cidade_cod": null,
"estado_id_cod": null,
"uf_cod": null,
"cidade_id_nome": null,
"nome_cidade_nome": null,
"estado_id_nome": null,
"uf_nome": null,
"cidade_resolvida": "Porto Ferreira",
"uf_resolvida": "SP"
},
"similaridade": 0.775,
"percentual": 77.5
},
"meta": {
"page": 1,
"limit": 10,
"count": 3,
"has_more": false,
"next_page": null,
"response_time_ms": 1.07,
"filters": {
"nomefal": "LUIZ ALBERTO DA SILVA",
"cpf": null,
"data_exata": null,
"data_ini": null,
"data_fim": null,
"estadofal": null,
"cidadefal": null
}
},
"error": null
}
{
"success": false,
"data": null,
"meta": [],
"error": {
"code": "INVALID_API_KEY",
"message": "API Key inválida."
}
}
similaridade representa a pontuação
de compatibilidade entre a consulta e o registro retornado. Quanto mais próximo de
1.0, maior a confiança na correspondência.
6. Rate limit e headers
A API contabiliza requisições por minuto, dia, mês e total, conforme o plano do cliente. Quando os limites estão definidos, a resposta de sucesso também pode trazer headers de consumo.
X-RateLimit-Limit-Minute
X-RateLimit-Remaining-Minute
X-RateLimit-Limit-Day
X-RateLimit-Remaining-Day
7. Códigos HTTP e erros
| HTTP | Código | Quando acontece |
|---|---|---|
| 401 | AUTH_REQUIREDINVALID_API_KEY |
Credencial ausente ou inválida. |
| 403 | CLIENT_BLOCKEDPLAN_INACTIVEFEATURE_NOT_ALLOWED
|
Cliente, plano ou funcionalidade não autorizados. |
| 405 | METHOD_NOT_ALLOWED |
Método diferente de GET. |
| 422 | VALIDATION_ERROR |
Parâmetros inválidos, principalmente CPF ou datas. |
| 429 | RATE_LIMIT_EXCEEDEDDAILY_QUOTA_EXCEEDEDMONTHLY_QUOTA_EXCEEDEDQUOTA_EXCEEDED
|
Limites de consumo atingidos. |
| 500 | DATABASE_CONNECTION_ERRORPROCEDURE_ERRORSTATE_LOOKUP_ERRORQUERY_ERROR
|
Falha interna de infraestrutura/processamento. |
8. Exemplos de integração
const API_URL = "https://api.falecidosdobrasil.com.br/v1/obitos";
const API_KEY = "SUA_API_KEY";
const params = new URLSearchParams({
nomefal: "NOME DA PESSOA",
estadofal: "25", // Código do estado (ex: 25 = São Paulo)
cidadefal: "3550308" // Código da cidade
});
const response = await fetch(`${API_URL}?${params}`, {
method: "GET",
headers: {
"CNF-API-Authorization": API_KEY,
"Accept": "application/json"
}
});
const result = await response.json();
if (!response.ok) {
console.error("Erro:", result.error);
throw new Error(result.error?.message || "Falha na API");
}
// result.data contém o registro de maior similaridade
console.log(result.data);
9. Webhook e busca manual
Quando a consulta não encontra nenhum registro na base imediata, o sistema automaticamente registra a solicitação para uma busca manual em diversos cartórios e outras fontes disponíveis. Se o registro for localizado dentro do prazo, um webhook é disparado para o endpoint cadastrado pelo cliente.
1. Consulta sem resultado imediato
A API retorna success: true com data: null e o campo
meta.busca_manual_registrada: true, indicando que a solicitação foi
enfileirada para investigação.
2. Pesquisa manual em cartórios
Nossa equipe realiza buscas em cartórios de registro civil, bases de dados públicos e outras fontes disponíveis. O prazo médio para conclusão é de 30 dias.
3. Registro localizado
Se o registro do falecido for encontrado dentro do prazo, um POST é enviado para o endpoint de webhook cadastrado, contendo os dados completos do registro.
4. Notificação no seu endpoint
O payload do webhook inclui o ID da consulta original, os dados do registro encontrado e o score de similaridade. Sua aplicação pode então processar a notificação automaticamente.
Exemplo de payload do webhook
{
"event": "registro_localizado",
"consulta_id": "a3f8c2e1-9b4d-4e7f-8a1c-5d6e7f8a9b0c",
"data": {
"NomeFalecido": "MARIA DA SILVA",
"Cpf": "12345678901",
"DataFalecimento": "2024-08-10",
"DataNascimento": "1955-01-14",
"NomeMae": "JOANA DA SILVA",
"NomePai": "JOAO DA SILVA",
"cidade_resolvida": "SAO PAULO",
"uf_resolvida": "SP",
"similaridade": 0.987
},
"timestamp": "2024-09-15T14:30:00Z"
}
10. Teste da API sem chamar o servidor
Este console executa uma simulação 100% local em JavaScript. Nenhuma API Key é enviada para a internet e nenhuma requisição real é feita. Use os códigos de estado e cidade abaixo para testar.