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

# Kenia Ausweisverifizierung API: Identitätsabfrage

> Kenia-Nationalausweis per autoritativer Datenbankvalidierung prüfen – über Didit ab $0.75 pro Verifizierung. Keine Verträge, keine Mindestabnahme.

Prüft eine kenianische Ausweisnummer beim National Registration Bureau und gleicht die Namen, das Geburtsdatum und das Geschlecht der Person mit dem Registerdatensatz ab. Didit stellt diesen Dienst über `POST /v3/database-validation/` bereit, damit Sie die übermittelten Daten mit der maßgeblichen Quelle abgleichen und normalisierte Abgleichsergebnisse erhalten.

## Abdeckung

* **Abdeckung:** \~ 90%
* **Land:** Kenia
* **Service-ID:** `ken_national_id`
* **Datenbereich:** Identität
* **Kategorie:** NationalIDRegistry

## Eingaben

| Feld | Pflichtfeld | Beispiel |
| - | -: | - |
| `first_name` | Ja | `John` |
| `last_name` | Ja | `Doe` |
| `date_of_birth` | Ja | `1990-01-01` |
| `national_id` | Ja | `12345678` |
| `vendor_data` | Nein | `user-1234` |

* **Pflichteingaben:** `first_name`, `last_name`, `date_of_birth`, `national_id`
* **Optionale Eingaben:** `vendor_data`
* **Einwilligung:** Nicht erforderlich
* **Verfügbarkeit im Workflow:** Im Workflow verfügbar
* **Abdeckung:** \~ 90%
* **Preis:** \$0.75 pro erfolgreicher Abfrage

Nicht jedes Dokument, das dieser Dienst akzeptiert, enthält die Kennung, über die abgefragt wird. Wird die Kennung nicht aus dem Dokument ausgelesen, wird die Prüfung als **nicht zutreffend** erfasst. Dabei wird keine Datenbank abgefragt und Ihnen wird nichts berechnet. Bei manchen Ländern betrifft das einen großen Teil der realen Nutzer. Um sie abzudecken, erfassen Sie die Kennung zusätzlich über eine Fragebogen-Antwort, ein Feld aus der Document-AI-Extraktion oder einen Wert, den Sie beim Erstellen der Session übermitteln, und ordnen Sie sie im Schritt Datenbankvalidierung zu.

## Body-Parameter

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

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

Beispiel: `KEN`

**services** `string` *required* (default: ken\_national\_id)

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

Beispiel: `ken_national_id`

**first\_name** `string` *required* (default: John)

Zu validierender Vorname.

Beispiel: `John`

**last\_name** `string` *required* (default: Doe)

Zu validierender Nachname.

Beispiel: `Doe`

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

Geburtsdatum im Format `YYYY-MM-DD`.

Beispiel: `1990-01-01`

**national\_id** `string` *required* (default: 12345678)

Personenkennziffer für diesen Dienst.

Beispiel: `12345678`

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

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

Beispiel: `user-1234`

## Eingaberegeln & Validierungshinweise

* `national_id` muss dem Muster `\d{8,9}` 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=KEN" \
  -F "services=ken_national_id" \
  -F "vendor_data=user-1234" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "national_id=12345678"
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="KEN",
    services=["ken_national_id"],
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    national_id="12345678",
    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: "KEN",
  services: ["ken_national_id"],
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  national_id: "12345678",
  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: "KEN",
	Services:     didit.Some([]string{"ken_national_id"}),
	FirstName:    didit.String("John"),
	LastName:     didit.String("Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	NationalID:   didit.String("12345678"),
	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("KEN")
        .services(List.of("ken_national_id"))
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .nationalId("12345678")
        .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' => 'KEN',
    'services' => ['ken_national_id'],
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'national_id' => '12345678',
    '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: "KEN",
  services: ["ken_national_id"],
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  national_id: "12345678",
  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 = "KEN",
    Services = new string[] { "ken_national_id" },
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    NationalId = "12345678",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Jeder erfolgreiche Aufruf gibt HTTP `200` zurück. Das Feld **`outcome_code`** zeigt an, was tatsächlich passiert ist. So lässt sich zum Beispiel ein echter biometrischer Nichtabgleich (`BIOMETRIC_NO_MATCH`) von einem Selfie unterscheiden, das nicht gelesen werden konnte (`BIOMETRIC_IMAGE_UNUSABLE`). Der angezeigte `status` ist der Standardstatus der Funktion. Ihre konfigurierten [Aktionen für 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 alle geprüften Felder stimmen überein.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "KEN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "ken_national_id",
      "service_name": "Kenya National ID",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "gender": "M",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: Die Ausweisnummer wurde gefunden, aber ein oder mehrere persönliche 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": "KEN",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "ken_national_id",
      "service_name": "Kenya National ID",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "gender": "M",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: Das Register hat für die übermittelten Daten keinen Treffer geliefert.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "KEN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "ken_national_id",
      "service_name": "Kenya National ID",
      "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"
      }
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`**: Die übermittelte Dokumentnummer entspricht keinem Datensatz im Register.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "KEN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "ken_national_id",
      "service_name": "Kenya National ID",
      "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 in `source_data` tatsächlich ausgegeben werden, hängt davon ab, was das Register zurückgibt. Das generierte Beispiel für `ken_national_id` dokumentiert derzeit diese normalisierte Struktur:

* `date_of_birth`
* `first_name`
* `gender`
* `identification_number`
* `last_name`

## Preise & SLAs

Abfragen der kenianischen nationalen ID werden nur berechnet, wenn Didit von der Validierungsquelle ein eindeutiges Ergebnis erhält.

* **Preis pro Aufruf:** \$0.75 USD.
* **Abrechnung:** pro erfolgreicher Abfrage. Ihnen wird nichts berechnet, wenn das Register nicht erreichbar ist, wenn Pflichtfelder fehlen oder wenn 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 Kenia](https://docs.didit.me/api-reference/database-validation/kenya.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.