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"
}
}
]
}
🇦🇷 아르헨티나
아르헨티나 DNI 검증(RENAPER) API
Didit을 통해 아르헨티나 RENAPER 공식 데이터베이스를 조회하는 DNI 검증. 건당 $0.20부터, 계약 및 최소 사용량 없음.
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"
}
}
]
}
공식 RENAPER 민사 등록부에서 아르헨티나 DNI를 검증하고, 등록된 사진과 생체 얼굴 대조를 수행합니다. 전체 인구의 100%를 커버합니다. Didit은 이 서비스를
Si hay un paso de Prueba de vida antes, RENAPER compara la selfie en directo. Si no lo hay, Didit envía en su lugar el retrato impreso en el documento de identidad, lo que confirma la foto del documento pero no que la persona frente a la cámara sea su titular. Un ID de servicio que el flujo no puede ejecutar se rechaza con un
POST /v3/database-validation/을 통해 제공하므로, 제출된 데이터를 공식 출처와 대조하고 정규화된 일치 결과를 받을 수 있습니다. 입력 형식: document_number에는 아르헨티나 DNI(7~8자리, 선택적 M/F 접두사)를 입력합니다.
적용 범위
- 적용 범위: 100%
- 국가: 아르헨티나
- 서비스 ID:
arg_renaper - 데이터 도메인: 신원
- 카테고리: 국가 신분증 등록부
입력값
| 필드 | 필수 여부 | 예시 |
|---|---|---|
document_number | 예 | 11111111 |
selfie | 예 | @./selfie.jpg |
gender | 예 | M |
first_name | 아니요 | John |
last_name | 아니요 | Doe |
date_of_birth | 아니요 | 1990-01-01 |
vendor_data | 아니요 | user-1234 |
- 필수 입력값:
document_number,selfie,gender - 선택 입력값:
first_name,last_name,date_of_birth,vendor_data - 동의: 필요하지 않습니다
- 워크플로 사용 가능 여부: 워크플로에서 사용할 수 있습니다
- 적용 범위: 100%
- 요금: 성공한 쿼리당 $0.20
본문 파라미터
string
기본값:"ARG"
필수
이 데이터베이스 서비스의 ISO 3166-1 alpha-3 국가 코드입니다.예시:
ARGstring
기본값:"arg_renaper"
필수
이 서비스 ID를 포함하는 배열입니다. 서비스를 고정하면 요청이 정확히 이 데이터베이스로 범위가 제한됩니다.예시:
arg_renaperstring
기본값:"11111111"
필수
사용자가 제공했거나 사용자의 문서에서 추출한 문서 번호입니다.예시:
11111111file
필수
생체 데이터베이스 검증을 위해 업로드할 셀피 이미지 파일입니다. 허용 형식: JPEG, PNG 또는 WebP.예시:
@./selfie.jpgstring
기본값:"M"
필수
데이터베이스에서 요구하는 경우 사용하는 성별 값입니다.허용 값:
M(남성), F(여성), X(기타 또는 알 수 없음).예시: Mstring
검증할 이름입니다.예시:
Johnstring
검증할 성입니다.예시:
Doestring
YYYY-MM-DD 형식의 생년월일입니다.예시: 1990-01-01string
기본값:"user-1234"
내부 사용자 ID 등 이 사용자를 나타내는 고정된 사용자 참조값입니다. Didit은 이 값을 사용해 단독으로 수행된 검사를 같은 최종 사용자에게 연결하고, 중복 감지 노이즈를 줄입니다.예시:
user-1234입력 규칙 및 검증 참고 사항
- 아르헨티나 DNI(7~8자리, 선택적 M/F 접두사)
document_number는 7~9자여야 합니다.document_number는[MFmf]?\d{7,8}과 일치해야 합니다.
호출 방법
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));
성공한 모든 호출은 HTTP 200을 반환합니다. 실제로 무슨 일이 일어났는지는 outcome_code 필드가 알려줍니다. 예를 들어 실제 생체 불일치(BIOMETRIC_NO_MATCH)와 판독할 수 없었던 셀피(BIOMETRIC_IMAGE_UNUSABLE)를 구분합니다. 표시되는 status는 기본 기능 상태이며, 구성한 부분 일치 / 불일치 작업에 따라 재정의될 수 있습니다.MATCH: 등록부가 신원을 확인했으며, 검사한 모든 필드가 일치했습니다.{
"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: 제출된 데이터에 대해 등록부가 일치하는 결과를 반환하지 않았습니다.{
"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: 얼굴 대조 점수가 허용 임계값보다 낮습니다. 셀피 속 인물이 등록부 사진의 인물과 동일하지 않습니다.{
"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: 셀피를 처리할 수 없습니다(비어 있음, 얼굴 없음, 낮은 품질, 또는 등록부가 이미지를 읽을 수 없음). 사용자에게 셀피를 다시 촬영하도록 안내하세요.{
"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"
}
}
]
}
반환 데이터
source_data에 노출되는 정확한 필드는 등록부가 반환하는 내용에 따라 달라집니다. arg_renaper에 대해 생성된 예시는 현재 다음의 정규화된 형식을 문서화합니다.
date_of_birthface_match_scorefirst_namefull_nameidentification_numberlast_nametax_idtax_id_type
요금 및 SLA
아르헨티나 - DNI 검증(RENAPER) 쿼리는 Didit이 검증 출처로부터 확정적인 결과를 받은 경우에만 과금됩니다.- 호출당 가격: $0.20 USD.
- 과금: 성공한 쿼리당 과금됩니다. 등록부에 연결할 수 없는 경우, 필수 필드가 누락된 경우, 또는 요청이 출처에 도달하기 전에 거부된 경우에는 요금이 부과되지 않습니다.
- 지연 시간: 일반적인 p95 기준 2초 미만입니다.
- 가용성: Didit 측 분기당 99.9%입니다. 하위 출처의 가용성은 국가와 데이터셋에 따라 다릅니다.
Puntuación de coincidencia facial
face_match_score es la similitud que calcula RENAPER entre la selfie y la foto registrada para el DNI. Se envía como un número entero de 0 a 100 dentro de una cadena, por ejemplo "92". No es una probabilidad entre 0 y 1.
La comprobación devuelve BIOMETRIC_NO_MATCH cuando RENAPER informa de que el rostro no coincide, o cuando la puntuación es inferior a 50. Con 50 o más, el rostro se acepta y, a continuación, el nombre y la fecha de nacimiento registrados se comparan con los datos que enviaste.
La foto registrada puede tener varios años de antigüedad, así que una persona real puede obtener una puntuación baja tras un cambio importante en su apariencia. Considera enviar BIOMETRIC_NO_MATCH a revisión manual en lugar de rechazarlo directamente, con las acciones para Partial Match / No Match.
Cuando RENAPER no responde
Si no se puede contactar con RENAPER o responde con un error, el resultado esREGISTRY_UNAVAILABLE: no se comprobó nada sobre la persona y la llamada no se factura. La misma solicitud puede completarse con éxito si la reintentas más tarde. Consulta Códigos de resultado para saber cómo gestionarlo.
Documentos que lee un flujo de verificación (workflow)
Dentro de un flujo, el número de DNI y el género provienen del paso de Verificación de identidad, que lee la tarjeta DNI argentina y el DNI digital. Los residentes extranjeros tienen la misma tarjeta DNI y se verifican de la misma forma. El antiguo DNI en formato libreta no es un documento compatible con la Verificación de identidad, por lo que un usuario que solo tenga ese documento no puede completar ese paso. Aun así, puedes comprobar su número de DNI directamente conPOST /v3/database-validation/.
Uso en un flujo
Añade el servicio a un paso de Validación de base de datos después de la Verificación de identidad. Por ejemplo, conPOST /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 lo nombra, de modo que el paso nunca se guarda sin la comprobación que solicitaste. Consulta Configuración de funciones del flujo de verificación para ver todos los ajustes de Validación de base de datos.
Seguir leyendo
마지막 수정일 2026년 11월 7일