Consulta por Aderência

Fluxo de integração com o Bureau de Faces da Certiface, que permite validar identidades de forma rápida e segura, combinando biometria facial e análises de risco para prevenir fraudes.

Certiface REST API

Sumário


Introdução

A finalidade da API Certiface/Bureau de Faces é identificar biometricamente o cliente na base do Certiface, informando os dados: foto, CPF, nome e data de nascimento.
Para isso, é necessário que seja feita a autenticação do operador que irá executar a validação e, em seguida, a identificação dele.

O Certiface REST API possui os seguintes métodos:

  1. Autenticação
  2. Certiface

Visão geral

Fluxo base para validação biométrica.


❗️

É bom saber!

O endereço https://hml.certiface.com.br/CertiFaceWS/rs/operador/auth deverá ser utilizado apenas
para o desenvolvimento e homologação da integração.
Para acessar o ambiente de produção, esse endereço deverá ser substituído por:
https://www.certiface.com.br/CertiFaceWS/rs/operador/auth


Método Autenticação

O objetivo do método é autenticar o usuário do sistema e obter o token que será utilizado como chave criptográfica para acessar a chamada biométrica (método Certiface).

A resposta retorna em JSON com o token e a data/hora de expiração.

⚠️

O token expira em 30 minutos.

Request

POST https://hml.certiface.com.br/CertiFaceWS/rs/operador/auth

content-Type: application/x-www-form-urlencoded

body:

login=login
senha=md5Password

Parâmetros

ParâmetroDescrição
loginLogin do operador do Certiface
senhaSenha criptografada em MD5
⚠️

Por segurança, não utilize encoders MD5 online.

Gerar hash MD5 em Linux

echo -n "suasenha" | md5sum
fb8da69afd458b1b3b4dec5194c564d6

Site de apoio

Response

Retorno 200 OK
content-type: application/json

body:

{
  "token": "WdCFs9ytXJC52RWV5jmynEIKVd0xpKH6JSi7HVeoMz8",
  "expires": "01/01/2021 11:11:01"
}
ParâmetroDescrição
tokenToken para gerar o hash de autorização
expiresData de expiração do Token

Retorno 400
Requisição mal formada ou dados incorretos.

Retorno 401
Não autorizado.

Retorno 403
Sem permissão.


Método Certiface

O objetivo é validar biometricamente o cliente, podendo ocorrer o cadastro quando o cliente não estiver na base de dados do Certiface. Além da validação biométrica, também estão disponíveis (sob demanda) validações em outras bases de dados.

O retorno apresenta o status da transação e o resultado da validação biométrica, auxiliando na decisão de aprovar, revisar ou reprovar o cliente.

Request

POST https://comercial.certiface.com.br/CertiFaceWS/rs/certiface/consulta-aderencia

Content-Type: multipart/form-data

Headers

ParâmetroDescrição
AuthorizationLogin
Hash de autorização (gerado utilizando SHA256)
Data e hora de expiração (retornado pelo método Autenticação como expires)
Exemplo: login;dBCOXryPKKnsHid9d6JZpNP8W0946PL5ymOxypX88NU;01/01/2021 11:01:01
DateData e Hora da requisição, no formato: dd/MM/yyyy HH:mm:ss

Exemplo:

Authorization: login;UUTKyf8qcxvvHs6M_ueOmoEFwYxvXE4DAeULKeoHr3o;
Date: 04/12/2025 17:01:19

Atenção especial ao cabeçalho da requisição, header Authorization:

  • Este header é composto do login do usuário, hash de autorização e data/hora de expiração (separados pelo caractere ";").
  • A data e hora de expiração são retornadas pelo método Autenticação.
  • O hash de autorização deve ser gerado utilizando o algoritmo SHA256 a partir do tipo do método (POST) + URL + data_e_hora_de_expiração como texto base e o token criptográfico gerado no método Autenticação como chave.

Exemplo da chamada do método Certiface:

var verb = 'POST';
var pathCertiface = '/rs/certiface/consulta-aderencia';
var expires = '04/10/2025 14:15:35';
var login = 'login'
var token = 'WdCFs9ytXJC52RWV5jmynEIKVd0xpKH6JSi7HVeoMz8';
 
var textToSign = (verb + pathCertiface + expires);	// Concatena o texto
var hash = CryptoJS.HmacSHA256(textToSign, token);	// Gera hash SHA256
 
var hashInBase64Safe = hashInBase64.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, '');	// Converte em base64 Safe
var signature = login + ';' + hashInBase64Safe + ';' + expires;	// Concatena a chave da assinatura
 
// Ex signature: login;dBCOXryPKKnsHid9d6JZpNP8W0946PL5ymOxypX88NU;04/10/2025 14:15:35

Body

ParâmetroDescrição
cpfIdentificador único do cliente
nome (Opcional)Nome do cliente (deve conter no mínimo dois nomes, ex: "Felipe Augusto")
nascimento (Opcional)Data de nascimento do cliente, no formato "dd/mm/yyyy"
imagemImagem contendo a face do cliente. A imagem pode ser enviada em base64 ou em formato "file".

Exemplo:

cpf: "00000014141"
nome: "Nome Completo"
nascimento: "01/01/2001"
imagem: "/9j/4AAQSkZJRgABAg.....VDc4DGpaKuf/9k="

Site de Apoio

Response

Retorno 200 OK

Exemplo 1: Transação efetuada com sucesso

content-type: application/json

body:

{
  "certifaceID": {
    "codigo": 201,
    "aprovado": true,
    "conhecido": false,
    "protocolo": "2026233477187",
    "score_biometrico": 0.0
  }
}

Importante!

O serviço da Serpro é opcional e pode ser habilitado ou desabilitado. Caso o serviço esteja desabilitado, o objeto referente a ele será omitido do retorno da API.

