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

# Aadhaar (UIDAI) Verifizierungs-API: Datenabgleich Indien

> Indien Aadhaar (UIDAI): maßgebliche Datenbankvalidierung mit Didit. Abrechnung pro Aufruf ab $0.42, ohne Verträge und ohne Mindestabnahme.

Dieser Service prüft die eingegebene Aadhaar-Nummer anhand der Identitätsdaten der UIDAI. Didit stellt ihn über `POST /v3/database-validation/` bereit, damit Sie die übermittelten Daten gegen die maßgebliche Quelle prüfen und normalisierte Übereinstimmungsergebnisse erhalten.

## Abdeckung

* **Abdeckung:** \~ 100%
* **Land:** Indien
* **Service-ID:** `ind_aadhaar`
* **Datenbereich:** Identität
* **Kategorie:** NationalIDRegistry

## Eingaben

| Feld | Pflicht | Beispiel |
| - | -: | - |
| `full_name` | Ja | `John Doe` |
| `date_of_birth` | Ja | `1990-01-01` |
| `personal_number` | Ja | `111111111111` |
| `pan` | Ja | `ABCDE1234F` |
| `vendor_data` | Nein | `user-1234` |

* **Pflichteingaben:** `full_name`, `date_of_birth`, `personal_number`, `pan`
* **Optionale Eingaben:** `vendor_data`
* **Einwilligung:** erforderlich
* **Verfügbarkeit im Workflow:** Im Workflow verfügbar
* **Abdeckung:** \~ 100%
* **Preis:** \$0.42 pro erfolgreicher Abfrage

Nicht jedes Dokument, das dieser Service akzeptiert, enthält den Identifikator, über den abgefragt wird. Wenn der Identifikator nicht aus dem Dokument extrahiert wird, wird die Prüfung als **nicht zutreffend** erfasst (es wird keine Datenbank abgefragt und Ihnen wird nicht berechnet). Für manche Länder betrifft das einen großen Anteil der echten Benutzer. Um diese Fälle abzudecken, erheben Sie den Identifikator zusätzlich über eine Antwort aus einem Fragebogen, ein Document-AI-Extraktionsfeld oder einen Wert, den Sie beim Erstellen der Sitzung übermitteln, und ordnen Sie ihn dem Schritt Datenbankvalidierung zu.

## Body-Parameter

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

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

Beispiel: `IND`

**services** `string` *required* (default: ind\_aadhaar)

Array mit dieser Service-ID. Wenn Sie den Service festlegen, bleibt die Anfrage auf genau diese Datenbank beschränkt.

Beispiel: `ind_aadhaar`

**consent** `boolean` *required* (default: true)

Ausdrückliche Einwilligung des Endbenutzers für diesen Service.

Beispiel: `true`

**full\_name** `string` *required* (default: John Doe)

Vollständiger amtlicher Name, der geprüft wird.

Beispiel: `John Doe`

**date\_of\_birth** `string` *required* (default: 1990-01-01)

Geburtsdatum im Format `YYYY-MM-DD`.

Beispiel: `1990-01-01`

**personal\_number** `string` *required* (default: 111111111111)

Länderspezifische persönliche Identifikationsnummer.

Beispiel: `111111111111`

**pan** `string` *required* (default: ABCDE1234F)

Permanent Account Number.

Beispiel: `ABCDE1234F`

**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 unnötige Dubletten-Meldungen zu reduzieren.

Beispiel: `user-1234`

## Eingaberegeln und Hinweise zur Validierung

* `pan` muss in Großbuchstaben angegeben werden.
* `pan` muss dem Muster `[A-Z]{5}\d{4}[A-Z]` entsprechen.
* `personal_number` darf nur Ziffern enthalten. Entfernen Sie vor dem Senden der Anfrage Leerzeichen, Bindestriche und Satzzeichen.
* `personal_number` muss genau 12 Zeichen lang sein.

## 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=IND" \
  -F "services=ind_aadhaar" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "full_name=John Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "personal_number=111111111111" \
  -F "pan=ABCDE1234F"
