Integração Bureau

Este fluxo descreve a integração com o Bureau de Faces da CertiFace, que valida identidades por biometria facial de forma rápida e segura, ajudando a 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.


Ambientes

AmbienteBase URL
Homologaçãohttps://hml.certiface.com.br/CertiFaceWS/rs
Produçãohttps://www.certiface.com.br/CertiFaceWS/rs

É bom saber!
Os endereços de homologação devem ser utilizados apenas para o desenvolvimento e homologação da integração. Para produção, substitua hml.certiface.com.br por www.certiface.com.br.


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

Homologação

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

Produção

POST https://www.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

Site de apoio

Response

Retorno 200 OK
content-type: application/json

{
  "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
StatusDescrição
400Requisição mal formada ou dados incorretos.
401Não autorizado.
403Sem 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

Homologação

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

Produção

POST https://www.certiface.com.br/CertiFaceWS/rs/certiface

Content-Type: multipart/form-data

Headers

ParâmetroDescrição
Authorizationlogin;hash_de_autorização;data_hora_expiração
Exemplo: login;dBCOXryPKKnsHid9d6JZpNP8W0946PL5ymOxypX88NU;01/01/2021 11:01:01
DateData e hora da requisição, no formato: dd/MM/yyyy HH:mm:ss

Atenção especial ao header Authorization:

  • É composto por 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 (campo expires).
  • O hash de autorização deve ser gerado com o algoritmo SHA256, a partir do tipo do método (POST) + URL + data_e_hora_de_expiração como texto base, e o token retornado no método Autenticação como chave.

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 binário, "file")

Exemplo da chamada:

POST /CertiFaceWS/rs/certiface HTTP/1.1
Host: hml.certiface.com.br
Authorization: usuario;5S9wfiTrbvFQfCgSLy7tMN_EUHzAiQAE9ENcMTvX9Y;11/06/2015 18:24:35
Date: 11/06/2015 17:55:13
Cache-Control: no-cache
Content-Type: multipart/form-data;
boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="imagem"
/9j/4AAQSkZJRgABAQEBKwErAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYID……
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="cpf"
00000014141
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="nome"
NOME SOBRENOMES
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="nascimento"
01/01/1991
----WebKitFormBoundary7MA4YWxkTrZu0gW

Site de Apoio

Response

O formato do retorno depende da sua integração. Identifique-o pelos campos que você recebe na resposta:

Se a sua resposta contém...Consulte
aprovado, conhecido e score_biometricoRetorno por codID
score de 0 a 1000 e código de sucesso 200Retorno por classe de risco

Retorno por codID

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.

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
  }
}

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 decimalPontuaçã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 de códigos e recomendações

A tabela abaixo apresenta os códigos de retorno da API, suas respectivas descrições e a recomendação de ação, considerando também o campo conhecido quando aplicável.

CódigoDescriçãoConhecidoRecomendação
201Cadastro com sucesso—Revisar
202Cadastro com pendência—Revisar
203Certificação positivatrueAprovar
203Certificação positivafalseRevisar
204Certificação negativafalseRevisar
204Certificação negativatrueReprovar
212Cadastro com risco—Reprovar
401Imagem recusada (face não encontrada ou erro de qualidade da imagem)—Recapturar / Erro
501Erro interno—Reprocessar / Erro

Retorno por Classe de risco

Se a integração utiliza Classe de risco, expanda o item abaixo para ver o detalhamento do retorno.

Ver detalhamento do retorno por Classe de risco

A autenticação e a requisição do método Certiface (headers e body) são as mesmas descritas acima. A diferença está no retorno, que traz o score de risco (score) no lugar dos campos aprovado, conhecido e score_biometrico.

Use o codigo (status da transação) e o score para decidir se o cliente será aprovado, revisado ou reprovado. Quanto maior o score, maior o risco.

Retorno 200 OK

Exemplo 1: Transação efetuada com sucesso (codigo = 200)

content-type: application/json

body:

{
  "certifaceID": {
    "protocolo": "209901234567",
    "codigo": 200,
    "score": 400
  }
}

Exemplo 2: Imagem recusada (codigo = 401)

content-type: application/json

body:

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

Exemplo 3: Erro interno (codigo = 501)

content-type: application/json

body:

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

Tabela "certifaceID" (Classe de risco)

ParâmetroTipoDescrição
protocolotextoProtocolo de identificação da transação
codigoNúmero inteiroCódigo de status. Consulte tabela "certifaceID.codigo (Classe de risco)"
scoreNúmero inteiroScore de risco, de 0 (sem informação), 100 (baixo risco) a 1000 (alto risco)

Tabela "certifaceID.codigo" (Classe de risco)

ValorDescrição
200Transação efetuada com sucesso
401Erro de imagem recusada (face não encontrada ou erro de qualidade da imagem)
501Erro interno, falha ao processar transação

Erros de validação, menor de idade e códigos HTTP (400/401) seguem o mesmo formato descrito em Tratamento de erros.


Tratamento de erros

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).

Casos de uso e retornos esperados

Esta seção apresenta exemplos de retorno da API para os principais cenários de validação facial. Cada exemplo mostra a resposta completa e explica o que ela significa, para que você saiba como tratá-la na sua integração.

