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

# Nigeria Nationale ID + Selfie (NIMC) Verifizierung API

> Nigeria Nationale ID + Selfie (NIMC): autoritative Datenbankabfrage über Didit. Ab $0.35 pro Abfrage, keine Verträge, keine Mindestabnahme.

Überprüft eine nigerianische National Identification Number (NIN) im Register der National Identity Management Commission. Ein Selfie ist erforderlich: Das Registrierungsfoto, das zur NIN hinterlegt ist, wird per Gesichtsabgleich mit dem Selfie verglichen, und der Datensatz wird nur zurückgegeben, wenn es sich um dieselbe Person handelt. 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:** \~ 100%
* **Land:** Nigeria
* **Service-ID:** `nga_national_id_facial`
* **Datenbereich:** Identität
* **Kategorie:** NationalIDRegistry

## Eingaben

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

* **Pflichteingaben:** `national_id`, `selfie`
* **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.35 pro erfolgreiche Abfrage

Nicht jedes Dokument, das dieser Dienst akzeptiert, enthält die Kennung, über die abgefragt wird. Wenn die Kennung nicht aus dem Dokument extrahiert wird, wird die Prüfung als **nicht zutreffend** erfasst: Es wird keine Datenbank abgefragt, und Ihnen wird nichts berechnet. In einigen Ländern betrifft das einen großen Anteil der realen Nutzer. Erfassen Sie die Kennung deshalb zusätzlich über eine Antwort im Fragebogen, ein Feld der Document-AI-Extraktion oder einen Wert, den Sie beim Erstellen der Sitzung übermitteln, und ordnen Sie sie im Schritt Datenbankvalidierung zu.

## Body-Parameter

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

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

Beispiel: `NGA`

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

Array mit dieser Service-ID. Durch die Angabe des Dienstes bleibt die Anfrage auf genau diese Datenbank beschränkt.

Beispiel: `nga_national_id_facial`

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

Nationale Identifikationsnummer für diesen Dienst.

Beispiel: `11111111111`

**selfie** `file` *required*

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

Beispiel: `@./selfie.jpg`

**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 das Rauschen bei der Duplikaterkennung zu reduzieren.

Beispiel: `user-1234`

## Eingaberegeln & Validierungshinweise

