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

# Argentine - API de vérification DNI : Data Match

> Vérification DNI argentin (RENAPER, sans selfie) via Didit : base officielle argentine. Dès $0.20 par appel, sans contrat.

Vérifie un DNI argentin et le genre auprès du registre d'état civil officiel RENAPER, sans selfie, et renvoie le nom enregistré, la date de naissance et l'identifiant fiscal pour comparaison avec les données soumises. Aucune biométrie : la personne est confirmée uniquement par ses données. Couverture de 100 % de la population. Didit expose ce service via `POST /v3/database-validation/` afin que vous puissiez vérifier les données soumises auprès de la source faisant autorité et recevoir des résultats de correspondance normalisés. Format de saisie : `document_number` accepte le DNI argentin (7 à 8 chiffres, préfixe M/F facultatif).

## Couverture

* **Couverture :** 100 %
* **Pays :** Argentine
* **Identifiant du service :** `arg_renaper_data`
* **Domaine de données :** Identité
* **Catégorie :** NationalIDRegistry

RENAPER est le registre qui délivre chaque DNI argentin ; chaque numéro de DNI figure donc au registre, y compris les DNI délivrés aux résidents étrangers. Aucun visage n'est comparé : l'identité enregistrée est confirmée à partir du DNI, du genre, du nom et de la date de naissance que vous envoyez.

## Entrées

| Champ | Obligatoire | Exemple |
| - | -: | - |
| `document_number` | Oui | `11111111` |
| `gender` | Oui | `M` |
| `first_name` | Non | `John` |
| `last_name` | Non | `Doe` |
| `date_of_birth` | Non | `1990-01-01` |
| `vendor_data` | Non | `user-1234` |

* **Entrées obligatoires :** `document_number`, `gender`
* **Entrées facultatives :** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Consentement :** Non requis
* **Disponibilité dans un workflow :** Disponible dans un workflow
* **Couverture :** 100 %
* **Prix :** \$0.20 par requête réussie

## Paramètres du corps de requête

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

Code pays ISO 3166-1 alpha-3 pour ce service de base de données.

Exemple : `ARG`

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

Tableau contenant l'identifiant de ce service. Fixer le service limite la requête à cette base de données exacte.

Exemple : `arg_renaper_data`

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

Numéro de document extrait ou fourni par l'utilisateur.

Exemple : `11111111`

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

Valeur du genre, lorsque la base de données l'exige.

Valeurs autorisées : `M` (homme), `F` (femme), `X` (autre ou inconnu).

Exemple : `M`

**first\_name** `string`

Prénom à valider.

Exemple : `John`

**last\_name** `string`

Nom de famille à valider.

Exemple : `Doe`

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

Date de naissance au format `YYYY-MM-DD`.

Exemple : `1990-01-01`

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

Votre référence stable de l'utilisateur pour cette personne, par exemple votre identifiant utilisateur interne. Didit s'en sert pour relier les vérifications autonomes au même utilisateur final et réduire le bruit de la détection des doublons.

Exemple : `user-1234`

## Règles de saisie et notes de validation

* DNI argentin (7 à 8 chiffres, préfixe M/F facultatif)
* `document_number` doit comporter entre 7 et 9 caractères.
* `document_number` doit correspondre à `[MFmf]?\d{7,8}`.

## Comment appeler le service

```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_data" \
  -F "vendor_data=user-1234" \
  -F "document_number=11111111" \
  -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_data"],
    document_number="11111111",
    gender="M",
    vendor_data="user-1234",
)
print(result)
```

```javascript Node.js theme={null}
import Didit 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_data"],
  document_number: "11111111",
  gender: "M",
  vendor_data: "user-1234",
});
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_data"}),
	DocumentNumber: didit.String("11111111"),
	Gender:         didit.Some(didit.DatabaseValidationValidateParamsGender("M")),
	VendorData:     didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
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_data"))
        .documentNumber("11111111")
        .gender(DatabaseValidationValidateParams.Gender.of("M"))
        .vendorData("user-1234")
        .build());
System.out.println(result);
```

```php PHP theme={null}
<?php

require 'vendor/autoload.php';

use Didit\DiditClient;

// Reads DIDIT_API_KEY.
$didit = new DiditClient();

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'ARG',
    'services' => ['arg_renaper_data'],
    'document_number' => '11111111',
    'gender' => 'M',
    'vendor_data' => 'user-1234',
]);
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_data"],
  document_number: "11111111",
  gender: "M",
  vendor_data: "user-1234"
)
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_data" },
    DocumentNumber = "11111111",
    Gender = new DatabaseValidationValidateParamsGender("M"),
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Chaque appel réussi renvoie le code HTTP `200`. Le champ **`outcome_code`** indique ce qui s'est réellement passé, en distinguant par exemple une véritable non-correspondance biométrique (`BIOMETRIC_NO_MATCH`) d'un selfie qui n'a pas pu être lu (`BIOMETRIC_IMAGE_UNUSABLE`). Le `status` affiché est le statut par défaut de la fonctionnalité ; vos [actions Partial Match / No Match configurées](https://docs.didit.me/fr/core-technology/database-validation/database-validation-warnings.md) peuvent le remplacer.

**`MATCH`** : le registre a confirmé l'identité et chaque champ vérifié correspondait.

```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_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "full_name": "John Doe",
        "gender_match": true,
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "nationality": "USA",
        "tax_id": "SAMPLE-12345",
        "tax_id_type": "SAMPLE-12345"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`** : le numéro d'identification a été trouvé, mais un ou plusieurs champs personnels (généralement le nom ou la date de naissance) ne correspondent pas entièrement.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "ARG",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "arg_renaper_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {
        "gender_match": true,
        "identification_number": "SAMPLE-ID-12345"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`** : le registre n'a renvoyé aucune correspondance pour les données soumises.

