> ## 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.

# Argentinien DNI-Verifizierung (RENAPER) API

> Argentinien-DNI-Prüfung (RENAPER) via Didit: maßgebliche Datenbankabfrage. Ab $0.20 pro Aufruf, keine Verträge, keine Mindestabnahme.

Prüft die argentinische DNI gegen das offizielle Personenstandsregister RENAPER und führt einen biometrischen Gesichtsabgleich mit dem hinterlegten Foto durch. 100% Bevölkerungsabdeckung. Didit stellt diesen Dienst über `POST /v3/database-validation/` bereit, damit Sie die übermittelten Daten gegen die maßgebliche Quelle prüfen und normalisierte Übereinstimmungsergebnisse erhalten. Eingabeformat: `document_number` nimmt die argentinische DNI entgegen (7-8 Ziffern, optionales Präfix M/F).

## Abdeckung

* **Abdeckung:** 100%
* **Land:** Argentinien
* **Service-ID:** `arg_renaper`
* **Datenbereich:** Identität
* **Kategorie:** NationalIDRegistry

RENAPER ist das Register, das jede argentinische DNI ausstellt. Daher ist jede DNI-Nummer hinterlegt, auch die DNIs, die an ausländische Einwohner ausgestellt wurden. Der Gesichtsabgleich vergleicht das Selfie mit dem Foto, das RENAPER zu dieser DNI gespeichert hat.

## Eingaben

| Feld | Erforderlich | Beispiel |
| - | -: | - |
| `document_number` | Ja | `11111111` |
| `selfie` | Ja | `@./selfie.jpg` |
| `gender` | Ja | `M` |
| `first_name` | Nein | `John` |
| `last_name` | Nein | `Doe` |
| `date_of_birth` | Nein | `1990-01-01` |
| `vendor_data` | Nein | `user-1234` |

* **Erforderliche Eingaben:** `document_number`, `selfie`, `gender`
* **Optionale Eingaben:** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Einwilligung:** Nicht erforderlich
* **Verfügbarkeit im Workflow:** Im Workflow verfügbar
* **Abdeckung:** 100%
* **Preis:** \$0.20 pro erfolgreiche Abfrage

## Body-Parameter

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

ISO-3166-1-Alpha-3-Ländercode für diesen Datenbankdienst.

Beispiel: `ARG`

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

Array mit der ID dieses Dienstes. Das Festlegen des Dienstes beschränkt die Anfrage auf genau diese Datenbank.

Beispiel: `arg_renaper`

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

Dokumentnummer, die aus dem Dokument des Benutzers ausgelesen oder vom Benutzer angegeben wurde.

Beispiel: `11111111`

**selfie** `file` *required*

Selfie-Bilddatei, die für die biometrische Datenbankvalidierung hochgeladen wird. Akzeptierte Formate: JPEG, PNG oder WebP.

Beispiel: `@./selfie.jpg`

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

Geschlechtsangabe, sofern von der Datenbank erforderlich.

Erlaubte Werte: `M` (männlich), `F` (weiblich), `X` (andere oder unbekannt).

Beispiel: `M`

**first\_name** `string`

Zu validierender Vorname.

Beispiel: `John`

**last\_name** `string`

Zu validierender Nachname.

Beispiel: `Doe`

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

Geburtsdatum im Format `YYYY-MM-DD`.

Beispiel: `1990-01-01`

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

Ihre stabile Benutzerreferenz für diese Person, etwa Ihre interne Benutzer-ID. Didit verwendet sie, um eigenständige Prüfungen demselben Endbenutzer zuzuordnen und Rauschen bei der Duplikaterkennung zu verringern.

Beispiel: `user-1234`

## Eingaberegeln und Validierungshinweise

* Argentinische DNI (7-8 Ziffern, optionales Präfix M/F)
* `document_number` muss 7-9 Zeichen lang sein.
* `document_number` muss dem Muster `[MFmf]?\d{7,8}` entsprechen.

## So rufen Sie es auf

```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));
```