```

```python Python theme={null}
from didit import Didit

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="IND",
    services=["ind_aadhaar"],
    consent=True,
    full_name="John Doe",
    date_of_birth="1990-01-01",
    personal_number="111111111111",
    pan="ABCDE1234F",
    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: "IND",
  services: ["ind_aadhaar"],
  consent: true,
  full_name: "John Doe",
  date_of_birth: "1990-01-01",
  personal_number: "111111111111",
  pan: "ABCDE1234F",
  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:   "IND",
	Services:       didit.Some([]string{"ind_aadhaar"}),
	Consent:        didit.Bool(true),
	FullName:       didit.String("John Doe"),
	DateOfBirth:    didit.String("1990-01-01"),
	PersonalNumber: didit.String("111111111111"),
	Pan:            didit.String("ABCDE1234F"),
	VendorData:     didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.time.LocalDate;
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("IND")
        .services(List.of("ind_aadhaar"))
        .consent(true)
        .fullName("John Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .personalNumber("111111111111")
        .pan("ABCDE1234F")
        .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' => 'IND',
    'services' => ['ind_aadhaar'],
    'consent' => true,
    'full_name' => 'John Doe',
    'date_of_birth' => '1990-01-01',
    'personal_number' => '111111111111',
    'pan' => 'ABCDE1234F',
    '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: "IND",
  services: ["ind_aadhaar"],
  consent: true,
  full_name: "John Doe",
  date_of_birth: "1990-01-01",
  personal_number: "111111111111",
  pan: "ABCDE1234F",
  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 = "IND",
    Services = new string[] { "ind_aadhaar" },
    Consent = true,
    FullName = "John Doe",
    DateOfBirth = "1990-01-01",
    PersonalNumber = "111111111111",
    Pan = "ABCDE1234F",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Jeder erfolgreiche Aufruf gibt HTTP `200` zurück. Das Feld **`outcome_code`** zeigt, was tatsächlich passiert ist. Es unterscheidet zum Beispiel eine echte biometrische Nichtübereinstimmung (`BIOMETRIC_NO_MATCH`) von einem Selfie, das nicht gelesen werden konnte (`BIOMETRIC_IMAGE_UNUSABLE`). Der angezeigte `status` ist der Standardstatus der Funktion. Ihre konfigurierten [Aktionen für Partial Match / No Match](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": "IND",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "ind_aadhaar",
      "service_name": "India Aadhaar (UIDAI)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: Die Identifikationsnummer wurde gefunden, aber ein oder mehrere personenbezogene Felder (meist Name oder Geburtsdatum) stimmen nicht vollständig überein.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "IND",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "ind_aadhaar",
      "service_name": "India Aadhaar (UIDAI)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: Das Register hat für die übermittelten Daten keine Übereinstimmung geliefert.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "IND",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "ind_aadhaar",
      "service_name": "India Aadhaar (UIDAI)",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

## Rückgabedaten

Welche Felder genau in `source_data` erscheinen, hängt davon ab, was das Register zurückliefert. Das generierte Beispiel für `ind_aadhaar` dokumentiert derzeit diese normalisierte Struktur:

* `date_of_birth`
* `full_name`
* `identification_number`

## Preise und SLAs

Abfragen der indischen Aadhaar-Datenbank (UIDAI) werden nur abgerechnet, wenn Didit ein eindeutiges Ergebnis von der Validierungsquelle erhält.

* **Preis pro Aufruf:** \$0.42 USD.
* **Abrechnung:** pro erfolgreicher Abfrage. Ihnen wird nicht berechnet, wenn das Register nicht erreichbar ist, Pflichtfelder fehlen oder die Anfrage abgelehnt wird, bevor sie die Quelle erreicht.
* **Latenz:** typischer p95-Wert 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.

## Weiterlesen

* [Übersicht Datenbankvalidierung für Indien](https://docs.didit.me/api-reference/database-validation/india.md)
* [Übersicht Datenbankvalidierung](https://docs.didit.me/de/core-technology/database-validation/overview.md)
* [Ergebniscodes](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.