Exemplo 2: Transação efetuada com sucesso com Serpro

Retorno 200 OK

content-type: application/json

body:

{
  "certifaceID": {
    "codigo": 201,
    "aprovado": true,
    "conhecido": false,
    "protocolo": "2026233477187",
    "score_biometrico": 0.0,
    "serpro": {
      "codigo": 200,
      "causa": "Validacao positiva",
      "score": 0.95203865
    }
  }
}

Detalhes código/causa Serpro

ValorDescrição
200Transação efetuada com sucesso.
300Validação negativa. Comparação biométrica realizada com baixa similaridade.
450Falha na comunicação ou tratamento da resposta da Serpro.

Detalhamento da resposta:
Tabela "serpro"

ParâmetroTipoDescrição
codigoNúmero inteiroCódigo de status. Consulte "Detalhes código/causa Serpro"
causatextoDescrição do status e detalhamento de erros
scoreNúmero decimalPontuação da validação da foto-documento versus base-Serpro de 0.0 a 1.0, retornado apenas quando executado
🚧

Homologação

Em homologação, os retornos positivo e negativo da validação Serpro
estão limitados a um conjunto específico de CPFs de teste. Qualquer outro CPF
retorna Serpro não encontrado.

Consulte a lista de CPFs de teste

Retorno positivo (validação positiva)

CPF
15929792038
25178629078
34963067005
44707559077
57742988097

Retorno negativo (validação negativa)

CPF
69680042081
77571154006
80277279011
91995827088
07034479046

Demais CPFs

Qualquer CPF fora das listas acima retorna Serpro não encontrado.


Retorno 201 OK

Exemplo 3: Cadastro com sucesso

content-type: application/json

body:

{
  "certifaceID": {
    "codigo": 201,
    "aprovado": true,
    "conhecido": false,
    "protocolo": "10260002605634"
  }
}

Retorno 401

Exemplo 4: Imagem recusada

Este retorno ocorre quando a imagem enviada não atende aos requisitos mínimos de qualidade ou formato exigidos para processamento.

Recomendações de qualidade de imagem:

  • Resolução de pelo menos 640 x 480 px (VGA) ou 320 x 480 (quando vertical recortada)
  • Tamanho até 1 MB
  • Formato JPG/JPEG
  • Sem redimensionamento (alargar ou reduzir)
  • Sem edição ou outros elementos (imagem limpa, sem tarjas, textos, filtros)
  • Qualidade/compressão mínima de 85% (sem artefatos ou perda excessiva de qualidade)
  • O recorte deve respeitar as proporções da face e as dimensões mínimas exigidas para a imagem

content-type: application/json

body:

{
  "certifaceID": {
    "protocolo": "209901234567",
    "codigo": 401
  }
}

Retorno 501

Exemplo 5: Erro interno

content-type: application/json

body:

{
  "certifaceID": {
    "protocolo": "209901234567",
    "codigo": 501
  }
}

Detalhamento da resposta:
Tabela "certifaceID"

ParâmetroTipoDescrição
codigoNúmero inteiroCódigo de status. Consulte tabela "certifaceID.codigo"
aprovadoBooleanoTrue para transação com validação positiva na base biométrica. False indica alta possibilidade de fraude ou erro
conhecidoBooleanoTrue quando o usuário já está registrado na base. False indica cadastro recente ou com baixa confiança
protocolotextoProtocolo de identificação da transação
score_biometricoNúmero inteiroPontuação da validação com o registro da base Certiface em certificação, retorna negativo em caso de certificação negativa. Valor de -100.0 a 100.0 (retorna 0 quando é cadastro)
📢

Observação:

Os códigos 202 e 212 não se aplicam à Base Transacional, uma vez que essa base não possui cadastro com alerta.

Tabela "certifaceID.codigo"

ValorDescrição
201Cadastro com sucesso.
202Cadastro com pendência.
203Certificação positiva.
204Certificação negativa.
212Cadastro com risco.
401Erro de imagem recusada (face não encontrada ou erro de qualidade da imagem)
501Erro interno.

Retorno 200 OK - Erros de validação

Observação: O formato do JSON de retorno para erros de validação é diferente.

Exemplo 6: Erro de validação de dados de entrada

content-type: application/json

body:

{
  "status": "ERR",
  "resultado": "ERR",
  "protocolo": "209901234567",
  "msg": "INVALID"
}

Exemplo 7: Erro de usuário menor de idade

NOTA: Quando o bloqueio por idade estiver habilitado, conforme configuração definida pelo cliente, usuários menores de idade terão a solicitação bloqueada, retornando o erro abaixo. Por padrão, esse tratamento não está habilitado.

content-type: application/json

body:

{
  "status": "ERR",
  "resultado": "BMI",
  "protocolo": "209901234567",
  "msg": "USER IS UNDER 13: [12]"
}

Tabela "certifaceErro"

ParâmetroTipoDescrição
protocolotextoProtocolo de identificação da transação
statustextoStatus da transação, consulte tabela "certifaceErro.status"
resultadotextoSigla do resultado, consulte tabela "certifaceErro.resultados"
msgtextoMensagem de detalhamento da transação - pode não ser retornado
similareslistaNão utilizado neste cenário - pode não ser retornado

Tabela "certifaceErro.status"

ParâmetroDescrição
ERRErro ao realizar transação

Tabela "certifaceErro.resultados"

ParâmetroDescrição
ERRErro no processamento. Consulte a mensagem (quando disponível) para maiores informações
BMIBloqueio de menor de idade (configurável)
Código HTTPDescrição
400 Bad RequestRequisição form-data mal formada.
401 UnauthorizedNão autorizado (credencial de acesso não informada, inválida ou expirada).