curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=BRA" \
-F "services=bra_cnh_facial_qrcode" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "tax_number=11111111111" \
-F "selfie=@./selfie.jpg" \
-F "cnh_qr_code_image=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "BRA",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"cnh_qrcode": "sample_value",
"date_of_birth": "1990-01-01",
"face_match_probability": "Altíssima probabilidade",
"face_match_score": "0.990",
"first_name": "John",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"name_match_score": "1.000",
"verifications": {
"identification_number": true
}
},
"validation": {
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_NO_MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
🇧🇷 Brasil
API CNH com QR code e comparação facial (Datavalid)
Valide CNH por QR code com comparação facial na base oficial do Brasil (Datavalid) pela Didit. A partir de $0.62 por chamada, sem contrato nem mínimo.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=BRA" \
-F "services=bra_cnh_facial_qrcode" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "tax_number=11111111111" \
-F "selfie=@./selfie.jpg" \
-F "cnh_qr_code_image=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "BRA",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"cnh_qrcode": "sample_value",
"date_of_birth": "1990-01-01",
"face_match_probability": "Altíssima probabilidade",
"face_match_score": "0.990",
"first_name": "John",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"name_match_score": "1.000",
"verifications": {
"identification_number": true
}
},
"validation": {
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_NO_MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
SERPRO Datavalid v4 pf-facial-qrcode: decodifica o QR code impresso na CNH brasileira (física ou digital, emitida desde maio de 2017), valida CPF, nome e data de nascimento na Receita Federal e compara a selfie ao vivo com a foto da CNH armazenada na Senatran. A Didit disponibiliza esse serviço por meio de
POST /v3/database-validation/ para que você verifique os dados enviados na fonte oficial e receba resultados de correspondência normalizados.
Cobertura
- Cobertura: —
- País: Brasil
- ID do serviço:
bra_cnh_facial_qrcode - Domínio de dados: Biométrico
- Categoria: DriverLicence
Entradas
| Campo | Obrigatório | Exemplo |
|---|---|---|
tax_number | Sim | 11111111111 |
selfie | Sim | @./selfie.jpg |
cnh_qr_code_image | Sim | data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB |
first_name | Não | John |
last_name | Não | Doe |
date_of_birth | Não | 1990-01-01 |
vendor_data | Não | user-1234 |
- Entradas obrigatórias:
tax_number,selfie,cnh_qr_code_image - Entradas opcionais:
first_name,last_name,date_of_birth,vendor_data - Consentimento: Obrigatório
- Disponibilidade no workflow: Disponível no workflow
- Cobertura: —
- Preço: $0.62 por consulta bem-sucedida
Parâmetros do corpo
string
padrão:"BRA"
obrigatório
Código de país ISO 3166-1 alpha-3 deste serviço de banco de dados.Exemplo:
BRAstring
padrão:"bra_cnh_facial_qrcode"
obrigatório
Array que contém este ID de serviço. A fixação do serviço mantém a requisição restrita exatamente a este banco de dados.Exemplo:
bra_cnh_facial_qrcodeboolean
padrão:"true"
obrigatório
Consentimento explícito do usuário final para este serviço.Exemplo:
truestring
padrão:"11111111111"
obrigatório
Número de identificação fiscal.Exemplo:
11111111111file
obrigatório
Arquivo de imagem da selfie a ser enviado para a validação biométrica em banco de dados. Formatos aceitos: JPEG, PNG ou WebP.Exemplo:
@./selfie.jpgstring
obrigatório
Valor de
cnh_qr_code_image exigido por este serviço de banco de dados.Exemplo: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABstring
Nome a ser validado.Exemplo:
Johnstring
Sobrenome a ser validado.Exemplo:
Doestring
Data de nascimento no formato
YYYY-MM-DD.Exemplo: 1990-01-01string
padrão:"user-1234"
Sua referência estável de usuário para esta pessoa, como o ID interno do usuário. A Didit a usa para vincular verificações avulsas ao mesmo usuário final e reduzir o ruído na detecção de duplicatas.Exemplo:
user-1234Regras de entrada e notas de validação
- CPF brasileiro (exatamente 11 dígitos)
tax_numberdeve conter apenas dígitos; remova espaços, hífens e pontuação antes de enviar a requisição.tax_numberdeve ter exatamente 11 caracteres.
Como chamar
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=BRA" \
-F "services=bra_cnh_facial_qrcode" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "tax_number=11111111111" \
-F "selfie=@./selfie.jpg" \
-F "cnh_qr_code_image=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB"
Toda chamada bem-sucedida retorna HTTP 200. O campo outcome_code informa o que realmente aconteceu, distinguindo, por exemplo, uma divergência biométrica real (BIOMETRIC_NO_MATCH) de uma selfie que não pôde ser lida (BIOMETRIC_IMAGE_UNUSABLE). O status exibido é o status padrão do recurso; as ações de Partial Match / No Match que você configurou podem substituí-lo.MATCH: o registro confirmou a identidade e todos os campos verificados corresponderam.{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "BRA",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"cnh_qrcode": "sample_value",
"date_of_birth": "1990-01-01",
"face_match_probability": "Altíssima probabilidade",
"face_match_score": "0.990",
"first_name": "John",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"name_match_score": "1.000",
"verifications": {
"identification_number": true
}
},
"validation": {
"identification_number": "full_match"
}
}
]
}
NO_MATCH: o registro não retornou correspondência para os dados enviados.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
BIOMETRIC_NO_MATCH: a pontuação de correspondência facial ficou abaixo do limiar de aceitação; a selfie não é da mesma pessoa da foto do registro.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_NO_MATCH",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
BIOMETRIC_IMAGE_UNUSABLE: não foi possível processar a selfie (vazia, sem rosto, de baixa qualidade ou não pôde ser lida pelo registro). Peça ao usuário que tire a selfie novamente.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "BRA",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
"service_id": "bra_cnh_facial_qrcode",
"service_name": "Brazil - CNH QR code + face match (Datavalid)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
Dados retornados
Os campos exatos expostos emsource_data dependem do que o registro de empresas retorna. O exemplo gerado para bra_cnh_facial_qrcode documenta atualmente este formato normalizado:
cnh_qrcodedate_of_birthface_match_probabilityface_match_scorefirst_nameidentification_numberlast_namename_match_score
Preços e SLAs
As consultas de Brasil - QR code da CNH + correspondência facial (Datavalid) são cobradas somente quando a Didit recebe um resultado conclusivo da fonte de validação.- Preço por chamada: $0.62 USD.
- Faturamento: por consulta bem-sucedida. Você não é cobrado quando o registro está inacessível, quando faltam campos obrigatórios ou quando a requisição é rejeitada antes de chegar à fonte.
- Latência: p95 típico < 2 s.
- Disponibilidade: 99.9% por trimestre por parte da Didit; a disponibilidade da fonte externa varia conforme o país e o conjunto de dados.
Continue a leitura
Última modificação em 1 de novembro de 2026