curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ARG" \
-F "services=arg_renaper" \
-F "vendor_data=user-1234" \
-F "document_number=11111111" \
-F "selfie=@./selfie.jpg" \
-F "gender=M"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="ARG",
services=["arg_renaper"],
document_number="11111111",
gender="M",
vendor_data="user-1234",
selfie=open("selfie.jpg", "rb"),
)
print(result)
import Didit, { fileFromPath } from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "ARG",
services: ["arg_renaper"],
document_number: "11111111",
gender: "M",
vendor_data: "user-1234",
selfie: await fileFromPath("selfie.jpg"),
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "ARG",
Services: didit.Some([]string{"arg_renaper"}),
DocumentNumber: didit.String("11111111"),
Gender: didit.Some(didit.DatabaseValidationValidateParamsGender("M")),
VendorData: didit.String("user-1234"),
Selfie: didit.Some(didit.FileFromPath("selfie.jpg")),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
import java.nio.file.Path;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
.issuingState("ARG")
.services(List.of("arg_renaper"))
.documentNumber("11111111")
.gender(DatabaseValidationValidateParams.Gender.of("M"))
.vendorData("user-1234")
.selfie(Path.of("selfie.jpg"))
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
use Didit\File;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'ARG',
'services' => ['arg_renaper'],
'document_number' => '11111111',
'gender' => 'M',
'vendor_data' => 'user-1234',
'selfie' => File::fromPath('selfie.jpg'),
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "ARG",
services: ["arg_renaper"],
document_number: "11111111",
gender: "M",
vendor_data: "user-1234",
selfie: Pathname("selfie.jpg")
)
puts result.to_h
using System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "ARG",
Services = new string[] { "arg_renaper" },
DocumentNumber = "11111111",
Gender = new DatabaseValidationValidateParamsGender("M"),
VendorData = "user-1234",
Selfie = FileUpload.FromPath("selfie.jpg"),
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ARG",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"date_of_birth": "1990-01-01",
"face_match_score": "92",
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"tax_id": "SAMPLE-12345",
"tax_id_type": "SAMPLE-12345"
},
"validation": {
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_NO_MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
🇦🇷 Argentina
Verificação de DNI Argentina (RENAPER) API
Validação de DNI na Argentina (RENAPER) via Didit: consulta à base de dados oficial. A partir de $0.20 por chamada, sem contratos nem mínimos.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ARG" \
-F "services=arg_renaper" \
-F "vendor_data=user-1234" \
-F "document_number=11111111" \
-F "selfie=@./selfie.jpg" \
-F "gender=M"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="ARG",
services=["arg_renaper"],
document_number="11111111",
gender="M",
vendor_data="user-1234",
selfie=open("selfie.jpg", "rb"),
)
print(result)
import Didit, { fileFromPath } from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "ARG",
services: ["arg_renaper"],
document_number: "11111111",
gender: "M",
vendor_data: "user-1234",
selfie: await fileFromPath("selfie.jpg"),
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "ARG",
Services: didit.Some([]string{"arg_renaper"}),
DocumentNumber: didit.String("11111111"),
Gender: didit.Some(didit.DatabaseValidationValidateParamsGender("M")),
VendorData: didit.String("user-1234"),
Selfie: didit.Some(didit.FileFromPath("selfie.jpg")),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
import java.nio.file.Path;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
.issuingState("ARG")
.services(List.of("arg_renaper"))
.documentNumber("11111111")
.gender(DatabaseValidationValidateParams.Gender.of("M"))
.vendorData("user-1234")
.selfie(Path.of("selfie.jpg"))
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
use Didit\File;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'ARG',
'services' => ['arg_renaper'],
'document_number' => '11111111',
'gender' => 'M',
'vendor_data' => 'user-1234',
'selfie' => File::fromPath('selfie.jpg'),
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "ARG",
services: ["arg_renaper"],
document_number: "11111111",
gender: "M",
vendor_data: "user-1234",
selfie: Pathname("selfie.jpg")
)
puts result.to_h
using System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "ARG",
Services = new string[] { "arg_renaper" },
DocumentNumber = "11111111",
Gender = new DatabaseValidationValidateParamsGender("M"),
VendorData = "user-1234",
Selfie = FileUpload.FromPath("selfie.jpg"),
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ARG",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"date_of_birth": "1990-01-01",
"face_match_score": "92",
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"tax_id": "SAMPLE-12345",
"tax_id_type": "SAMPLE-12345"
},
"validation": {
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_NO_MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
Verifica o DNI argentino no registo civil oficial da RENAPER, com correspondência facial biométrica face à fotografia registada. Cobertura de 100% da população. A Didit disponibiliza este serviço através de
Com um passo de Prova de vida antes dele, a RENAPER compara o selfie em direto. Sem esse passo, a Didit envia em seu lugar o retrato impresso no documento de identificação, o que confirma a fotografia do documento, mas não que a pessoa em frente à câmara é o seu titular. Um ID de serviço que o fluxo não consegue executar é rejeitado com um
POST /v3/database-validation/ para que possa validar os dados submetidos contra a fonte oficial e receber resultados de correspondência normalizados. Formato de entrada: document_number aceita o DNI argentino (7 a 8 dígitos, com prefixo opcional M/F).
Cobertura
- Cobertura: 100%
- País: Argentina
- ID do serviço:
arg_renaper - Domínio de dados: Identidade
- Categoria: NationalIDRegistry
Campos de entrada
| Campo | Obrigatório | Exemplo |
|---|---|---|
document_number | Sim | 11111111 |
selfie | Sim | @./selfie.jpg |
gender | Sim | M |
first_name | Não | John |
last_name | Não | Doe |
date_of_birth | Não | 1990-01-01 |
vendor_data | Não | user-1234 |
- Campos obrigatórios:
document_number,selfie,gender - Campos opcionais:
first_name,last_name,date_of_birth,vendor_data - Consentimento: Não é necessário
- Disponibilidade no fluxo: Disponível no fluxo
- Cobertura: 100%
- Preço: $0.20 por consulta bem-sucedida
Parâmetros do corpo
string
padrão:"ARG"
obrigatório
Código de país ISO 3166-1 alpha-3 para este serviço de base de dados.Exemplo:
ARGstring
padrão:"arg_renaper"
obrigatório
Matriz que contém este ID de serviço. Fixar o serviço mantém o pedido limitado a esta base de dados exata.Exemplo:
arg_renaperstring
padrão:"11111111"
obrigatório
Número do documento extraído ou fornecido pelo utilizador.Exemplo:
11111111file
obrigatório
Ficheiro de imagem de selfie a carregar para a validação biométrica de base de dados. Formatos aceites: JPEG, PNG ou WebP.Exemplo:
@./selfie.jpgstring
padrão:"M"
obrigatório
Valor do género, quando exigido pela base de dados.Valores permitidos:
M (masculino), F (feminino), X (outro ou desconhecido).Exemplo: Mstring
Nome próprio a validar.Exemplo:
Johnstring
Apelido a validar.Exemplo:
Doestring
Data de nascimento no formato
YYYY-MM-DD.Exemplo: 1990-01-01string
padrão:"user-1234"
A sua referência estável de utilizador para esta pessoa, como o ID interno do utilizador. A Didit usa-a para associar verificações independentes ao mesmo utilizador final e reduzir o ruído da deteção de duplicados.Exemplo:
user-1234Regras de entrada e notas de validação
- DNI argentino (7 a 8 dígitos, com prefixo opcional M/F)
document_numberdeve ter entre 7 e 9 caracteres.document_numberdeve corresponder a[MFmf]?\d{7,8}.
Como fazer a chamada
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ARG" \
-F "services=arg_renaper" \
-F "vendor_data=user-1234" \
-F "document_number=11111111" \
-F "selfie=@./selfie.jpg" \
-F "gender=M"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="ARG",
services=["arg_renaper"],
document_number="11111111",
gender="M",
vendor_data="user-1234",
selfie=open("selfie.jpg", "rb"),
)
print(result)
import Didit, { fileFromPath } from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "ARG",
services: ["arg_renaper"],
document_number: "11111111",
gender: "M",
vendor_data: "user-1234",
selfie: await fileFromPath("selfie.jpg"),
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "ARG",
Services: didit.Some([]string{"arg_renaper"}),
DocumentNumber: didit.String("11111111"),
Gender: didit.Some(didit.DatabaseValidationValidateParamsGender("M")),
VendorData: didit.String("user-1234"),
Selfie: didit.Some(didit.FileFromPath("selfie.jpg")),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
import java.nio.file.Path;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
.issuingState("ARG")
.services(List.of("arg_renaper"))
.documentNumber("11111111")
.gender(DatabaseValidationValidateParams.Gender.of("M"))
.vendorData("user-1234")
.selfie(Path.of("selfie.jpg"))
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
use Didit\File;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'ARG',
'services' => ['arg_renaper'],
'document_number' => '11111111',
'gender' => 'M',
'vendor_data' => 'user-1234',
'selfie' => File::fromPath('selfie.jpg'),
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "ARG",
services: ["arg_renaper"],
document_number: "11111111",
gender: "M",
vendor_data: "user-1234",
selfie: Pathname("selfie.jpg")
)
puts result.to_h
using System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "ARG",
Services = new string[] { "arg_renaper" },
DocumentNumber = "11111111",
Gender = new DatabaseValidationValidateParamsGender("M"),
VendorData = "user-1234",
Selfie = FileUpload.FromPath("selfie.jpg"),
});
Console.WriteLine(JsonSerializer.Serialize(result));
Cada chamada bem-sucedida devolve HTTP 200. O campo outcome_code indica o que efetivamente aconteceu, distinguindo, por exemplo, uma incompatibilidade biométrica real (BIOMETRIC_NO_MATCH) de uma selfie que não pôde ser lida (BIOMETRIC_IMAGE_UNUSABLE). O status apresentado é o estado predefinido da funcionalidade; as ações configuradas para Correspondência parcial / Sem correspondência podem substituí-lo.MATCH: O registo confirmou a identidade e todos os campos verificados corresponderam.{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ARG",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"date_of_birth": "1990-01-01",
"face_match_score": "92",
"first_name": "John",
"full_name": "John Doe",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe",
"tax_id": "SAMPLE-12345",
"tax_id_type": "SAMPLE-12345"
},
"validation": {
"identification_number": "full_match"
}
}
]
}
NO_MATCH: O registo não devolveu qualquer correspondência para os dados submetidos.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"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, ou seja, a selfie não é da mesma pessoa que aparece na fotografia do registo.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_NO_MATCH",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
BIOMETRIC_IMAGE_UNUSABLE: A selfie não pôde ser processada (vazia, sem rosto, com baixa qualidade, ou o registo não a conseguiu ler). Peça ao utilizador que tire uma nova selfie.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ARG",
"match_type": "no_match",
"validations": [
{
"outcome_code": "BIOMETRIC_IMAGE_UNUSABLE",
"service_id": "arg_renaper",
"service_name": "Argentina - DNI verification (RENAPER)",
"source_data": {
"identification_number": "NO_MATCH"
},
"validation": {
"identification_number": "no_match"
}
}
]
}
Dados devolvidos
Os campos exatos apresentados emsource_data dependem do que o registo devolve. O exemplo gerado para arg_renaper documenta atualmente esta estrutura normalizada:
date_of_birthface_match_scorefirst_namefull_nameidentification_numberlast_nametax_idtax_id_type
Preços e SLAs
Argentina - As consultas de verificação de DNI (RENAPER) são faturadas apenas quando a Didit recebe um resultado conclusivo da fonte de validação.- Preço por chamada: $0.20 USD.
- Faturação: por consulta bem-sucedida. Não lhe é cobrado quando o registo não está acessível, quando faltam campos obrigatórios ou quando o pedido é rejeitado antes de chegar à fonte.
- Latência: p95 típico < 2 s.
- Disponibilidade: 99.9% por trimestre do lado da Didit; a disponibilidade da fonte a jusante varia consoante o país e o conjunto de dados.
Pontuação de correspondência facial
face_match_score é a semelhança calculada pela RENAPER entre o selfie e a fotografia registada para o DNI, enviada como número inteiro de 0 a 100 numa string, por exemplo "92". Não é uma probabilidade entre 0 e 1.
A verificação devolve BIOMETRIC_NO_MATCH quando a RENAPER indica que o rosto não corresponde, ou quando a pontuação é inferior a 50. Com 50 ou mais, o rosto é aceite e o nome e a data de nascimento registados são então comparados com os dados enviados.
A fotografia registada pode ter vários anos, pelo que um utilizador genuíno pode obter uma pontuação baixa após uma alteração grande da aparência. Considere enviar BIOMETRIC_NO_MATCH para revisão manual, em vez de o recusar de imediato, com as ações Partial Match / No Match.
Quando a RENAPER não responde
Se a RENAPER não puder ser contactada ou responder com um erro, o resultado éREGISTRY_UNAVAILABLE: nada sobre a pessoa foi verificado, e o pedido não é faturado. O mesmo pedido pode ser bem-sucedido se for repetido mais tarde. Consulte Códigos de resultado para saber como tratar este caso.
Documentos que um fluxo lê
Dentro de um fluxo, o número do DNI e o género são obtidos no passo de Verificação de identidade, que lê o cartão DNI argentino e o DNI digital. Os residentes estrangeiros têm o mesmo cartão DNI e são verificados da mesma forma. O antigo DNI em formato de livreto (libreta) não é um documento suportado pela Verificação de identidade, pelo que um utilizador que tenha apenas este documento não consegue concluir esse passo. Pode, ainda assim, verificar o número do DNI diretamente comPOST /v3/database-validation/.
Utilizar num fluxo
Adicione o serviço a um passo de Validação de base de dados após a Verificação de identidade. Por exemplo, comPOST /v3/workflows/:
{
"workflow_label": "Argentina KYC with RENAPER",
"features": [
{"feature": "OCR"},
{"feature": "LIVENESS", "config": {"face_liveness_method": "PASSIVE"}},
{
"feature": "DATABASE_VALIDATION",
"config": {"database_validation_countries": {"ARG": {"services": ["arg_renaper"]}}}
}
]
}
400 que o indica, pelo que o passo nunca é guardado sem a verificação que pediu. Consulte Configurações de funcionalidades do fluxo para todas as definições de Validação de base de dados.
Continuar a ler
Última modificação em 7 de novembro de 2026