Para a ação recomendada em cada combinação de codigo e conhecido, consulte a Tabela de Recomendação.

📢

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

Retornos esperados por código

201: Cadastro com sucesso

Quando ocorre: quando o CPF e a face ainda não estão na base de biometria.

Retorno esperado:

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

Quando o retorno é 201, os campos conhecido e score_biometrico são enviados, mas, por se tratar de um primeiro cadastro, conhecido vem sempre como false e score_biometrico sempre como 0.0.

Recomendação: Revisar.

202: Cadastro com pendência

Quando ocorre: quando a face enviada já está cadastrada na base para outro CPF.

Retorno esperado:

{
  "certifaceID": {
    "codigo": 202,
    "aprovado": false,
    "conhecido": false,
    "protocolo": "00000000",
    "score_biometrico": 0.0
  }
}

Recomendação: Revisar.

203: Certificação positiva (conhecido = true)

Quando ocorre: quando a face e o CPF enviados já estão cadastrados na base e a face confere com o registro. O retorno vem com conhecido: true.

Retorno esperado:

{
  "certifaceID": {
    "codigo": 203,
    "aprovado": true,
    "conhecido": true,
    "protocolo": "00000000",
    "score_biometrico": 100.0
  }
}

Recomendação: Aprovar.

203: Certificação positiva (conhecido = false)

Quando ocorre: quando a face e o CPF já estão na base e a face confere com o registro, mas o cadastro é recente ou tem baixa confiança. O retorno vem com conhecido: false.

Retorno esperado:

{
  "certifaceID": {
    "protocolo": "202602568659",
    "codigo": 203,
    "aprovado": true,
    "conhecido": false,
    "score_biometrico": 89.8
  }
}

Recomendação: Revisar.

204: Certificação negativa (conhecido = true)

Quando ocorre: quando o CPF já está cadastrado na base com conhecido = true, mas a face enviada não confere com o registro desse CPF.

Retorno esperado:

{
  "certifaceID": {
    "codigo": 204,
    "aprovado": false,
    "conhecido": true,
    "protocolo": "00000000",
    "score_biometrico": -72.30
  }
}

Recomendação: Reprovar.

204: Certificação negativa (conhecido = false)

Quando ocorre: quando o CPF já está cadastrado na base com conhecido = false (cadastro recente ou com baixa confiança), mas a face enviada não confere com o registro desse CPF.

Retorno esperado:

{
  "certifaceID": {
    "codigo": 204,
    "aprovado": false,
    "conhecido": false,
    "protocolo": "00000000",
    "score_biometrico": -42.78
  }
}

Recomendação: Revisar.

212: Cadastro com risco

Quando ocorre: quando a face enviada já consta como restrita na base.

Retorno esperado:

{
  "certifaceID": {
    "codigo": 212,
    "aprovado": false,
    "conhecido": false,
    "protocolo": "00000000",
    "score_biometrico": 0.0
  }
}

Recomendação: Reprovar.

401: Falha de assessment

Quando ocorre: quando a imagem enviada não atende aos requisitos mínimos de qualidade ou formato, ou quando não é possível detectar uma face nela (falha de assessment).

Retorno esperado:

{
  "certifaceID": {
    "codigo": 401,
    "aprovado": false,
    "conhecido": false,
    "protocolo": "00000000",
    "score_biometrico": 0.0
  }
}

Recomendação: Recapturar a imagem. Consulte as recomendações de qualidade de imagem para evitar a recusa.


Exemplos de teste em homologação

🚧

Atenção

Os dados desta parte existem apenas no ambiente de homologação, que é segregado da base de produção, e servem exclusivamente para validar o fluxo da integração. Não os utilize em produção.

201: Cadastro com sucesso

Use um CPF e uma foto aleatórios:

202: Cadastro com pendência

Utilize os dados abaixo, pois essa face já está cadastrada para outro CPF.

203: Certificação positiva (conhecido = true)

Utilize os dados abaixo, pois essa face e esse CPF já estão cadastrados com conhecido = true.

  • CPF: 34386679081

  • Imagem:

    Imagem de teste para o retorno 203 com conhecido = true

203: Certificação positiva (conhecido = false)

Repita a mesma requisição realizada no teste do 201: Cadastro com sucesso, com o mesmo CPF e a mesma imagem. Como o cadastro já existe, será gerada uma certificação positiva com o campo conhecido definido como false.

204: Certificação negativa (conhecido = true)

Utilize os dados abaixo, pois esse CPF já está cadastrado com conhecido = true.

  • CPF: 34386679081

  • Imagem:

    Imagem de teste para o retorno 204 com conhecido = true

204: Certificação negativa (conhecido = false)

Utilize o mesmo CPF do teste do 201: Cadastro com sucesso, com uma imagem diferente da usada naquele cadastro.

  • CPF: o mesmo utilizado no cadastro com sucesso

  • Imagem:

    Imagem de teste para o retorno 204 com conhecido = false

212: Cadastro com risco

Utilize os dados abaixo, pois essa face já está restrita na base de homologação.

401: Falha de assessment

Utilize os dados abaixo: