API
ID Check Composto
Verifique a identidade de uma pessoa de maneira rápida e segura utilizando dados biográficos, biométricos, documentos e endereço em uma única operação
POST
/
id-check
/
api
/
v1
/
scan
ID Check Composto
curl --request POST \
--url https://api.valid.com/id-check/api/v1/scan \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"identity": {
"type": "<string>",
"value": "<string>"
},
"attributes": {
"biographic": {
"name": "<string>",
"socialName": "<string>",
"motherName": "<string>",
"fatherName": "<string>",
"dateOfBirth": "<string>",
"gender": "<string>",
"nationality": "<string>"
},
"biometrics": {
"face": {
"image": "<string>",
"referenceImage": "<string>"
},
"fingerprints": [
{
"position": 123,
"image": "<string>"
}
]
},
"documents": {
"cpf": {
"number": "<string>",
"status": "<string>",
"registrationDate": "<string>"
},
"cnh": {
"registrationNumber": "<string>",
"category": "<string>",
"status": "<string>",
"foreignRegistration": "<string>",
"firstIssueDate": "<string>",
"lastIssueDate": "<string>",
"expirationDate": "<string>",
"hasRestriction": true,
"observations": "<string>",
"qrCode": "<string>"
},
"rg": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"ctps": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"passport": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"militaryService": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
}
},
"address": {
"street": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"postalCode": "<string>",
"city": "<string>",
"state": "<string>"
}
}
}
'import requests
url = "https://api.valid.com/id-check/api/v1/scan"
payload = {
"identity": {
"type": "<string>",
"value": "<string>"
},
"attributes": {
"biographic": {
"name": "<string>",
"socialName": "<string>",
"motherName": "<string>",
"fatherName": "<string>",
"dateOfBirth": "<string>",
"gender": "<string>",
"nationality": "<string>"
},
"biometrics": {
"face": {
"image": "<string>",
"referenceImage": "<string>"
},
"fingerprints": [
{
"position": 123,
"image": "<string>"
}
]
},
"documents": {
"cpf": {
"number": "<string>",
"status": "<string>",
"registrationDate": "<string>"
},
"cnh": {
"registrationNumber": "<string>",
"category": "<string>",
"status": "<string>",
"foreignRegistration": "<string>",
"firstIssueDate": "<string>",
"lastIssueDate": "<string>",
"expirationDate": "<string>",
"hasRestriction": True,
"observations": "<string>",
"qrCode": "<string>"
},
"rg": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"ctps": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"passport": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"militaryService": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
}
},
"address": {
"street": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"postalCode": "<string>",
"city": "<string>",
"state": "<string>"
}
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identity: {type: '<string>', value: '<string>'},
attributes: {
biographic: {
name: '<string>',
socialName: '<string>',
motherName: '<string>',
fatherName: '<string>',
dateOfBirth: '<string>',
gender: '<string>',
nationality: '<string>'
},
biometrics: {
face: {image: '<string>', referenceImage: '<string>'},
fingerprints: [{position: 123, image: '<string>'}]
},
documents: {
cpf: {number: '<string>', status: '<string>', registrationDate: '<string>'},
cnh: {
registrationNumber: '<string>',
category: '<string>',
status: '<string>',
foreignRegistration: '<string>',
firstIssueDate: '<string>',
lastIssueDate: '<string>',
expirationDate: '<string>',
hasRestriction: true,
observations: '<string>',
qrCode: '<string>'
},
rg: {number: '<string>', issuer: '<string>', issuerState: '<string>'},
ctps: {number: '<string>', issuer: '<string>', issuerState: '<string>'},
passport: {number: '<string>', issuer: '<string>', issuerState: '<string>'},
militaryService: {number: '<string>', issuer: '<string>', issuerState: '<string>'}
},
address: {
street: '<string>',
number: '<string>',
complement: '<string>',
neighborhood: '<string>',
postalCode: '<string>',
city: '<string>',
state: '<string>'
}
}
})
};
fetch('https://api.valid.com/id-check/api/v1/scan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.valid.com/id-check/api/v1/scan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identity' => [
'type' => '<string>',
'value' => '<string>'
],
'attributes' => [
'biographic' => [
'name' => '<string>',
'socialName' => '<string>',
'motherName' => '<string>',
'fatherName' => '<string>',
'dateOfBirth' => '<string>',
'gender' => '<string>',
'nationality' => '<string>'
],
'biometrics' => [
'face' => [
'image' => '<string>',
'referenceImage' => '<string>'
],
'fingerprints' => [
[
'position' => 123,
'image' => '<string>'
]
]
],
'documents' => [
'cpf' => [
'number' => '<string>',
'status' => '<string>',
'registrationDate' => '<string>'
],
'cnh' => [
'registrationNumber' => '<string>',
'category' => '<string>',
'status' => '<string>',
'foreignRegistration' => '<string>',
'firstIssueDate' => '<string>',
'lastIssueDate' => '<string>',
'expirationDate' => '<string>',
'hasRestriction' => true,
'observations' => '<string>',
'qrCode' => '<string>'
],
'rg' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
],
'ctps' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
],
'passport' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
],
'militaryService' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
]
],
'address' => [
'street' => '<string>',
'number' => '<string>',
'complement' => '<string>',
'neighborhood' => '<string>',
'postalCode' => '<string>',
'city' => '<string>',
'state' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.valid.com/id-check/api/v1/scan"
payload := strings.NewReader("{\n \"identity\": {\n \"type\": \"<string>\",\n \"value\": \"<string>\"\n },\n \"attributes\": {\n \"biographic\": {\n \"name\": \"<string>\",\n \"socialName\": \"<string>\",\n \"motherName\": \"<string>\",\n \"fatherName\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"gender\": \"<string>\",\n \"nationality\": \"<string>\"\n },\n \"biometrics\": {\n \"face\": {\n \"image\": \"<string>\",\n \"referenceImage\": \"<string>\"\n },\n \"fingerprints\": [\n {\n \"position\": 123,\n \"image\": \"<string>\"\n }\n ]\n },\n \"documents\": {\n \"cpf\": {\n \"number\": \"<string>\",\n \"status\": \"<string>\",\n \"registrationDate\": \"<string>\"\n },\n \"cnh\": {\n \"registrationNumber\": \"<string>\",\n \"category\": \"<string>\",\n \"status\": \"<string>\",\n \"foreignRegistration\": \"<string>\",\n \"firstIssueDate\": \"<string>\",\n \"lastIssueDate\": \"<string>\",\n \"expirationDate\": \"<string>\",\n \"hasRestriction\": true,\n \"observations\": \"<string>\",\n \"qrCode\": \"<string>\"\n },\n \"rg\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"ctps\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"passport\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"militaryService\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n }\n },\n \"address\": {\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.valid.com/id-check/api/v1/scan")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identity\": {\n \"type\": \"<string>\",\n \"value\": \"<string>\"\n },\n \"attributes\": {\n \"biographic\": {\n \"name\": \"<string>\",\n \"socialName\": \"<string>\",\n \"motherName\": \"<string>\",\n \"fatherName\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"gender\": \"<string>\",\n \"nationality\": \"<string>\"\n },\n \"biometrics\": {\n \"face\": {\n \"image\": \"<string>\",\n \"referenceImage\": \"<string>\"\n },\n \"fingerprints\": [\n {\n \"position\": 123,\n \"image\": \"<string>\"\n }\n ]\n },\n \"documents\": {\n \"cpf\": {\n \"number\": \"<string>\",\n \"status\": \"<string>\",\n \"registrationDate\": \"<string>\"\n },\n \"cnh\": {\n \"registrationNumber\": \"<string>\",\n \"category\": \"<string>\",\n \"status\": \"<string>\",\n \"foreignRegistration\": \"<string>\",\n \"firstIssueDate\": \"<string>\",\n \"lastIssueDate\": \"<string>\",\n \"expirationDate\": \"<string>\",\n \"hasRestriction\": true,\n \"observations\": \"<string>\",\n \"qrCode\": \"<string>\"\n },\n \"rg\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"ctps\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"passport\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"militaryService\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n }\n },\n \"address\": {\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valid.com/id-check/api/v1/scan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identity\": {\n \"type\": \"<string>\",\n \"value\": \"<string>\"\n },\n \"attributes\": {\n \"biographic\": {\n \"name\": \"<string>\",\n \"socialName\": \"<string>\",\n \"motherName\": \"<string>\",\n \"fatherName\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"gender\": \"<string>\",\n \"nationality\": \"<string>\"\n },\n \"biometrics\": {\n \"face\": {\n \"image\": \"<string>\",\n \"referenceImage\": \"<string>\"\n },\n \"fingerprints\": [\n {\n \"position\": 123,\n \"image\": \"<string>\"\n }\n ]\n },\n \"documents\": {\n \"cpf\": {\n \"number\": \"<string>\",\n \"status\": \"<string>\",\n \"registrationDate\": \"<string>\"\n },\n \"cnh\": {\n \"registrationNumber\": \"<string>\",\n \"category\": \"<string>\",\n \"status\": \"<string>\",\n \"foreignRegistration\": \"<string>\",\n \"firstIssueDate\": \"<string>\",\n \"lastIssueDate\": \"<string>\",\n \"expirationDate\": \"<string>\",\n \"hasRestriction\": true,\n \"observations\": \"<string>\",\n \"qrCode\": \"<string>\"\n },\n \"rg\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"ctps\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"passport\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"militaryService\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n }\n },\n \"address\": {\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"scanId": "123e4567-e89b-12d3-a456-426614174000",
"identity": {
"type": "cpf",
"value": true
},
"attributes": {
"biographic": {
"name": true,
"nameSimilarity": 9.8,
"socialName": true,
"socialNameSimilarity": 9.9,
"motherName": true,
"motherNameSimilarity": 10.0,
"fatherName": false,
"fatherNameSimilarity": 1.2,
"dateOfBirth": true,
"gender": true,
"nationality": true
},
"biometrics": {
"face": {
"confidence": "HIGH",
},
"fingerprints": [
{
"position": 1,
"confidence": "MAXIMUM",
},
{
"position": 2,
"confidence": "HIGH",
}
]
},
"documents": {
"cpf": {
"number": true,
"status": true,
"registrationDate": true
},
"cnh": {
"registrationNumber": true,
"category": true,
"status": true,
"foreignRegistration": false,
"firstIssueDate": true,
"lastIssueDate": true,
"expirationDate": true,
"hasRestriction": true,
"observations": true,
"qrCode": {
"returnCode": "0",
"name": true,
"nameSimilarity": 9.9,
"decodedName": "JOAO DA SILVA",
"decodedCivilName": "JOAO DA SILVA",
"sourceDocument": true,
"sourceDocumentSimilarity": 10.0,
"decodedSourceDocument": "CNH",
"dateOfBirth": true,
"decodedDateOfBirth": "1990-01-01",
"motherName": true,
"motherNameSimilarity": 9.7,
"decodedMotherName": "MARIA DA SILVA",
"fatherName": false,
"fatherNameSimilarity": 2.2,
"decodedFatherName": "JOSE DA SILVA",
"decodedPermission": "ACC",
"decodedAcc": "N",
"category": true,
"categorySimilarity": 10.0,
"decodedCategory": "B",
"registrationNumber": true,
"decodedRegistrationNumber": "12345678900",
"expirationDate": true,
"decodedExpirationDate": "2030-01-15",
"firstLicenseDate": true,
"decodedFirstLicenseDate": "2010-01-15",
"observations": true,
"observationsSimilarity": 9.1,
"decodedObservations": "EAR;A",
"decodedIssueLocation": "SAO PAULO",
"decodedIssueState": "SP",
"lastIssueDate": true,
"decodedLastIssueDate": "2020-01-15",
"decodedValidationNumber": "123456789",
"decodedRenachNumber": "987654321"
}
},
"rg": {
"number": true,
"issuer": true,
"issuerState": true
},
"ctps": {
"number": true,
"issuer": true,
"issuerState": true
},
"passport": {
"number": false,
"issuer": true,
"issuerState": true
},
"militaryService": {
"number": true,
"issuer": true,
"issuerState": true
}
},
"address": {
"street": true,
"streetSimilarity": 9.4,
"number": true,
"numberSimilarity": 10.0,
"complement": false,
"complementSimilarity": 2.1,
"neighborhood": true,
"neighborhoodSimilarity": 9.9,
"postalCode": true,
"city": true,
"citySimilarity": 10.0,
"state": true,
}
},
"metadata": {
"processingTime": 2345,
"timestamp": "2026-04-20T19:04:17.412Z"
}
}
{
"success": false,
"error": {
"issues": [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"cpf"
],
"message": "Required"
}
],
"name": "ZodError"
}
}
{
"error": "INTERNAL_SERVER_ERROR",
"message": "Unexpected error while processing scan request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2026-04-20T19:04:17.412Z"
}
Request Body
Dados de identificação mínima do titular. Obrigatório informar um tipo e valor do documento
Conjunto de atributos utilizados na validação composta da identidade.
Show propriedades
Show propriedades
Dados biográficos do titular.
Show propriedades
Show propriedades
Nome civil informado para validação.Exemplo:
João da SilvaNome social informado para validação.Exemplo:
João SilvaNome da mãe informado para validação.Exemplo:
Maria da SilvaNome do pai informado para validação.Exemplo:
José da SilvaData de nascimento do titular.Exemplo:
1990-01-01Gênero informado para validação.Exemplo:
MALENacionalidade informada para validação.Exemplo:
BRAZILIANDados biométricos utilizados na validação.
Show propriedades
Show propriedades
Lista de impressões digitais a serem verificadas. Cada item representa uma digital com sua posição e imagem biométrica.
Show propriedades
Show propriedades
Posição do dedo conforme tabela padrão NIST (1–10).1 - Polegar Direito2 - Indicador Direito3 - Médio Direito4 - Anelar Direito5 - Mínimo Direito6 - Polegar Esquerdo7 - Indicador Esquerdo8 - Médio Esquerdo9 - Anelar Esquerdo10 - Mínimo EsquerdoExemplo:
1Imagem da digital em formato base64.Exemplo:
base64Documentos utilizados na validação.
Show propriedades
Show propriedades
Dados da CNH informados para validação.
Show propriedades
Show propriedades
Número de registro da CNH.Exemplo:
12345678900Categoria da CNH.Exemplo:
BSituação da CNH.Exemplo:
ISSUEDNúmero de registro estrangeiro associado.Exemplo:
G123456Data da primeira emissão.Exemplo:
2010-01-15Data da última emissão.Exemplo:
2020-01-15Data de vencimento do documento.Exemplo:
2030-01-15Indica se a CNH possui restrição.Exemplo:
falseObservações do documento.Exemplo:
EAR;AConteúdo do QR Code em base64.Exemplo:
base64Endereço informado para validação.
Show propriedades
Show propriedades
Logradouro informado para validação.Exemplo:
Rua das FloresNúmero do endereço.Exemplo:
123Complemento do endereço.Exemplo:
Apto 45Bairro informado para validação.Exemplo:
CentroCEP informado para validação.Exemplo:
01001000Cidade informada para validação.Exemplo:
São PauloEstado informado para validação.Exemplo:
SPResponse
Identificador interno da transação.Exemplo:
123e4567-e89b-12d3-a456-426614174000Resultado consolidado das validações executadas.
Show propriedades
Show propriedades
Resultado das validações de dados biográficos.
Show propriedades
Show propriedades
Indica se o nome civil foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o nome civil informado.Exemplo:
9.8Indica se o nome social foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o nome social informado.Exemplo:
10.0Indica se o nome da mãe foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o nome da mãe informada.Exemplo:
9.7Indica se o nome do pai foi validado com sucesso.Exemplo:
falseGrau de similaridade calculado para o nome do pai informado.Exemplo:
2.2Indica se a data de nascimento foi validada com sucesso.Exemplo:
trueIndica se o gênero foi validado com sucesso.Exemplo:
trueIndica se a nacionalidade foi validada com sucesso.Exemplo:
trueResultado das validações biométricas.
Show propriedades
Show propriedades
Resultado da validação facial.
Show propriedades
Show propriedades
Nível de confiança do resultado. Valores possíveis:Low: Alta probabilidade de fraude, recomendado reprovarMedium: Alguma probabilidade de fraude, zona cinzenta que precisa de reavaliaçãoHigh: Baixa probabilidade de fraude, recomendado aprovarMaximum: Probabilidade quase nula de fraude, recomendado aprovarExemplo:
MAXIMUMLista com o resultado individual de cada digital verificada.
Show propriedades
Show propriedades
Posição da digital verificada, conforme enviada na requisição.Exemplo:
1Nível de confiança do reconhecimento biométrico para aquela digital. Valores possíveis:Low: Alta probabilidade de fraude, recomendado reprovarMedium: Alguma probabilidade de fraude, zona cinzenta que precisa de reavaliaçãoHigh: Baixa probabilidade de fraude, recomendado aprovarMaximum: Probabilidade quase nula de fraude, recomendado aprovarExemplo:
MAXIMUMResultado das validações de documentos. Todos os campos retornam
true para informação válida e false para negativa na validação.Show propriedades
Show propriedades
Resultado das validações do CPF.
Resultado das validações da CNH.
Show propriedades
Show propriedades
Indica se o número de registro da CNH foi validado com sucesso.Exemplo:
trueIndica se a categoria da CNH foi validada com sucesso.Exemplo:
trueIndica se a situação da CNH foi validada com sucesso.Exemplo:
trueIndica se o registro estrangeiro foi validado com sucesso.Exemplo:
falseIndica se a data da primeira emissão foi validada com sucesso.Exemplo:
trueIndica se a data da última emissão foi validada com sucesso.Exemplo:
trueIndica se a data de vencimento foi validada com sucesso.Exemplo:
trueIndica se a informação de restrição foi validada com sucesso.Exemplo:
trueIndica se as observações da CNH foram validadas com sucesso.Exemplo:
trueResultado da validação e decodificação do QR Code da CNH.
Show propriedades
Show propriedades
Indica o código do motivo da não realização do QR Code, quando aplicável.Exemplo:
0Indica se o nome decodificado no QR Code foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o nome decodificado.Exemplo:
9.8Nome decodificado a partir do QR Code.Exemplo:
JOAO DA SILVANome civil decodificado a partir do QR Code.Exemplo:
JOAO DA SILVAIndica se o documento de origem decodificado foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o documento de origem.Exemplo:
10.0Documento de origem decodificado a partir do QR Code.Exemplo:
CNHIndica se a data de nascimento decodificada foi validada com sucesso.Exemplo:
trueData de nascimento decodificada a partir do QR Code.Exemplo:
1990-01-01Indica se a filiação materna decodificada foi validada com sucesso.Exemplo:
trueGrau de similaridade calculado para a filiação materna.Exemplo:
9.7Nome da mãe decodificado a partir do QR Code.Exemplo:
MARIA DA SILVAIndica se a filiação paterna decodificada foi validada com sucesso.Exemplo:
falseGrau de similaridade calculado para a filiação paterna.Exemplo:
2.2Nome do pai decodificado a partir do QR Code.Exemplo:
JOSE DA SILVAPermissão decodificada a partir do QR Code.Exemplo:
ACCInformação de ACC decodificada a partir do QR Code.Exemplo:
NIndica se a categoria decodificada foi validada com sucesso.Exemplo:
trueGrau de similaridade calculado para a categoria.Exemplo:
10.0Categoria decodificada a partir do QR Code.Exemplo:
BIndica se o número de registro decodificado foi validado com sucesso.Exemplo:
trueNúmero de registro decodificado a partir do QR Code.Exemplo:
12345678900Indica se a data de validade decodificada foi validada com sucesso.Exemplo:
trueData de validade decodificada a partir do QR Code.Exemplo:
2030-01-15Indica se a data da primeira habilitação decodificada foi validada com sucesso.Exemplo:
trueData da primeira habilitação decodificada a partir do QR Code.Exemplo:
2010-01-15Indica se as observações decodificadas foram validadas com sucesso.Exemplo:
trueGrau de similaridade calculado para as observações.Exemplo:
9.1Observações decodificadas a partir do QR Code.Exemplo:
EAR;ALocal de emissão decodificado a partir do QR Code.Exemplo:
SAO PAULOUF de emissão decodificada a partir do QR Code.Exemplo:
SPIndica se a data da última emissão decodificada foi validada com sucesso.Exemplo:
trueData da última emissão decodificada a partir do QR Code.Exemplo:
2020-01-15Número de validação decodificado a partir do QR Code.Exemplo:
123456789Número RENACH decodificado a partir do QR Code.Exemplo:
987654321Resultado das validações da CTPS.
Resultado das validações do passaporte.
Resultado das validações do documento militar.
Show propriedades
Show propriedades
Resultado das validações de endereço.
Show propriedades
Show propriedades
Indica se o logradouro foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o logradouro informado.Exemplo:
0.94Indica se o número do endereço foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o número informado.Exemplo:
10.0Indica se o complemento foi validado com sucesso.Exemplo:
falseGrau de similaridade calculado para o complemento informado.Exemplo:
1.4Indica se o bairro foi validado com sucesso.Exemplo:
trueGrau de similaridade calculado para o bairro informado.Exemplo:
9.6Indica se o CEP foi validado com sucesso.Exemplo:
trueIndica se a cidade foi validada com sucesso.Exemplo:
trueGrau de similaridade calculado para a cidade informada.Exemplo:
9.9Indica se o estado foi validado com sucesso.Exemplo:
true{
"scanId": "123e4567-e89b-12d3-a456-426614174000",
"identity": {
"type": "cpf",
"value": true
},
"attributes": {
"biographic": {
"name": true,
"nameSimilarity": 9.8,
"socialName": true,
"socialNameSimilarity": 9.9,
"motherName": true,
"motherNameSimilarity": 10.0,
"fatherName": false,
"fatherNameSimilarity": 1.2,
"dateOfBirth": true,
"gender": true,
"nationality": true
},
"biometrics": {
"face": {
"confidence": "HIGH",
},
"fingerprints": [
{
"position": 1,
"confidence": "MAXIMUM",
},
{
"position": 2,
"confidence": "HIGH",
}
]
},
"documents": {
"cpf": {
"number": true,
"status": true,
"registrationDate": true
},
"cnh": {
"registrationNumber": true,
"category": true,
"status": true,
"foreignRegistration": false,
"firstIssueDate": true,
"lastIssueDate": true,
"expirationDate": true,
"hasRestriction": true,
"observations": true,
"qrCode": {
"returnCode": "0",
"name": true,
"nameSimilarity": 9.9,
"decodedName": "JOAO DA SILVA",
"decodedCivilName": "JOAO DA SILVA",
"sourceDocument": true,
"sourceDocumentSimilarity": 10.0,
"decodedSourceDocument": "CNH",
"dateOfBirth": true,
"decodedDateOfBirth": "1990-01-01",
"motherName": true,
"motherNameSimilarity": 9.7,
"decodedMotherName": "MARIA DA SILVA",
"fatherName": false,
"fatherNameSimilarity": 2.2,
"decodedFatherName": "JOSE DA SILVA",
"decodedPermission": "ACC",
"decodedAcc": "N",
"category": true,
"categorySimilarity": 10.0,
"decodedCategory": "B",
"registrationNumber": true,
"decodedRegistrationNumber": "12345678900",
"expirationDate": true,
"decodedExpirationDate": "2030-01-15",
"firstLicenseDate": true,
"decodedFirstLicenseDate": "2010-01-15",
"observations": true,
"observationsSimilarity": 9.1,
"decodedObservations": "EAR;A",
"decodedIssueLocation": "SAO PAULO",
"decodedIssueState": "SP",
"lastIssueDate": true,
"decodedLastIssueDate": "2020-01-15",
"decodedValidationNumber": "123456789",
"decodedRenachNumber": "987654321"
}
},
"rg": {
"number": true,
"issuer": true,
"issuerState": true
},
"ctps": {
"number": true,
"issuer": true,
"issuerState": true
},
"passport": {
"number": false,
"issuer": true,
"issuerState": true
},
"militaryService": {
"number": true,
"issuer": true,
"issuerState": true
}
},
"address": {
"street": true,
"streetSimilarity": 9.4,
"number": true,
"numberSimilarity": 10.0,
"complement": false,
"complementSimilarity": 2.1,
"neighborhood": true,
"neighborhoodSimilarity": 9.9,
"postalCode": true,
"city": true,
"citySimilarity": 10.0,
"state": true,
}
},
"metadata": {
"processingTime": 2345,
"timestamp": "2026-04-20T19:04:17.412Z"
}
}
{
"success": false,
"error": {
"issues": [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"cpf"
],
"message": "Required"
}
],
"name": "ZodError"
}
}
{
"error": "INTERNAL_SERVER_ERROR",
"message": "Unexpected error while processing scan request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2026-04-20T19:04:17.412Z"
}
⌘I
ID Check Composto
curl --request POST \
--url https://api.valid.com/id-check/api/v1/scan \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"identity": {
"type": "<string>",
"value": "<string>"
},
"attributes": {
"biographic": {
"name": "<string>",
"socialName": "<string>",
"motherName": "<string>",
"fatherName": "<string>",
"dateOfBirth": "<string>",
"gender": "<string>",
"nationality": "<string>"
},
"biometrics": {
"face": {
"image": "<string>",
"referenceImage": "<string>"
},
"fingerprints": [
{
"position": 123,
"image": "<string>"
}
]
},
"documents": {
"cpf": {
"number": "<string>",
"status": "<string>",
"registrationDate": "<string>"
},
"cnh": {
"registrationNumber": "<string>",
"category": "<string>",
"status": "<string>",
"foreignRegistration": "<string>",
"firstIssueDate": "<string>",
"lastIssueDate": "<string>",
"expirationDate": "<string>",
"hasRestriction": true,
"observations": "<string>",
"qrCode": "<string>"
},
"rg": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"ctps": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"passport": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"militaryService": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
}
},
"address": {
"street": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"postalCode": "<string>",
"city": "<string>",
"state": "<string>"
}
}
}
'import requests
url = "https://api.valid.com/id-check/api/v1/scan"
payload = {
"identity": {
"type": "<string>",
"value": "<string>"
},
"attributes": {
"biographic": {
"name": "<string>",
"socialName": "<string>",
"motherName": "<string>",
"fatherName": "<string>",
"dateOfBirth": "<string>",
"gender": "<string>",
"nationality": "<string>"
},
"biometrics": {
"face": {
"image": "<string>",
"referenceImage": "<string>"
},
"fingerprints": [
{
"position": 123,
"image": "<string>"
}
]
},
"documents": {
"cpf": {
"number": "<string>",
"status": "<string>",
"registrationDate": "<string>"
},
"cnh": {
"registrationNumber": "<string>",
"category": "<string>",
"status": "<string>",
"foreignRegistration": "<string>",
"firstIssueDate": "<string>",
"lastIssueDate": "<string>",
"expirationDate": "<string>",
"hasRestriction": True,
"observations": "<string>",
"qrCode": "<string>"
},
"rg": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"ctps": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"passport": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
},
"militaryService": {
"number": "<string>",
"issuer": "<string>",
"issuerState": "<string>"
}
},
"address": {
"street": "<string>",
"number": "<string>",
"complement": "<string>",
"neighborhood": "<string>",
"postalCode": "<string>",
"city": "<string>",
"state": "<string>"
}
}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identity: {type: '<string>', value: '<string>'},
attributes: {
biographic: {
name: '<string>',
socialName: '<string>',
motherName: '<string>',
fatherName: '<string>',
dateOfBirth: '<string>',
gender: '<string>',
nationality: '<string>'
},
biometrics: {
face: {image: '<string>', referenceImage: '<string>'},
fingerprints: [{position: 123, image: '<string>'}]
},
documents: {
cpf: {number: '<string>', status: '<string>', registrationDate: '<string>'},
cnh: {
registrationNumber: '<string>',
category: '<string>',
status: '<string>',
foreignRegistration: '<string>',
firstIssueDate: '<string>',
lastIssueDate: '<string>',
expirationDate: '<string>',
hasRestriction: true,
observations: '<string>',
qrCode: '<string>'
},
rg: {number: '<string>', issuer: '<string>', issuerState: '<string>'},
ctps: {number: '<string>', issuer: '<string>', issuerState: '<string>'},
passport: {number: '<string>', issuer: '<string>', issuerState: '<string>'},
militaryService: {number: '<string>', issuer: '<string>', issuerState: '<string>'}
},
address: {
street: '<string>',
number: '<string>',
complement: '<string>',
neighborhood: '<string>',
postalCode: '<string>',
city: '<string>',
state: '<string>'
}
}
})
};
fetch('https://api.valid.com/id-check/api/v1/scan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.valid.com/id-check/api/v1/scan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identity' => [
'type' => '<string>',
'value' => '<string>'
],
'attributes' => [
'biographic' => [
'name' => '<string>',
'socialName' => '<string>',
'motherName' => '<string>',
'fatherName' => '<string>',
'dateOfBirth' => '<string>',
'gender' => '<string>',
'nationality' => '<string>'
],
'biometrics' => [
'face' => [
'image' => '<string>',
'referenceImage' => '<string>'
],
'fingerprints' => [
[
'position' => 123,
'image' => '<string>'
]
]
],
'documents' => [
'cpf' => [
'number' => '<string>',
'status' => '<string>',
'registrationDate' => '<string>'
],
'cnh' => [
'registrationNumber' => '<string>',
'category' => '<string>',
'status' => '<string>',
'foreignRegistration' => '<string>',
'firstIssueDate' => '<string>',
'lastIssueDate' => '<string>',
'expirationDate' => '<string>',
'hasRestriction' => true,
'observations' => '<string>',
'qrCode' => '<string>'
],
'rg' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
],
'ctps' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
],
'passport' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
],
'militaryService' => [
'number' => '<string>',
'issuer' => '<string>',
'issuerState' => '<string>'
]
],
'address' => [
'street' => '<string>',
'number' => '<string>',
'complement' => '<string>',
'neighborhood' => '<string>',
'postalCode' => '<string>',
'city' => '<string>',
'state' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.valid.com/id-check/api/v1/scan"
payload := strings.NewReader("{\n \"identity\": {\n \"type\": \"<string>\",\n \"value\": \"<string>\"\n },\n \"attributes\": {\n \"biographic\": {\n \"name\": \"<string>\",\n \"socialName\": \"<string>\",\n \"motherName\": \"<string>\",\n \"fatherName\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"gender\": \"<string>\",\n \"nationality\": \"<string>\"\n },\n \"biometrics\": {\n \"face\": {\n \"image\": \"<string>\",\n \"referenceImage\": \"<string>\"\n },\n \"fingerprints\": [\n {\n \"position\": 123,\n \"image\": \"<string>\"\n }\n ]\n },\n \"documents\": {\n \"cpf\": {\n \"number\": \"<string>\",\n \"status\": \"<string>\",\n \"registrationDate\": \"<string>\"\n },\n \"cnh\": {\n \"registrationNumber\": \"<string>\",\n \"category\": \"<string>\",\n \"status\": \"<string>\",\n \"foreignRegistration\": \"<string>\",\n \"firstIssueDate\": \"<string>\",\n \"lastIssueDate\": \"<string>\",\n \"expirationDate\": \"<string>\",\n \"hasRestriction\": true,\n \"observations\": \"<string>\",\n \"qrCode\": \"<string>\"\n },\n \"rg\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"ctps\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"passport\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"militaryService\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n }\n },\n \"address\": {\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.valid.com/id-check/api/v1/scan")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identity\": {\n \"type\": \"<string>\",\n \"value\": \"<string>\"\n },\n \"attributes\": {\n \"biographic\": {\n \"name\": \"<string>\",\n \"socialName\": \"<string>\",\n \"motherName\": \"<string>\",\n \"fatherName\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"gender\": \"<string>\",\n \"nationality\": \"<string>\"\n },\n \"biometrics\": {\n \"face\": {\n \"image\": \"<string>\",\n \"referenceImage\": \"<string>\"\n },\n \"fingerprints\": [\n {\n \"position\": 123,\n \"image\": \"<string>\"\n }\n ]\n },\n \"documents\": {\n \"cpf\": {\n \"number\": \"<string>\",\n \"status\": \"<string>\",\n \"registrationDate\": \"<string>\"\n },\n \"cnh\": {\n \"registrationNumber\": \"<string>\",\n \"category\": \"<string>\",\n \"status\": \"<string>\",\n \"foreignRegistration\": \"<string>\",\n \"firstIssueDate\": \"<string>\",\n \"lastIssueDate\": \"<string>\",\n \"expirationDate\": \"<string>\",\n \"hasRestriction\": true,\n \"observations\": \"<string>\",\n \"qrCode\": \"<string>\"\n },\n \"rg\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"ctps\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"passport\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"militaryService\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n }\n },\n \"address\": {\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valid.com/id-check/api/v1/scan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identity\": {\n \"type\": \"<string>\",\n \"value\": \"<string>\"\n },\n \"attributes\": {\n \"biographic\": {\n \"name\": \"<string>\",\n \"socialName\": \"<string>\",\n \"motherName\": \"<string>\",\n \"fatherName\": \"<string>\",\n \"dateOfBirth\": \"<string>\",\n \"gender\": \"<string>\",\n \"nationality\": \"<string>\"\n },\n \"biometrics\": {\n \"face\": {\n \"image\": \"<string>\",\n \"referenceImage\": \"<string>\"\n },\n \"fingerprints\": [\n {\n \"position\": 123,\n \"image\": \"<string>\"\n }\n ]\n },\n \"documents\": {\n \"cpf\": {\n \"number\": \"<string>\",\n \"status\": \"<string>\",\n \"registrationDate\": \"<string>\"\n },\n \"cnh\": {\n \"registrationNumber\": \"<string>\",\n \"category\": \"<string>\",\n \"status\": \"<string>\",\n \"foreignRegistration\": \"<string>\",\n \"firstIssueDate\": \"<string>\",\n \"lastIssueDate\": \"<string>\",\n \"expirationDate\": \"<string>\",\n \"hasRestriction\": true,\n \"observations\": \"<string>\",\n \"qrCode\": \"<string>\"\n },\n \"rg\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"ctps\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"passport\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n },\n \"militaryService\": {\n \"number\": \"<string>\",\n \"issuer\": \"<string>\",\n \"issuerState\": \"<string>\"\n }\n },\n \"address\": {\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"scanId": "123e4567-e89b-12d3-a456-426614174000",
"identity": {
"type": "cpf",
"value": true
},
"attributes": {
"biographic": {
"name": true,
"nameSimilarity": 9.8,
"socialName": true,
"socialNameSimilarity": 9.9,
"motherName": true,
"motherNameSimilarity": 10.0,
"fatherName": false,
"fatherNameSimilarity": 1.2,
"dateOfBirth": true,
"gender": true,
"nationality": true
},
"biometrics": {
"face": {
"confidence": "HIGH",
},
"fingerprints": [
{
"position": 1,
"confidence": "MAXIMUM",
},
{
"position": 2,
"confidence": "HIGH",
}
]
},
"documents": {
"cpf": {
"number": true,
"status": true,
"registrationDate": true
},
"cnh": {
"registrationNumber": true,
"category": true,
"status": true,
"foreignRegistration": false,
"firstIssueDate": true,
"lastIssueDate": true,
"expirationDate": true,
"hasRestriction": true,
"observations": true,
"qrCode": {
"returnCode": "0",
"name": true,
"nameSimilarity": 9.9,
"decodedName": "JOAO DA SILVA",
"decodedCivilName": "JOAO DA SILVA",
"sourceDocument": true,
"sourceDocumentSimilarity": 10.0,
"decodedSourceDocument": "CNH",
"dateOfBirth": true,
"decodedDateOfBirth": "1990-01-01",
"motherName": true,
"motherNameSimilarity": 9.7,
"decodedMotherName": "MARIA DA SILVA",
"fatherName": false,
"fatherNameSimilarity": 2.2,
"decodedFatherName": "JOSE DA SILVA",
"decodedPermission": "ACC",
"decodedAcc": "N",
"category": true,
"categorySimilarity": 10.0,
"decodedCategory": "B",
"registrationNumber": true,
"decodedRegistrationNumber": "12345678900",
"expirationDate": true,
"decodedExpirationDate": "2030-01-15",
"firstLicenseDate": true,
"decodedFirstLicenseDate": "2010-01-15",
"observations": true,
"observationsSimilarity": 9.1,
"decodedObservations": "EAR;A",
"decodedIssueLocation": "SAO PAULO",
"decodedIssueState": "SP",
"lastIssueDate": true,
"decodedLastIssueDate": "2020-01-15",
"decodedValidationNumber": "123456789",
"decodedRenachNumber": "987654321"
}
},
"rg": {
"number": true,
"issuer": true,
"issuerState": true
},
"ctps": {
"number": true,
"issuer": true,
"issuerState": true
},
"passport": {
"number": false,
"issuer": true,
"issuerState": true
},
"militaryService": {
"number": true,
"issuer": true,
"issuerState": true
}
},
"address": {
"street": true,
"streetSimilarity": 9.4,
"number": true,
"numberSimilarity": 10.0,
"complement": false,
"complementSimilarity": 2.1,
"neighborhood": true,
"neighborhoodSimilarity": 9.9,
"postalCode": true,
"city": true,
"citySimilarity": 10.0,
"state": true,
}
},
"metadata": {
"processingTime": 2345,
"timestamp": "2026-04-20T19:04:17.412Z"
}
}
{
"success": false,
"error": {
"issues": [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"cpf"
],
"message": "Required"
}
],
"name": "ZodError"
}
}
{
"error": "INTERNAL_SERVER_ERROR",
"message": "Unexpected error while processing scan request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2026-04-20T19:04:17.412Z"
}