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

# Verificació ID nacional Nigèria + selfie (NIMC) API

> Consulta a la base de dades oficial de Nigèria amb ID nacional + selfie (NIMC) via Didit. Des de $0.35 per crida, sense contractes ni mínims.

Verifica un Número d'Identificació Nacional (NIN) de Nigèria amb el registre de la National Identity Management Commission. Requereix una selfie: al retrat d'inscripció associat al NIN se li comprova la coincidència facial amb la selfie, i el registre només es retorna quan es tracta de la mateixa persona. Didit exposa aquest servei a través de `POST /v3/database-validation/` perquè puguis verificar les dades enviades amb la font autoritzada i rebre resultats de coincidència normalitzats.

## Cobertura

* **Cobertura:** \~ 100%
* **País:** Nigèria
* **ID del servei:** `nga_national_id_facial`
* **Domini de dades:** Identitat
* **Categoria:** NationalIDRegistry

## Entrades

| Camp | Obligatori | Exemple |
| - | -: | - |
| `national_id` | Sí | `11111111111` |
| `selfie` | Sí | `@./selfie.jpg` |
| `first_name` | No | `John` |
| `last_name` | No | `Doe` |
| `date_of_birth` | No | `1990-01-01` |
| `vendor_data` | No | `user-1234` |

* **Entrades obligatòries:** `national_id`, `selfie`
* **Entrades opcionals:** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Consentiment:** No és necessari
* **Disponibilitat en el flux de treball:** Disponible en el flux de treball
* **Cobertura:** \~ 100%
* **Preu:** \$0.35 per consulta satisfactòria

No tots els documents que accepta aquest servei porten l'identificador amb què es fa la consulta. Quan l'identificador no s'extreu del document, la comprovació es registra com a **no aplicable**: no es consulta cap base de dades i no es cobra. Per a alguns països, això representa una part important dels usuaris reals. Per cobrir-los, recull també l'identificador d'una resposta de Qüestionari, d'un camp d'extracció de Document AI o d'un valor que enviïs en crear la sessió, i mapeja'l al pas de Verificació en bases de dades.

## Paràmetres del cos

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

Codi de país ISO 3166-1 alpha-3 per a aquest servei de base de dades.

Exemple: `NGA`

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

Matriu que conté l'ID d'aquest servei. Fixar el servei limita la sol·licitud a aquesta base de dades exacta.

Exemple: `nga_national_id_facial`

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

Número d'identitat nacional per a aquest servei.

Exemple: `11111111111`

**selfie** `file` *required*

Fitxer d'imatge de selfie que cal carregar per a la validació biomètrica en bases de dades. Formats acceptats: JPEG, PNG o WebP.

Exemple: `@./selfie.jpg`

**first\_name** `string`

Nom de pila a verificar.

Exemple: `John`

**last\_name** `string`

Cognom a verificar.

Exemple: `Doe`

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

Data de naixement en format `YYYY-MM-DD`.

Exemple: `1990-01-01`

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

La teva referència estable d'usuari per a aquesta persona, com ara el teu ID intern d'usuari. Didit l'utilitza per vincular les comprovacions independents al mateix usuari final i reduir el soroll de la detecció de duplicats.

Exemple: `user-1234`

## Regles d'entrada i notes de validació

* `first_name` ha de coincidir amb `[A-Za-zÀ-ÖØ-öø-ÿ .'-]+`.
* `national_id` ha de contenir només dígits; elimina els espais, els guions i la puntuació abans d'enviar la sol·licitud.
* `national_id` ha de tenir exactament 11 caràcters.

## Com fer la crida

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

Cada crida satisfactòria retorna HTTP `200`. El camp **`outcome_code`** indica què ha passat realment: distingeix, per exemple, una discrepància biomètrica real (`BIOMETRIC_NO_MATCH`) d'una selfie que no s'ha pogut llegir (`BIOMETRIC_IMAGE_UNUSABLE`). L'`status` que es mostra és l'estat per defecte de la funcionalitat; les [accions de coincidència parcial / sense coincidència](https://docs.didit.me/ca/core-technology/database-validation/database-validation-warnings.md) que hagis configurat poden substituir-lo.

**`MATCH`**: El registre ha confirmat la identitat i tots els camps verificats coincideixen.

```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`**: La selfie coincideix amb la fotografia registrada i el NIN consta al registre, però un nom o una data de naixement que has enviat no coincideix amb el registre de la NIMC. Es retorna el registre perquè puguis veure quin camp difereix.

```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`**: El NIN consta al registre, però la selfie no és la mateixa persona que la fotografia d'inscripció de la NIMC (puntuació de coincidència facial inferior al llindar d'acceptació). No es retorna cap dada del registre, només la puntuació.

```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`**: El NIN consta al registre, però no s'ha pogut fer la coincidència facial: no hi ha cap fotografia d'inscripció registrada o no s'ha detectat cap rostre. No es retorna cap dada del registre, `match_type` és null i la comprovació s'envia a revisió.

```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`**: El NIN té un format correcte, però el registre de la NIMC no conté cap registre per a aquest NIN. Es cobra la consulta.

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

## Dades retornades

Els camps exactes que apareixen a `source_data` depenen del que retorni el registre. L'exemple generat per a `nga_national_id_facial` documenta actualment aquesta estructura normalitzada:

* `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`

## Preus i SLAs

Les consultes de Nigeria National ID + Selfie (NIMC) només es facturen quan Didit rep un resultat concloent de la font de validació.

* **Preu per crida:** \$0.35 USD.
* **Facturació:** per consulta satisfactòria. No se't cobra quan el registre no és accessible, quan falten camps obligatoris o quan la sol·licitud es rebutja abans d'arribar a la font.
* **Latència:** p95 típic inferior a 2 s.
* **Disponibilitat:** 99.9% per trimestre per part de Didit; la disponibilitat de la font de dades varia segons el país i el conjunt de dades.

## Selfie i coincidència facial

El registre de NIMC respon a un NIN vàlid amb el registre complet del titular, de manera que conèixer un número no demostra que n'ets el titular. Per això, cada consulta està vinculada a una selfie: es compara amb la fotografia de registre que NIMC té per a aquest NIN, i el registre només es retorna quan ambdues corresponen a la mateixa persona.

* **Coincidència:** `source_data` conté el registre de NIMC i `face_match_score`. Els noms i la data de naixement que envies es comparen amb aquest registre, i el resultat s'informa a `validation`. Envia'ls per obtenir un veredicte sobre el nom i la data de naixement, o omet-los i llegeix els valors del registre a `source_data`.
* **Persona diferent:** `BIOMETRIC_NO_MATCH`. Només es retorna `face_match_score`, sense dades personals.
* **Coincidència impossible:** `INCONCLUSIVE` quan NIMC no té cap fotografia per al NIN o no es pot detectar cap rostre. No es retorna res i la comprovació s'envia a revisió.
* **NIN desconegut:** `DOCUMENT_NOT_FOUND`. La consulta es factura.

En un flux de treball, la selfie s'obté del pas de prova de vida o de coincidència facial, o del retrat del document pujat quan el flux no té cap pas facial. Una sol·licitud sense selfie, o amb un NIN que no té 11 dígits, es rebutja abans que es cobri res.

## Continua llegint

* [Visió general de la validació en bases de dades a Nigèria](https://docs.didit.me/api-reference/database-validation/nigeria.md)
* [Visió general de la validació en bases de dades](https://docs.didit.me/ca/core-technology/database-validation/overview.md)
* [Codis de resultat](https://docs.didit.me/ca/core-technology/database-validation/database-validation-outcome-codes.md)


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