Jeder erfolgreiche Aufruf gibt HTTP `200` zurück. Das Feld **`outcome_code`** zeigt, was tatsächlich passiert ist. So wird beispielsweise eine echte biometrische Nichtübereinstimmung (`BIOMETRIC_NO_MATCH`) von einem Selfie unterschieden, das nicht gelesen werden konnte (`BIOMETRIC_IMAGE_UNUSABLE`). Der angezeigte `status` ist der Standardstatus der Funktion. Ihre konfigurierten [Aktionen bei Teilübereinstimmung / Keine Übereinstimmung](https://docs.didit.me/de/core-technology/database-validation/database-validation-warnings.md) können ihn überschreiben.

**`MATCH`**: Das Register hat die Identität bestätigt, und jedes geprüfte Feld stimmte überein.

```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`**: Das Register hat für die übermittelten Daten keine Übereinstimmung zurückgegeben.

```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`**: Der Übereinstimmungswert des Gesichtsabgleichs lag unter dem Akzeptanzschwellenwert. Das Selfie zeigt nicht dieselbe Person wie das Registerfoto.

```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`**: Das Selfie konnte nicht verarbeitet werden (leer, kein Gesicht, geringe Qualität oder das Register konnte es nicht lesen). Fordern Sie den Benutzer auf, das Selfie erneut aufzunehmen.

```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"
      }
    }
  ]
}
```

## Zurückgegebene Daten

Die genauen Felder, die in `source_data` ausgegeben werden, hängen davon ab, was das Register zurückgibt. Das generierte Beispiel für `arg_renaper` dokumentiert derzeit diese normalisierte Struktur:

* `date_of_birth`
* `face_match_score`
* `first_name`
* `full_name`
* `identification_number`
* `last_name`
* `tax_id`
* `tax_id_type`

## Preise & SLAs

Argentinien: Abfragen zur DNI-Verifizierung (RENAPER) werden nur abgerechnet, wenn Didit ein eindeutiges Ergebnis von der Validierungsquelle erhält.

* **Preis pro Aufruf:** \$0.20 USD.
* **Abrechnung:** pro erfolgreiche Abfrage. Ihnen wird nichts berechnet, wenn das Register nicht erreichbar ist, wenn erforderliche Felder fehlen oder wenn die Anfrage abgelehnt wird, bevor sie die Quelle erreicht.
* **Latenz:** typischerweise p95 unter 2 s.
* **Verfügbarkeit:** 99.9% pro Quartal auf Seiten von Didit; die Verfügbarkeit der nachgelagerten Quelle variiert je nach Land und Datensatz.

## Übereinstimmungswert des Gesichtsabgleichs

`face_match_score` ist die Ähnlichkeit, die RENAPER zwischen dem Selfie und dem Foto in den Registerdaten zur DNI ermittelt. Der Wert wird als ganze Zahl von 0 bis 100 in einem String übergeben, zum Beispiel `"92"`. Es handelt sich nicht um eine Wahrscheinlichkeit zwischen 0 und 1.

Die Prüfung liefert `BIOMETRIC_NO_MATCH`, wenn RENAPER meldet, dass das Gesicht nicht übereinstimmt, oder wenn der Übereinstimmungswert unter 50 liegt. Ab 50 gilt das Gesicht als akzeptiert, und anschließend werden der hinterlegte Name und das Geburtsdatum mit den von Ihnen übermittelten Daten verglichen.

Das Foto in den Registerdaten kann mehrere Jahre alt sein. Deshalb kann ein echter Benutzer bei einer deutlichen Veränderung seines Aussehens einen niedrigen Übereinstimmungswert erhalten. Erwägen Sie, `BIOMETRIC_NO_MATCH` zur manuellen Prüfung weiterzuleiten, statt den Vorgang sofort abzulehnen. Nutzen Sie dafür die [Aktionen für Teilübereinstimmung/keine Übereinstimmung](https://docs.didit.me/de/core-technology/database-validation/database-validation-warnings.md).

## Wenn RENAPER nicht antwortet

Kann RENAPER nicht erreicht werden oder antwortet mit einem Fehler, lautet das Ergebnis `REGISTRY_UNAVAILABLE`. Die Person wurde dann nicht geprüft, und der Aufruf wird nicht berechnet. Dieselbe Anfrage kann bei einem späteren Wiederholungsversuch erfolgreich sein. Wie Sie damit umgehen, erfahren Sie unter [Outcome Codes](https://docs.didit.me/de/core-technology/database-validation/database-validation-outcome-codes.md).

## Dokumente, die ein Workflow auswertet

Innerhalb eines Workflows stammen die DNI-Nummer und das Geschlecht aus dem Schritt Ausweisverifizierung, der die argentinische DNI-Karte und die digitale DNI auswertet. Ausländische Einwohner besitzen dieselbe DNI-Karte und werden auf dieselbe Weise verifiziert.

Die alte DNI-Heftform (*libreta*) wird von der Ausweisverifizierung nicht unterstützt. Ein Benutzer, der nur diese besitzt, kann den Schritt daher nicht abschließen. Die DNI-Nummer können Sie dennoch direkt mit `POST /v3/database-validation/` prüfen.

## In einem Workflow verwenden

Fügen Sie den Dienst nach der Ausweisverifizierung einem Schritt Datenbankvalidierung hinzu. Ein Beispiel mit [`POST /v3/workflows/`](https://docs.didit.me/de/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"]}}}
    }
  ]
}
```

Steht davor ein Schritt Liveness-Erkennung, vergleicht RENAPER das Live-Selfie. Ohne diesen Schritt sendet Didit stattdessen das auf dem Ausweisdokument abgedruckte Porträt. Dadurch wird das Dokumentfoto bestätigt, nicht aber, dass die Person vor der Kamera der Inhaber des Dokuments ist. Eine Dienst-ID, die der Workflow nicht ausführen kann, wird mit einem `400` abgelehnt, das sie benennt. Der Schritt wird dadurch nie ohne die von Ihnen angeforderte Prüfung gespeichert. Alle Einstellungen der Datenbankvalidierung finden Sie unter [Workflow-Funktionskonfigurationen](https://docs.didit.me/de/management-api/workflows/feature-configs.md#datenbankvalidierung).

## Weiterführende Informationen

* [Übersicht zur Datenbankvalidierung in Argentinien](https://docs.didit.me/api-reference/database-validation/argentina.md)
* [Übersicht zur Datenbankvalidierung](https://docs.didit.me/de/core-technology/database-validation/overview.md)
* [Outcome Codes](https://docs.didit.me/de/core-technology/database-validation/database-validation-outcome-codes.md)


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