* `first_name` muss dem Muster `[A-Za-zÀ-ÖØ-öø-ÿ .'-]+` entsprechen.
* `national_id` darf nur Ziffern enthalten. Entfernen Sie vor dem Senden der Anfrage Leerzeichen, Bindestriche und Satzzeichen.
* `national_id` muss genau 11 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=NGA" \
  -F "services=nga_national_id_facial" \
  -F "vendor_data=user-1234" \
  -F "national_id=11111111111" \
  -F "selfie=@./selfie.jpg"
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="NGA",
    services=["nga_national_id_facial"],
    national_id="11111111111",
    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: "NGA",
  services: ["nga_national_id_facial"],
  national_id: "11111111111",
  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: "NGA",
	Services:     didit.Some([]string{"nga_national_id_facial"}),
	NationalID:   didit.String("11111111111"),
	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("NGA")
        .services(List.of("nga_national_id_facial"))
        .nationalId("11111111111")
        .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' => 'NGA',
    'services' => ['nga_national_id_facial'],
    'national_id' => '11111111111',
    '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: "NGA",
  services: ["nga_national_id_facial"],
  national_id: "11111111111",
  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 = "NGA",
    Services = new string[] { "nga_national_id_facial" },
    NationalId = "11111111111",
    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 Ihnen, was tatsächlich passiert ist, etwa ob ein echter biometrischer Nichtabgleich (`BIOMETRIC_NO_MATCH`) vorliegt oder ein Selfie nicht lesbar war (`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 alle geprüften Felder stimmten überein.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "NGA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "nga_national_id_facial",
      "service_name": "Nigeria National ID + Selfie (NIMC)",
      "source_data": {
        "address": "1 SAMPLE STREET",
        "birth_country": "nigeria",
        "birth_lga": "Ikeja",
        "birth_state": "Lagos",
        "date_of_birth": "1990-01-01",
        "face_match_score": 92.4,
        "first_name": "JOHN",
        "gender": "Male",
        "identification_number": "11111111111",
        "last_name": "DOE",
        "marital_status": "single",
        "middle_name": "SAMUEL",
        "phone_number": "08000000000",
        "photo_available": true,
        "residence_lga": "Ikeja",
        "residence_state": "Lagos",
        "residence_town": "IKEJA"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: Das Selfie stimmt mit dem hinterlegten Foto überein, und die NIN ist registriert. Ein Name oder ein Geburtsdatum, das Sie übermittelt haben, weicht jedoch vom NIMC-Datensatz ab. Der Datensatz wird zurückgegeben, damit Sie sehen, welches Feld abweicht.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "NGA",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "nga_national_id_facial",
      "service_name": "Nigeria National ID + Selfie (NIMC)",
      "source_data": {
        "address": "1 SAMPLE STREET",
        "birth_country": "nigeria",
        "birth_lga": "Ikeja",
        "birth_state": "Lagos",
        "date_of_birth": "1990-02-01",
        "face_match_score": 92.4,
        "first_name": "JOHN",
        "gender": "Male",
        "identification_number": "11111111111",
        "last_name": "DOE",
        "marital_status": "single",
        "middle_name": "SAMUEL",
        "phone_number": "08000000000",
        "photo_available": true,
        "residence_lga": "Ikeja",
        "residence_state": "Lagos",
        "residence_town": "IKEJA"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`BIOMETRIC_NO_MATCH`**: Die NIN ist registriert, das Selfie zeigt aber nicht dieselbe Person wie das NIMC-Registrierungsfoto (Übereinstimmungswert unter dem Akzeptanzschwellenwert). Aus dem Datensatz wird nichts zurückgegeben, nur der Übereinstimmungswert.

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "NGA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_NO_MATCH",
      "service_id": "nga_national_id_facial",
      "service_name": "Nigeria National ID + Selfie (NIMC)",
      "source_data": {
        "face_match_score": 12.5,
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`INCONCLUSIVE`**: Die NIN ist registriert, der Gesichtsabgleich konnte aber nicht durchgeführt werden, weil kein Registrierungsfoto hinterlegt ist oder kein Gesicht erkannt wurde. Aus dem Datensatz wird nichts zurückgegeben, `match_type` ist null, und die Prüfung wird zur manuellen Prüfung weitergeleitet.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "NGA",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "nga_national_id_facial",
      "service_name": "Nigeria National ID + Selfie (NIMC)",
      "source_data": {},
      "validation": {}
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`**: Die NIN ist korrekt aufgebaut, das NIMC-Register enthält jedoch keinen Datensatz dazu. Die Abfrage wird berechnet.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "NGA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "nga_national_id_facial",
      "service_name": "Nigeria National ID + Selfie (NIMC)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

## Rückgabedaten

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

* `address`
* `birth_country`
* `birth_lga`
* `birth_state`
* `date_of_birth`
* `face_match_score`
* `first_name`
* `gender`
* `identification_number`
* `last_name`
* `marital_status`
* `middle_name`
* `phone_number`
* `photo_available`
* `residence_lga`
* `residence_state`
* `residence_town`

## Preise & SLAs

Abfragen für die Nigeria National ID + Selfie (NIMC) werden nur berechnet, wenn Didit von der Validierungsquelle ein eindeutiges Ergebnis erhält.

* **Preis pro Aufruf:** \$0.35 USD.
* **Abrechnung:** pro erfolgreicher Abfrage. Sie zahlen nicht, 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 seitens Didit. Die Verfügbarkeit der nachgelagerten Quellen hängt vom Land und vom Datensatz ab.

## Selfie und Gesichtsabgleich

Das NIMC-Register beantwortet eine gültige NIN mit dem vollständigen Datensatz des Inhabers. Die Kenntnis einer Nummer ist daher kein Nachweis, dass man der Inhaber dieser NIN ist. Jede Abfrage ist deshalb an ein Selfie gebunden: Es wird mit dem Registrierungsfoto abgeglichen, das NIMC für diese NIN speichert, und der Datensatz wird nur zurückgegeben, wenn beide Fotos dieselbe Person zeigen.

* **Übereinstimmung:** `source_data` enthält den NIMC-Datensatz und `face_match_score`. Die von Ihnen gesendeten Namen und das Geburtsdatum werden damit verglichen und in `validation` ausgewiesen. Senden Sie diese Angaben, um ein Ergebnis für Name und Geburtsdatum zu erhalten. Lassen Sie sie weg, dann lesen Sie die Werte des Registers aus `source_data`.
* **Andere Person:** `BIOMETRIC_NO_MATCH`. Zurückgegeben wird nur `face_match_score`, keine personenbezogenen Daten.
* **Abgleich nicht möglich:** `INCONCLUSIVE`, wenn NIMC für die NIN kein Foto speichert oder kein Gesicht gefunden wird. Es wird nichts zurückgegeben, und die Prüfung wird zur Prüfung weitergeleitet.
* **Unbekannte NIN:** `DOCUMENT_NOT_FOUND`. Die Abfrage wird berechnet.

In einem Workflow stammt das Selfie aus dem Liveness- oder Gesichtsabgleich-Schritt. Hat der Workflow keinen Gesichtsschritt, wird das Porträt auf dem hochgeladenen Dokument verwendet. Eine Anfrage ohne Selfie oder mit einer NIN, die nicht aus 11 Ziffern besteht, wird abgelehnt, bevor etwas berechnet wird.

## Weiterlesen

* [Überblick: Nigeria-Datenbankvalidierung](https://docs.didit.me/api-reference/database-validation/nigeria.md)
* [Überblick: 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.