Certiface SaaS API
A Certiface SaaS API permite integrar jornadas biométricas e documentais em modelo SaaS. Em uma única jornada, o usuário final faz a prova de vida e, quando necessário, a captura do documento e a API retorna um resultado consolidado para apoiar a tomada de decisão do seu fluxo.
Sumário
- Visão Geral
- Ambientes
- Autenticação
- Criação do token
- Corpo da criação do token (campos)
- journeyType
- returnUrl
- Webhook
- Cancelamento do token
- Consulta do resultado
- Estrutura da resposta do resultado
- documentBiometry (jornada com documento)
- Códigos de erro (HTTP)
- Glossário
Visão Geral
A API foi desenhada para simplificar:
- Prova de vida (liveness) - confirmação de que há uma pessoa real, viva, na captura.
- Validação documental - captura da frente/verso do documento.
- OCR - extração dos dados impressos no documento (nome, CPF, datas, etc.).
- FaceMatch - comparação facial entre a foto do documento e a selfie da prova de vida.
- Consulta consolidada - um único resultado reunindo prova de vida, documento e biometria.
A integração é feita por uma API REST, com payloads em JSON sobre HTTPS, e pode ser consumida a partir de qualquer linguagem ou plataforma.
Visão Geral do Fluxo:
Um token representa uma solicitação de verificação para uma pessoa. O ciclo de integração é:
| Passo | Ação | Endpoint |
|---|---|---|
| 1 | Autenticar o operador e obter o JWT | POST /api/v1/login |
| 2 | Criar o token | POST /api/v1/protected/genToken |
| 3 | Entregar a url retornada ao usuário final (ele executa a jornada) | - |
| 4 | Consultar o resultado | GET /api/v1/token/tokenGerado |
| 5 | (opcional) Cancelar um token ainda aberto | DELETE /api/v1/token/tokenGerado |
Quando consultar o resultado:
O resultado é sempre obtido com
GET /api/v1/token/tokenGeradopasso 4 . É possível disparar essa consulta de três formas:
- returnUrl seção 7 - ao concluir, o usuário é redirecionado de volta ao seu sistema com o
tokenna URL; use isso como gancho para consultar.- webhook seção 8 - a Certiface notifica o seu backend automaticamente ao finalizar.
- polling - consultar periodicamente até o
statusretornartrue. É a opção mais simples, mas evite intervalos muito curtos.
2. Ambientes
| Ambiente | Base URL |
|---|---|
| Homologação | https://apis-dev.biometria.io/certiface-saas |
| Produção | https://apis.biometria.io/certiface-saas |
A base URL é concatenada com as rotas deste guia. Exemplo: https://apis.biometria.io/certiface-saas/api/v1/login.
As credenciais de operador (login/senha) são fornecidas pela CertiFace e são diferentes por ambiente.
3. Autenticação
A API usa JWT Bearer. Após a autenticação é retornado um token JWT e o envia no header Authorization das chamadas protegidas (criação, consulta e cancelamento do token).
Endpoint
Endpoint público (não requer autenticação prévia).
POST /api/v1/loginHeaders
Content-Type: application/jsonRequest
A password deve ser enviada como hash MD5 (hexadecimal, em minúsculas) da senha do operador, não em texto puro:
{
"login": "seu-operador",
"password": "5f4dcc3b5aa765d61d8327deb882cf99"
}Senha em MD5 neste endpoint:
No
POST /api/v1/loginapasswordé o MD5 da senha do operador. (No modo Basic Auth -POST /api/v1/token, seção 4 - é o contrário: a senha vai em texto puro, e a API calcula o hash internamente.)
Response 200
O JWT volta tanto no corpo quanto no header Authorization: Bearer <jwt>:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}401 para credenciais inválidas.
O JWT tem validade curta
O JWT expira em poucos minutos (20 por padrão). Reautentique quando expirar. O mesmo JWT do login é usado para criar o token, consultar o resultado e cancelar.
Use o token em todas as chamadas protegidas:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...4. Criação do token
Existem dois jeitos de criar um token. Ambos recebem o mesmo corpo ver seção 5 e devolvem a mesma resposta. A diferença é apenas como você se autentica.
Modo A: JWT (recomendado)
Duas chamadas: primeiro o login seção 3 , depois a criação usando o Bearer obtido.
POST /api/v1/protected/genToken
Authorization: Bearer <jwt-do-login>
Content-Type: application/json
Use este modo quando você cria vários tokens com uma mesma sessão: faz o login uma vez e reaproveita o JWT até ele expirar.
Modo B: Basic Auth (chamada única)
Uma única chamada, sem login prévio. Você manda login e senha do operador via HTTP Basic no header Authorization, e o token é criado diretamente.
POST /api/v1/token
Authorization: Basic base64("login:senha")
Content-Type: application/json
Aqui a senha vai em texto puro (a API calcula o hash internamente) - diferente do
POST /api/v1/login, onde a senha é enviada já em MD5 seção 3 .
Use este modo para integrações simples / pontuais, em que você prefere não gerenciar o ciclo de vida do JWT.
O Basic Auth só serve para criar
O modo Basic Auth (
POST /api/v1/token) só cria o token. A consulta e o cancelamento sempre exigem o JWT Bearer do login seção 3 . Ou seja, mesmo usando o Modo B, para consultar o resultado você precisará chamarPOST /api/v1/logine usar o JWT.
Resposta da criação
Resposta da criação em ambos os modos:
Response 200
{
"uuid": "be78d31f-31be-4903-a340-33589787c66",
"url": "https://certiface.example.io/?token=be78d31f-31be-4903-a340-33589787c66"
}| Campo | Descrição |
|---|---|
uuid | O token gerado. É ele que você usa para consultar/cancelar e que identifica a verificação. |
url | URL da jornada. Entregue esta URL ao usuário final (link, redirect, QR Code). É nela que ele faz a prova de vida e, quando aplicável, a captura do documento. |
5. Corpo da criação do token (campos)
O mesmo corpo vale para o Modo A e o Modo B.
{
"documentNumber": "00000014141",
"birthDate": "20/12/1960",
"fullName": "Nome Completo",
"phones": ["11999999999", "1133334444"],
"processType": "ALT",
"journeyType": 2,
"livenessProvider": "FACETEC",
"tokenExpirationSeconds": 86400,
"returnUrl": "https://cliente.example/finalizado?token={token}",
"webhook": {
"url": "https://cliente.example/webhooks/certiface",
"events": ["JOURNEY_FINISHED"],
"secret": "seu-segredo-compartilhado"
}
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
documentNumber | string | Sim | CPF do usuário (com ou sem máscara). É validado. |
birthDate | string | Sim | Data de nascimento no formato dd/MM/yyyy. |
fullName | string | Sim | Nome completo (mínimo nome + sobrenome). |
phones | array<string> | Não | Telefones do usuário (cada um até 20 caracteres). O primeiro item é tratado como telefone principal; os demais como adicionais. |
processType | string | Não | Tipo de processo solicitado (máximo 50 caracteres), definido pelo fluxo do cliente. Ex.: CADASTRO, ALT DADOS. |
journeyType | integer | Não | Tipo de jornada. Ver seção 6 . Padrão 1. |
livenessProvider | string | Não | Provedor de prova de vida desejado: FACETEC ou FORTFACE. OBS: a Certiface pode definir o provedor final conforme as regras de negócio da sua conta. |
tokenExpirationSeconds | integer | Não | Tempo de vida do token, em segundos. Padrão definido pela sua conta; não pode exceder o máximo configurado. Aceita também os aliases expiresInSeconds, expirationSeconds, tokenExpiresInSeconds. |
returnUrl | string | Não | URL de redirecionamento ao fim da jornada. Ver seção 7 . |
webhook | object | Não | Configuração de webhook por token. Ver seção 8 . |
Erros de validação (CPF inválido, data fora do formato, nome inválido, etc.) retornam
422.
6. journeyType
O journeyType define o que o usuário fará na jornada:
| Valor | Jornada | O que o usuário faz |
|---|---|---|
1 | Liveness com Bureau | Prova de vida (selfie com detecção de vivacidade) combinada com a consulta ao Bureau (validação cadastral). É o padrão quando o campo é omitido. |
2 | Liveness com Bureau + Documento | O mesmo da jornada 1, seguido da captura do documento (frente/verso), com OCR e comparação facial documento vs. selfie. |
A escolha em journeyType = 2 é o que faz a resposta de consulta incluir o bloco documentBiometry seção 12 .
processTypenão tem relação comjourneyType. Quem escolhe a jornada é ojourneyType.
7. returnUrl
returnUrl é a URL para a qual o frontend da jornada redireciona o usuário ao terminar. É opcional e útil para devolver o usuário ao seu fluxo (ex.: tela de "concluído").
- Deve ser uma URL
httpsabsoluta (com host). - Pode conter o placeholder
token, que a API substitui pelo token gerado antes de congelar a jornada. Assim, ao ser redirecionado, seu sistema sabe qual verificação consultar. - Limite de 2048 caracteres.
Exemplo
"returnUrl": "https://cliente.example/finalizado?token={token}"Resultado do redirect (com o token já substituído):
https://cliente.example/finalizado?token=be78d31f-31be-4903-a340-33589787c66
O
returnUrlapenas redireciona o navegador do usuário; ele não carrega o resultado. Para obter o resultado, consulte o token seção 10 ou use o webhook seção 8 .
8. Webhook
Para receber uma notificação automática ao final da jornada, envie o objeto webhook na criação do token.
Configuração
"webhook": {
"url": "https://cliente.example/webhooks/certiface",
"events": ["JOURNEY_FINISHED"],
"secret": "seu-segredo-compartilhado",
"auth": {
"type": "BEARER_TOKEN",
"token": "opaque-token"
}
}| Campo | Obrigatório | Descrição |
|---|---|---|
url | sim | Endpoint HTTPS do seu sistema que receberá a notificação. |
events | não | Eventos desejados. Atualmente o evento de notificação é JOURNEY_FINISHED (jornada finalizada). Se omitido, o webhook é acionado ao finalizar. |
secret | não | Segredo compartilhado para assinar o payload (HMAC-SHA256). Recomendado. |
auth | não | Autenticação que a Certiface usará ao chamar o seu endpoint. Ver abaixo. |
Evento JOURNEY_FINISHED
Disparado quando a jornada do token chega ao fim (concluída - aprovada ou reprovada). Ao receber, consulte GET /api/v1/token/tokenGerado para obter o resultado consolidado.
Payload entregue (corpo POST)
{
"event": "JOURNEY_FINISHED",
"token": "be78d31f-31be-4903-a340-33589787c66",
"timestamp": "2026-05-18T01:25:00-03:00"
}| Campo | Descrição |
|---|---|
event | Sempre JOURNEY_FINISHED. |
token | O token cuja jornada finalizou. Use-o na consulta do resultado. |
timestamp | Momento do evento (fuso America/Sao_Paulo, ISO-8601 com offset). |
Headers da entrega
| Header | Descrição |
|---|---|
X-Certiface-Webhook-Version | Versão do contrato do webhook (1). |
X-Certiface-Event | Nome do evento. |
X-Certiface-Token | Token relacionado. |
X-Certiface-Delivery | Identificador único da entrega. |
X-Certiface-Sent-At | Momento do envio. |
X-Certiface-Timestamp | (quando há secret) Timestamp usado na assinatura. |
X-Certiface-Signature | (quando há secret) Assinatura no formato v1=<base64>. |
X-Certiface-Signature-Algorithm | (quando há secret) HMAC-SHA256. |
Verificação da assinatura
Quando é definido secret, cada entrega vem assinada para garantir que veio da Certiface e não foi adulterada. A assinatura é calculada assim:
assinatura = Base64( HMAC_SHA256( secret, "{X-Certiface-Timestamp}.{corpo-json-cru}" ) )
O header
X-Certiface-Signaturetrazv1=<assinatura>. Para validar:
- Pegue o valor de
X-Certiface-Timestampe o corpo cru (bytes recebidos).- Concatene
timestamp + "." + corpo.- Calcule o HMAC-SHA256 com o seu
secrete codifique em Base64.- Compare (comparação de tempo constante) com o valor após
v1=emX-Certiface-Signature.
Autenticação no seu endpoint (webhook.auth)
Define como a Certiface se autentica ao chamar a sua url. Tipos suportados:
type | Campos necessários | Comportamento na chamada |
|---|---|---|
NONE | - | Sem autenticação (padrão). |
BASIC | username, password | Authorization: Basic ... |
BEARER_TOKEN | token | Authorization: Bearer <token> |
OAUTH2_CLIENT_CREDENTIALS | tokenUrl, clientId, clientSecret (e opcionalmente scopes, audience) | A Certiface obtém um access token via client credentials e o envia como Bearer. |
- O campo
auth.typeé opcional: se omitido, a API infere o tipo pelos campos enviados. - URLs no formato legado
https://usuario:[email protected]/webhooksão aceitas e tratadas comoBASIC(as credenciais são removidas da URL e guardadas com segurança).
Entrega e retentativas
- A entrega é assíncrona e só ocorre após a jornada finalizar.
- Em falhas temporárias (timeout, erro de conexão, HTTP >= 400), há retentativas automáticas com backoff (até 10 tentativas no total). Seu endpoint deve ser idempotente - a mesma entrega pode chegar mais de uma vez (use
X-Certiface-Deliverypara deduplicar). - Responda
2xxrapidamente para confirmar o recebimento.
9. Cancelamento do token
Cancela um token associado a uma jornada ainda não finalizada. Útil quando a solicitação foi criada por engano ou não será mais utilizada.
DELETE /api/v1/token/tokenGeradoHeaders da Requisição
Authorization: Bearer <jwt-do-login>
| Resposta | Significado |
|---|---|
200 | Token cancelado. |
401 | JWT ausente ou inválido. |
403 | O token não pertence ao escopo do operador autenticado. |
404 | Token não encontrado. |
409 | O token já está finalizado e não pode ser cancelado. |
Requer o JWT Bearer do login (seção 3).
10. Consulta do resultado
Retorna o resultado consolidado do token: dados do header, todas as tentativas e, quando a jornada incluiu documento, o bloco documentBiometry.
GET /api/v1/token/tokenGeradoHeaders da Requisição
Authorization: Bearer <jwt-do-login>
A consulta usa o mesmo JWT do login
A consulta usa o mesmo JWT do login seção 3 - não há credencial separada. O token só é retornado se pertencer ao escopo do operador autenticado.
| Resposta | Significado |
|---|---|
200 | Resultado encontrado. |
401 | JWT ausente ou inválido. |
403 | Token fora do escopo do operador autenticado. |
404 | Token não encontrado. |
11. Estrutura da resposta do resultado
Campos null são omitidos; results está sempre presente (pode vir vazio se ainda não houver tentativas).
{
"token": "be78d31f-31be-4903-a340-33589787c66",
"documentNumber": "00000014141",
"birthDate": "1960-12-20",
"fullName": "Nome Completo",
"phone": "11999999999",
"status": true,
"result": true,
"createDate": "2026-05-17 12:00:00",
"expirationDate": "2026-05-18 12:00:00",
"phones": ["11999999999", "1133334444"],
"processType": "ALT",
"results": [
{
"protocol": "123456789",
"dateTime": "2026-05-17 12:03:10",
"cause": "SUCCESS",
"valid": true,
"userAgent": "Mozilla/5.0 ...",
"step": "liveness",
"result": 1.2,
"score": 850,
"ip": "200.200.200.200",
"geolocation": {
"accuracy": 20.0,
"latitude": -23.55,
"longitude": -46.63,
"altitude": 720.0,
"altitudeAccuracy": 5.0
},
"image": "<selfie em base64>",
"serpro": {
"code": 0,
"cause": "..."
}
}
]
}Campos do header
| Campo | Tipo | Descrição |
|---|---|---|
token | string | O token consultado. |
documentNumber | string | CPF do usuário. |
birthDate | string | Data de nascimento (yyyy-MM-dd). |
fullName | string | Nome do usuário. |
phone | string | Telefone principal. |
status | boolean | Conclusão do token: true = jornada finalizada; false = ainda em aberto/não usado. |
result | boolean | Resultado geral: true = aprovado; false = reprovado/não aprovado. |
createDate | string | Criação do token (yyyy-MM-dd HH:mm:ss). |
expirationDate | string | Expiração do token. |
phones | array<string> | Todos os telefones informados na criação (principal + adicionais). |
processType | string | O processType enviado na criação. |
results | array | Detalhe das tentativas (abaixo). |
Campos de cada item de results
| Campo | Tipo | Descrição |
|---|---|---|
protocol | string | Protocolo da tentativa. |
dateTime | string | Data/hora da tentativa (yyyy-MM-dd HH:mm:ss). |
cause | string | Motivo do resultado (ver tabela de causas). |
valid | boolean | Resultado da prova de vida: true = aprovada. |
userAgent | string | Informações do dispositivo do usuário. |
step | string | Etapa que gerou o resultado: liveness (prova de vida) ou document (documento). |
result | float | Código numérico do resultado (ver tabela de códigos). |
score | integer | Score de risco (presente quando a Classe de Risco está habilitada). |
ip | string | IP do usuário (presente quando habilitado para a sua conta). |
geolocation | object | Localização capturada (ver abaixo). |
image | string | Selfie da prova de vida em Base64. |
serpro | object | Resultado da validação SERPRO (condicional - ver abaixo). |
documentBiometry | object | Dados de documento + comparação facial, em jornadas com documento. Ver seção 12 . |
Valores de cause
cause | Significado |
|---|---|
SUCCESS | Usuário concluiu corretamente; aprovado. |
INVALID_DATA | Nome, documento ou data de nascimento inválidos. |
TIMEOUT | A prova de vida ultrapassou o tempo máximo de uso. |
MAX_ATTEMPTS | Usuário falhou nas tentativas permitidas. |
CANCELLED | A jornada/token foi cancelado. |
DOCUMENT | Problema na etapa de documento. |
PROVIDER_ERROR | Erro no provedor de liveness. |
Esses são os valores canônicos que a API atribui quando ela determina o desfecho da jornada.
Causas reportadas pelo passo de liveness
Quando o desfecho vem de um motivo reportado pelo próprio passo de prova de vida, esse motivo é devolvido como recebido, em letras maiúsculas - ou seja, o
causepode trazer um texto fora da lista canônica acima. Trate a lista como os valores garantidos e ocausecomo um campo de texto: compare por igualdade com os valores conhecidos e tenha um tratamento padrão para os demais.
Códigos de result
| Código | Significado |
|---|---|
1.1 | Cadastro realizado com sucesso |
1.2 | Certificação positiva |
200.1 | Cadastro com alertas |
200.2 | Certificação negativa |
200.3 | Certificação positiva desconhecida |
200.4 | Certificação negativa desconhecida |
200.5 | Cadastro com risco |
300.1 | Prova de vida inválida |
300.2 | Prova de vida bloqueada |
geolocation
| Campo | Tipo | Descrição |
|---|---|---|
accuracy | float | Precisão das coordenadas (lat/long). |
latitude | float | Latitude. |
longitude | float | Longitude. |
altitude | float | Altitude. |
altitudeAccuracy | float | Precisão da altitude. |
serpro (condicional)
Presente quando a Classe de Risco está habilitada para a sua conta.
| Campo | Tipo | Descrição |
|---|---|---|
code | integer | Código de retorno da validação SERPRO. |
cause | string | Detalhe/motivo da validação SERPRO (ex.: Falha da validacao serpro - DV040). |
12. documentBiometry (jornada com documento)
Quando o token é criado com journeyType = 2 (liveness + documento), o item de results correspondente à etapa de documento traz o bloco documentBiometry com os dados extraídos do documento (OCR), a comparação facial (documento vs. selfie) e as imagens capturadas.
"documentBiometry": {
"protocol": "987654321",
"ocr": { "...": "campos do documento - ver tipos abaixo" },
"faceMatch": {
"code": "0",
"cause": "MATCH",
"score": "0.97"
},
"documents": [
{ "description": "Frente", "side": "FRONT", "image": "<base64>" },
{ "description": "Verso", "side": "BACK", "image": "<base64>" }
]
}| Campo | Tipo | Descrição |
|---|---|---|
protocol | string | Protocolo da análise de documento. |
ocr | object | Campos extraídos do documento (OCR). O conjunto de campos varia conforme o tipo de documento - ver tabelas abaixo. |
faceMatch | object | Comparação facial entre a foto do documento e a selfie da prova de vida. |
faceMatch.code | string | Código do resultado da comparação. |
faceMatch.cause | string | Descrição/motivo da comparação. |
faceMatch.score | string | Similaridade (quanto maior, mais semelhante). |
documents | array | Imagens capturadas, cada uma com description, side (FRONT/BACK) e image (Base64). |
Campos de ocr por tipo de documento
O OCR retorna apenas campos textuais; as imagens do documento são entregues no campo documents, não dentro de ocr. Campos sem valor são omitidos. Datas vêm tanto no formato original (dd/MM/yyyy) quanto normalizado (*Formatada, yyyy-MM-dd).
RG
| Campo | Descrição |
|---|---|
documento | Tipo do documento (RG). |
nrRg | Número do RG. |
estado | UF de expedição. |
nome | Nome do titular. |
filiacao | Filiação (pai e mãe, separados por quebra de linha). |
nomePai | Nome do pai. |
nomeMae | Nome da mãe. |
dtNascimento / dtNascimentoFormatada | Data de nascimento. |
cpf | CPF impresso no documento. |
naturalidade | Naturalidade. |
nomenclatura | Texto/órgão impresso no documento. |
dtExpedicao / dtExpedicaoFormatada | Data de expedição. |
pretoEBranco | Indica se o documento é preto e branco. |
flAnalfabeto | Indicador de analfabetismo. |
dtCriacao | Data/hora do processamento. |
CNH
| Campo | Descrição |
|---|---|
documento | Tipo do documento (CNH). |
nome | Nome do titular. |
cpf | CPF. |
estado / estadoNome | UF / nome do estado. |
dtNascimento / dtNascimentoFormatada | Data de nascimento. |
filiacao / nomePai / nomeMae | Filiação. |
numeroRegistro | Número de registro da CNH. |
categoria | Categoria de habilitação. |
validade | Validade da CNH. |
primeiraHabilitacao | Data da primeira habilitação. |
dtExpedicao / dtExpedicaoFormatada | Data de expedição. |
local | Local de emissão. |
docOrigem / documentoOrigem / emissorOrigem / ufOrigem | Documento de origem (número, emissor, UF). |
permissao | Permissão. |
acc | ACC. |
codSeguranca | Código de segurança. |
espelho | Número do espelho. |
renach | Número RENACH. |
pretoEBranco | Documento em preto e branco. |
dtCriacao | Data/hora do processamento. |
DNI
| Campo | Descrição |
|---|---|
estado | UF. |
nome / nomeSocial | Nome e nome social. |
filiacao / nomePai / nomeMae | Filiação. |
dtNascimento / dtNascimentoFormatada | Data de nascimento. |
cpf | CPF. |
rg / outroRG | Número(s) de RG. |
naturalidade | Naturalidade. |
nomenclatura | Texto/órgão impresso. |
orgao | Órgão emissor. |
fator | Fator RH/sanguíneo. |
registroCivil | Registro civil. |
cnh | Número da CNH. |
cns | Cartão Nacional de Saúde. |
ctps / serieCTPS / ufctps | CTPS (número, série, UF). |
tituloEleitor | Título de eleitor. |
pis | PIS. |
certMilitar | Certificado militar. |
dni | Número do DNI. |
profissional | Registro profissional. |
observacaoFront | Observação na frente do documento. |
local | Local. |
dtExpedicao / dtExpedicaoFormatada | Data de expedição. |
pretoEBranco | Documento em preto e branco. |
flAnalfabeto | Indicador de analfabetismo. |
dtCriacao | Data/hora do processamento. |
CIN
| Campo | Descrição |
|---|---|
documento | Tipo do documento (CIN). |
nome | Nome do titular. |
cpf | CPF. |
sexo | Sexo. |
dtNascimento / dtNascimentoFormatada | Data de nascimento. |
nacionalidade | Nacionalidade. |
naturalidade | Naturalidade. |
filiacao | Filiação (pai e mãe). |
orgaoEmissor | Órgão emissor. |
local | Local de emissão. |
posto | Posto de emissão. |
nrEspelho | Número do espelho. |
dtValidade | Validade (pode ser INDETERMINADA). |
nomenclatura | Texto impresso (ex.: REPUBLICA FEDERATIVA DO BRASIL). |
dtExpedicao / dtExpedicaoFormatada | Data de expedição. |
analfabeto | Indicador de analfabetismo. |
dtCriacao | Data/hora do processamento. |
13. Códigos de erro (HTTP)
Erros são padronizados no corpo:
{
"timestamp": "2026-05-18T01:25:00-03:00",
"status": 422,
"error": "Unprocessable Entity",
"message": "Invalid data",
"path": "/api/v1/protected/genToken"
}| Código | Quando ocorre |
|---|---|
200 | Sucesso. |
401 | Credenciais (login/senha ou JWT) inválidas ou ausentes. |
403 | Token fora do escopo do operador autenticado. |
404 | Token não encontrado. |
409 | Conflito de estado (ex.: cancelar token já finalizado). |
422 | Dados inválidos (CPF, data de nascimento, nome, URLs, etc.). |
5xx | Erro interno ou indisponibilidade de serviço de apoio. |
14. Glossário
| Termo | Significado |
|---|---|
| Operador | Conta autenticada (login/senha) que cria, consulta e cancela tokens. |
| Token | Identificador único (UUID) de uma verificação/jornada. |
| Jornada (journey) | Sequência executada pelo usuário final: prova de vida e, quando aplicável, captura do documento. |
| Liveness (prova de vida) | Verificação de que há uma pessoa real e viva na captura. |
| Documento | Captura da frente/verso do documento de identificação. |
| OCR | Leitura/extração dos dados textuais impressos no documento. |
| FaceMatch | Comparação facial entre a foto do documento e a selfie da prova de vida. |
| Provedor (provider) | Motor que executa a prova de vida (FACETEC, FORTFACE). |
| JWT | Token de autenticação Bearer emitido no login, usado nas chamadas protegidas. |
| Webhook | Callback HTTP enviado ao seu sistema quando a jornada finaliza. |
| returnUrl | URL para a qual o navegador do usuário é redirecionado ao fim da jornada. |
Updated about 4 hours ago
