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:
- Autenticação
- Certiface
Visão geral
Fluxo base para validação biométrica.
Ambientes
| Ambiente | Base URL |
|---|---|
| Homologação | https://hml.certiface.com.br/CertiFaceWS/rs |
| Produção | https://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, substituahml.certiface.com.brporwww.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.
Request
Homologação
POST https://hml.certiface.com.br/CertiFaceWS/rs/operador/authProdução
POST https://www.certiface.com.br/CertiFaceWS/rs/operador/authcontent-Type: application/x-www-form-urlencoded
body:
login=login
senha=md5PasswordParâmetros
| Parâmetro | Descrição |
|---|---|
| login | Login do operador do Certiface |
| senha | Senha criptografada em MD5 |
Gerar hash MD5 em Linux
echo -n "suasenha" | md5sumResponse
Retorno 200 OK
content-type: application/json
{
"token": "WdCFs9ytXJC52RWV5jmynEIKVd0xpKH6JSi7HVeoMz8",
"expires": "01/01/2021 11:11:01"
}| Parâmetro | Descrição |
|---|---|
| token | Token para gerar o hash de autorização |
| expires | Data de expiração do Token |
| Status | Descrição |
|---|---|
| 400 | Requisição mal formada ou dados incorretos. |
| 401 | Não autorizado. |
| 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
Homologação
POST https://hml.certiface.com.br/CertiFaceWS/rs/certifaceProdução
POST https://www.certiface.com.br/CertiFaceWS/rs/certifaceContent-Type: multipart/form-data
Headers
| Parâmetro | Descrição |
|---|---|
| Authorization | login;hash_de_autorização;data_hora_expiraçãoExemplo: login;dBCOXryPKKnsHid9d6JZpNP8W0946PL5ymOxypX88NU;01/01/2021 11:01:01 |
| Date | Data 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çãocomo texto base, e o token retornado no método Autenticação como chave.
Body
| Parâmetro | Descrição |
|---|---|
| cpf | Identificador ú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" |
| imagem | Imagem 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
----WebKitFormBoundary7MA4YWxkTrZu0gWResponse
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_biometrico | Retorno por codID |
score de 0 a 1000 e código de sucesso 200 | Retorno 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
| Valor | Descrição |
|---|---|
| 200 | Transação efetuada com sucesso. |
| 300 | Validação negativa. Comparação biométrica realizada com baixa similaridade. |
| 450 | Falha na comunicação ou tratamento da resposta da Serpro. |
Tabela "serpro"
| Parâmetro | Tipo | Descrição |
|---|---|---|
| codigo | Número inteiro | Código de status. Consulte "Detalhes código/causa Serpro" |
| causa | texto | Descrição do status e detalhamento de erros |
| score | Número decimal | Pontuação da validação da foto-documento versus base-Serpro de 0.0 a 1.0, retornado apenas quando executado |
HomologaçãoEm 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 CPFsQualquer 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âmetro | Tipo | Descrição |
|---|---|---|
| codigo | Número inteiro | Código de status. Consulte tabela "certifaceID.codigo" |
| aprovado | Booleano | true para transação com validação positiva na base biométrica. false indica alta possibilidade de fraude ou erro |
| conhecido | Booleano | true quando o usuário já está registrado na base. false indica cadastro recente ou com baixa confiança |
| protocolo | texto | Protocolo de identificação da transação |
| score_biometrico | Número decimal | Pontuaçã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ódigo | Descrição | Conhecido | Recomendação |
|---|---|---|---|
| 201 | Cadastro com sucesso | — | Revisar |
| 202 | Cadastro com pendência | — | Revisar |
| 203 | Certificação positiva | true | Aprovar |
| 203 | Certificação positiva | false | Revisar |
| 204 | Certificação negativa | false | Revisar |
| 204 | Certificação negativa | true | Reprovar |
| 212 | Cadastro com risco | — | Reprovar |
| 401 | Imagem recusada (face não encontrada ou erro de qualidade da imagem) | — | Recapturar / Erro |
| 501 | Erro 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âmetro | Tipo | Descrição |
|---|---|---|
| protocolo | texto | Protocolo de identificação da transação |
| codigo | Número inteiro | Código de status. Consulte tabela "certifaceID.codigo (Classe de risco)" |
| score | Número inteiro | Score de risco, de 0 (sem informação), 100 (baixo risco) a 1000 (alto risco) |
Tabela "certifaceID.codigo" (Classe de risco)
| Valor | Descrição |
|---|---|
| 200 | Transação efetuada com sucesso |
| 401 | Erro de imagem recusada (face não encontrada ou erro de qualidade da imagem) |
| 501 | Erro 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âmetro | Tipo | Descrição |
|---|---|---|
| protocolo | texto | Protocolo de identificação da transação |
| status | texto | Status da transação, consulte tabela "certifaceErro.status" |
| resultado | texto | Sigla do resultado, consulte tabela "certifaceErro.resultados" |
| msg | texto | Mensagem de detalhamento da transação - pode não ser retornado |
| similares | lista | Não utilizado neste cenário - pode não ser retornado |
Tabela "certifaceErro.status"
| Parâmetro | Descrição |
|---|---|
| ERR | Erro ao realizar transação |
Tabela "certifaceErro.resultados"
| Parâmetro | Descrição |
|---|---|
| ERR | Erro no processamento. Consulte a mensagem (quando disponível) para maiores informações |
| BMI | Bloqueio de menor de idade (configurável) |
| Código HTTP | Descrição |
|---|---|
| 400 Bad Request | Requisição form-data mal formada. |
| 401 Unauthorized | Nã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çãoOs 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:
- Foto: This Person Does Not Exist
- CPF: Gerador de CPF – 4Devs
202: Cadastro com pendência
Utilize os dados abaixo, pois essa face já está cadastrada para outro CPF.
-
Imagem:

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:

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:

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:

212: Cadastro com risco
Utilize os dados abaixo, pois essa face já está restrita na base de homologação.
-
CPF: aleatório, gerado em Gerador de CPF – 4Devs
-
Imagem:

401: Falha de assessment
Utilize os dados abaixo:
-
CPF: aleatório, gerado em Gerador de CPF – 4Devs
-
Imagem: um quadrado preto (imagem sem face)

Updated 6 days ago
