> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Аргентина: проверка DNI (RENAPER) через API

> Проверка DNI в Аргентине (RENAPER) через Didit: запрос к официальной базе Аргентины. Оплата за вызов от $0.20, без контрактов и минимумов.

Проверяет аргентинский DNI по официальному гражданскому реестру RENAPER с биометрическим сравнением лица с фотографией, которая хранится в реестре. Покрытие населения составляет 100%. Didit предоставляет этот сервис через `POST /v3/database-validation/`, чтобы вы могли сверить отправленные данные с первоисточником и получить нормализованные результаты сравнения. Формат ввода: `document_number` принимает аргентинский DNI (7-8 цифр, необязательный префикс M/F).

## Покрытие

* **Покрытие:** 100%
* **Страна:** Аргентина
* **ID сервиса:** `arg_renaper`
* **Домен данных:** Идентичность
* **Категория:** Реестр национальных удостоверений личности

RENAPER - это реестр, выдающий все аргентинские DNI, поэтому каждый номер DNI есть в реестре, включая DNI, выданные иностранным резидентам. Сравнение лица сопоставляет селфи с фотографией, которую RENAPER хранит для этого DNI.

## Входные данные

| Поле | Обязательно | Пример |
| - | -: | - |
| `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 за успешный запрос

## Параметры тела запроса

**issuing\_state** `string` *required* (default: ARG)

Код страны по ISO 3166-1 alpha-3 для этого сервиса базы данных.

Пример: `ARG`

**services** `string` *required* (default: arg\_renaper)

Массив, содержащий ID этого сервиса. Фиксация сервиса ограничивает запрос этой конкретной базой данных.

Пример: `arg_renaper`

**document\_number** `string` *required* (default: 11111111)

Номер документа, извлечённый из документа или предоставленный пользователем.

Пример: `11111111`

**selfie** `file` *required*

Файл изображения селфи для биометрической проверки по базе данных. Допустимые форматы: JPEG, PNG или WebP.

Пример: `@./selfie.jpg`

**gender** `string` *required* (default: M)

Значение пола, если это требуется базой данных.

Допустимые значения: `M` (мужской), `F` (женский), `X` (другое или неизвестное значение).

Пример: `M`

**first\_name** `string`

Имя, которое нужно проверить.

Пример: `John`

**last\_name** `string`

Фамилия, которую нужно проверить.

Пример: `Doe`

**date\_of\_birth** `string`

Дата рождения в формате `YYYY-MM-DD`.

Пример: `1990-01-01`

**vendor\_data** `string` (default: user-1234)

Ваш стабильный идентификатор пользователя, например внутренний ID пользователя. Didit использует его, чтобы связать отдельные проверки с одним и тем же конечным пользователем и снизить количество ложных срабатываний при поиске дубликатов.

Пример: `user-1234`

## Правила ввода и примечания к проверке

* Аргентинский DNI (7-8 цифр, необязательный префикс M/F)
* `document_number` должен быть длиной 7-9 символов.
* `document_number` должен соответствовать шаблону `[MFmf]?\d{7,8}`.

## Как вызвать

```bash cURL theme={null}
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"
```

```python Python theme={null}
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)
```

```javascript Node.js theme={null}
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);
```

```go Go theme={null}
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)
```

```java Java theme={null}
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 PHP theme={null}
<?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());
```

```ruby Ruby theme={null}
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
```

```csharp .NET theme={null}
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` - это статус функции по умолчанию; ваши настроенные [действия при частичном совпадении и при отсутствии совпадения](https://docs.didit.me/ru/core-technology/database-validation/database-validation-warnings.md) могут его переопределить.

**`MATCH`** - Реестр подтвердил личность, и все проверенные поля совпали.

```json 200 OK — MATCH theme={null}
{
  "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`** - Реестр не вернул совпадения для отправленных данных.

```json 200 OK — NO_MATCH theme={null}
{
  "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`** - Оценка совпадения лиц ниже порога принятия: на селфи изображён не тот же человек, что на фотографии из реестра.

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "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`** - Селфи не удалось обработать (оно пустое, на нём нет лица, оно имеет низкое качество или реестр не смог его прочитать). Попросите пользователя переснять селфи.

```json 200 OK — BIOMETRIC_IMAGE_UNUSABLE theme={null}
{
  "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_birth`
* `face_match_score`
* `first_name`
* `full_name`
* `identification_number`
* `last_name`
* `tax_id`
* `tax_id_type`

## Цены и SLA

Аргентина - проверка DNI (RENAPER): запросы оплачиваются только тогда, когда Didit получает окончательный результат от источника проверки.

* **Цена за вызов:** \$0.20 USD.
* **Оплата:** за успешный запрос. Оплата не взимается, если реестр недоступен, если не хватает обязательных полей или если запрос отклонён до того, как дошёл до источника.
* **Задержка:** типичное p95 \< 2 с.
* **Доступность:** 99.9% за квартал со стороны Didit; доступность внешнего источника зависит от страны и набора данных.

## Puntuación de coincidencia facial

`face_match_score` es la similitud que calcula RENAPER entre el selfie y la foto registrada del DNI, enviada como número entero de 0 a 100 dentro de una cadena, por ejemplo `"92"`. No es una probabilidad entre 0 y 1.

La verificación devuelve `BIOMETRIC_NO_MATCH` cuando RENAPER indica que el rostro no coincide, o cuando la puntuación es inferior a 50. Con 50 o más, el rostro se acepta y después se comparan el nombre y la fecha de nacimiento registrados con los datos que enviaste.

La foto registrada puede tener varios años, así que una persona genuina 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 Partial Match / No Match](https://docs.didit.me/ru/core-technology/database-validation/database-validation-warnings.md).

## Cuando RENAPER no responde

Si no se puede acceder a RENAPER o responde con un error, el resultado es `REGISTRY_UNAVAILABLE`: no se verificó nada sobre la persona y la llamada no se factura. La misma solicitud puede tener éxito si la reintentas más tarde. Consulta [Códigos de resultado](https://docs.didit.me/ru/core-technology/database-validation/database-validation-outcome-codes.md) para saber cómo gestionarlo.

## Documentos que lee un flujo de verificación

Dentro de un flujo de verificación, el número de DNI y el género proceden 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 manera.

El DNI antiguo en formato libreta (*libreta*) no es un documento admitido por la Verificación de identidad, así que un usuario que solo tenga ese documento no puede completar ese paso. Aun así, puedes comprobar su número de DNI directamente con `POST /v3/database-validation/`.

## Uso en un flujo de verificación

Añade el servicio a un paso de Validación de base de datos después de la Verificación de identidad. Por ejemplo, con [`POST /v3/workflows/`](https://docs.didit.me/ru/management-api/workflows/create):

```json theme={null}
{
  "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"]}}}
    }
  ]
}
```

Si hay un paso de prueba de vida antes, RENAPER compara el selfie en vivo. 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 `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](https://docs.didit.me/ru/management-api/workflows/feature-configs.md#проверка-по-базам-данных) para ver todos los ajustes de Validación de base de datos.

## Seguir leyendo

* [Resumen de Validación de base de datos de Argentina](https://docs.didit.me/api-reference/database-validation/argentina.md)
* [Resumen de Validación de base de datos](https://docs.didit.me/ru/core-technology/database-validation/overview.md)
* [Códigos de resultado](https://docs.didit.me/ru/core-technology/database-validation/database-validation-outcome-codes.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.