```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_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`INCONCLUSIVE`** : le registre n'a pas pu déterminer si la personne correspond ; le résultat est réellement incertain (elle peut figurer ou non au registre). Ce n'est PAS une absence de correspondance, ni un problème technique d'image : aucun champ n'est affirmé, donc match\_type vaut null et la vérification est envoyée à un examen manuel.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "ARG",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "arg_renaper_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {},
      "validation": {}
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`** : le numéro de document soumis ne correspond à aucun enregistrement du registre.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "ARG",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "arg_renaper_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`MINOR_BLOCKED`** : la personne est mineure ; le registre bloque la consultation pour des raisons de protection des données.

```json 200 OK — MINOR_BLOCKED theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "ARG",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "MINOR_BLOCKED",
      "service_id": "arg_renaper_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`DECEASED`** : l'identité correspond, mais le registre signale la personne comme décédée.

```json 200 OK — DECEASED theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "ARG",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "DECEASED",
      "service_id": "arg_renaper_data",
      "service_name": "Argentina - DNI data verification (RENAPER, no selfie)",
      "source_data": {
        "gender_match": true,
        "identification_number": "SAMPLE-ID-12345"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

## Données renvoyées

Les champs exacts exposés dans `source_data` dépendent de ce que renvoie le registre. L'exemple généré pour `arg_renaper_data` documente actuellement cette structure normalisée :

* `date_of_birth`
* `first_name`
* `full_name`
* `gender_match`
* `identification_number`
* `last_name`
* `nationality`
* `tax_id`
* `tax_id_type`

## Tarifs et SLA

Argentine : les requêtes de vérification de données DNI (RENAPER, sans selfie) sont facturées uniquement lorsque Didit reçoit un résultat concluant de la source de validation.

* **Prix par appel :** \$0.20 USD.
* **Facturation :** par requête réussie. Vous n'êtes pas facturé lorsque le registre est injoignable, lorsque des champs obligatoires manquent ou lorsque la requête est rejetée avant d'atteindre la source.
* **Latence :** p95 typique inférieur à 2 s.
* **Disponibilité :** 99.9% par trimestre côté Didit ; la disponibilité de la source en aval varie selon le pays et le jeu de données.

## Documents qu'un workflow lit

Dans un workflow, le numéro de DNI et le genre proviennent de l'étape Vérification d'identité, qui lit la carte DNI argentine et le DNI numérique. Les résidents étrangers possèdent la même carte DNI et sont vérifiés de la même manière.

L'ancien DNI sous forme de livret (*libreta*) n'est pas un document pris en charge par la Vérification d'identité. Un utilisateur qui ne possède que ce document ne peut donc pas finaliser cette étape. Vous pouvez toutefois vérifier son numéro de DNI directement avec `POST /v3/database-validation/`.

## Utiliser le service dans un workflow

Ajoutez le service à une étape de Validation en base de données après la Vérification d'identité. Par exemple, avec [`POST /v3/workflows/`](https://docs.didit.me/fr/management-api/workflows/create) :

```json theme={null}
{
  "workflow_label": "Argentina KYC with RENAPER",
  "features": [
    {"feature": "OCR"},
    {
      "feature": "DATABASE_VALIDATION",
      "config": {"database_validation_countries": {"ARG": {"services": ["arg_renaper_data"]}}}
    }
  ]
}
```

Un identifiant de service que le workflow ne peut pas exécuter est rejeté avec une erreur `400` qui le nomme, de sorte que l'étape n'est jamais enregistrée sans la vérification demandée. Consultez [Configurations des fonctionnalités de workflow](https://docs.didit.me/fr/management-api/workflows/feature-configs.md#validation-en-base-de-données) pour tous les paramètres de la validation en base de données.

## Pour continuer la lecture

* [Présentation de la validation en base de données pour l'Argentine](https://docs.didit.me/api-reference/database-validation/argentina.md)
* [Présentation de la validation en base de données](https://docs.didit.me/fr/core-technology/database-validation/overview.md)
* [Codes de résultat](https://docs.didit.me/fr/core-technology/database-validation/database-validation-outcome-codes.md)


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