> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lumiid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NIN Verification API: Nigerian National ID Lookup

> Verify Nigerian National Identification Numbers via NIMC. Retrieve full name, DOB, address, photo, and more with Basic or Premium tier requests.

Use the LumiID NIN Verification API to verify a customer's Nigerian National Identification Number (NIN) against records held by the National Identity Management Commission (NIMC). Submit an 11-digit NIN to retrieve verified identity data including full name, date of birth, residential address, and biometric photo. This API supports KYC, customer onboarding, compliance workflows, and fraud prevention across banks, fintechs, lending platforms, and government services.

## Overview

| Property | Details |
| - | - |
| **Country** | 🇳🇬 Nigeria |
| **Data Source** | National Identity Management Commission (NIMC) |
| **NIN Format** | 11-digit numeric |
| **Verification Tiers** | Basic • Premium |
| **Typical Latency** | \< 2 seconds |
| **Sandbox** | Supported |
| **Compliance** | NDPR Compliant |

***

## Basic NIN Verification

Use the Basic endpoint for standard customer onboarding and identity verification. It returns core identity fields including full name, date of birth, gender, phone number, residential address, and a Base64-encoded biometric photo.

### Endpoint

```text theme={null}
POST https://api.lumiid.com/v1/ng/nin-basic/
```

### Request Headers

| Header | Value |
| - | - |
| `Authorization` | `Bearer YOUR_SECRET_KEY` |
| `Content-Type` | `application/json` |

### Request Body

**nin** `string` *required*

The customer's 11-digit National Identification Number.

#### Example Request

```json theme={null}
{
  "nin": "89184072280"
}
```

### Success Response

```json theme={null}
{
  "success": true,
  "code": "NIN_VERIFIED",
  "message": "NIN verification successful",
  "verification_type": "NIN",
  "summary": {
    "verified": true,
    "verification_type": "NIN",
    "provider": "LumiID",
    "confidence_score": 1.0
  },
  "data": {
    "nin": "89184072280",
    "firstname": "TERHEMBA",
    "lastname": "JUDE",
    "middlename": "",
    "phone": "08000000000",
    "gender": "m",
    "birthdate": "06-01-1974",
    "photo": "/9j/4AAQSkZJRgABAgAAAQABAAD...",
    "residence": {
      "address1": "8637 Larkin Ports",
      "town": "Abuja",
      "lga": "Abuja Municipal",
      "state": "FCT Abuja"
    }
  },
  "meta": {
    "request_id": "req_a3f9c21d9b4e",
    "timestamp": "2026-03-19T08:14:22.445821Z"
  }
}
```

### Response Fields

**success** `boolean`

Indicates whether the verification completed successfully.

**code** `string`

Machine-readable response code. Returns `NIN_VERIFIED` on success.

**message** `string`

Human-readable response message.

**verification\_type** `string`

Always `NIN`.

**summary** `object`

Verification summary.

**summary fields**

**verified** `boolean`

Whether the NIN was successfully verified.

**verification\_type** `string`

Always `NIN`.

**provider** `string`

Always `LumiID`.

**confidence\_score** `number`

Confidence score for the verification result. Returns `1.0` for a confirmed match.

**data** `object`

Verified NIMC identity record.

**data fields**

**nin** `string`

Verified National Identification Number.

**firstname** `string`

First name.

**lastname** `string`

Last name.

**middlename** `string`

Middle name, if available.

**phone** `string`

Registered phone number.

**gender** `string`

Gender.

**birthdate** `string`

Date of birth (DD-MM-YYYY).

**photo** `string`

Base64-encoded biometric photograph.

**residence** `object`

Registered residential address.

**residence fields**

**address1** `string`

Street address.

**town** `string`

Town or city.

**lga** `string`

Local Government Area.

**state** `string`

State.

**meta** `object`

Request metadata.

**meta fields**

**request\_id** `string`

Unique request identifier for auditing and support.

**timestamp** `string`

ISO 8601 timestamp of when the request was processed.

***

## Premium NIN Verification

Use the Premium endpoint when enhanced due diligence (EDD) requires a complete NIMC identity profile. It returns all Basic fields plus additional demographic and regulatory data.

> [!NOTE]
>
> The Premium endpoint is recommended for banks, fintechs, lending platforms, government services, and enterprise KYC workflows that require full regulatory compliance.

### Endpoint

```text theme={null}
POST https://api.lumiid.com/v1/ng/nin-premium/
```

### Request Headers

| Header | Value |
| - | - |
| `Authorization` | `Bearer YOUR_SECRET_KEY` |
| `Content-Type` | `application/json` |

### Request Body

**nin** `string` *required*

The customer's 11-digit National Identification Number.

#### Example Request

```json theme={null}
{
  "nin": "89184072280"
}
```

### Additional Response Fields

The Premium endpoint returns **all Basic fields**, plus the following:

**title** `string`

Customer title (e.g., `mr`, `mrs`).

**email** `string`

Registered email address.

**profession** `string`

Profession.

**employment\_status** `string`

Employment status.

**marital\_status** `string`

Marital status.

**birth\_state** `string`

State of birth.

**birth\_country** `string`

Country of birth.

**state\_of\_origin** `string`

State of origin.

**lga\_of\_origin** `string`

Local Government Area of origin.

**religion** `string`

Religion.

**nspokenlang** `string`

Primary spoken language.

**next\_of\_kin** `object`

Masked next-of-kin information.

**next\_of\_kin fields**

**firstname** `string`

Masked first name.

**lastname** `string`

Masked last name.

**address1** `string`

Masked address.

**state** `string`

Masked state.

**signature** `string`

Base64-encoded signature.

**tracking\_id** `string`

NIMC tracking identifier.

#### Premium Additional Fields — Example

```json theme={null}
{
  "data": {
    "title": "mr",
    "email": "example@gmail.com",
    "profession": "ENGINEER",
    "marital_status": "single",
    "employment_status": "employed",
    "birth_state": "FCT",
    "birth_country": "Nigeria",
    "state_of_origin": "FCT",
    "lga_of_origin": "Kabu",
    "religion": "islam",
    "nspokenlang": "ESAN",
    "next_of_kin": {
      "firstname": "****",
      "lastname": "****",
      "address1": "****",
      "state": "****"
    },
    "signature": "base64==",
    "tracking_id": "S000000000000000"
  }
}
```

***

## Tier Comparison

| Identity Data | Basic | Premium |
| - | - | - |
| Full name | ✓ | ✓ |
| Gender | ✓ | ✓ |
| Date of birth | ✓ | ✓ |
| Phone number | ✓ | ✓ |
| Residential address | ✓ | ✓ |
| Biometric photo | ✓ | ✓ |
| Email address | — | ✓ |
| Profession | — | ✓ |
| Employment status | — | ✓ |
| Marital status | — | ✓ |
| Religion | — | ✓ |
| Spoken language | — | ✓ |
| Birth state & country | — | ✓ |
| State & LGA of origin | — | ✓ |
| Next-of-kin (masked) | — | ✓ |
| Signature | — | ✓ |
| Tracking ID | — | ✓ |

***

## Error Codes

| HTTP | Code | Resolution |
| - | - | - |
| **400** | `NIN_VERIFICATION_FAILED` | Verification failed. Retry once before contacting support. |
| **400** | `NIN_NOT_FOUND` | No record exists for the supplied NIN. Ensure it contains exactly 11 digits. |
| **401** | `INVALID_API_KEY` | Verify your API credentials. |
| **401** | `UNAPPROVED_ORGANIZATION` | Complete organization approval before using the Production API. |
| **401** | `SUBSCRIPTION_REQUIRED` | Enable NIN Verification from the LumiID Console. |
| **402** | `INSUFFICIENT_FUNDS` | Fund your LumiID wallet before retrying. |
| **500** | `SERVER_ERROR` | Unexpected internal error. Retry once. |
| **503** | `SERVICE_UNAVAILABLE` | The NIMC service is temporarily unavailable. Retry with exponential backoff. |
| **504** | `TIMEOUT` | The request timed out. Retry after a short delay. |

***

## Recommended Verification Flow

For the highest level of assurance during onboarding, LumiID recommends the following workflow:

**1. Verify the NIN**

Submit the customer's NIN to `POST /v1/ng/nin-basic/` or `POST /v1/ng/nin-premium/` and confirm the identity record.

**2. Perform a Liveness Check**

Use the Liveness Detection API to verify the customer is physically present using their selfie.

**3. Run Face Comparison**

Compare the customer's selfie against the NIMC biometric photo using the Face Comparison API.

**4. Proceed with Onboarding**

Continue onboarding only after all verification checks succeed. This workflow detects identity fraud, impersonation, and presentation attacks while meeting KYC and AML requirements.

***

## Security & Compliance

* All identity records are retrieved directly from the **National Identity Management Commission (NIMC)**.
* All API requests must use **HTTPS**.
* Every verification request includes a unique `request_id` for auditing and support.
* Process sensitive information in accordance with the **Nigeria Data Protection Act (NDPA)** and applicable privacy regulations.
* Only collect Premium fields such as **religion** and **next\_of\_kin** where there is a lawful basis.

***

## Code Example

```python theme={null}
import requests

url = "https://api.lumiid.com/v1/ng/nin-basic/"

headers = {
    "Authorization": "Bearer YOUR_SECRET_KEY",
    "Content-Type": "application/json"
}

payload = {
    "nin": "89184072280"
}

response = requests.post(
    url,
    json=payload,
    headers=headers
)

print(response.json())
```

> [!NOTE]
>
> To use the Premium endpoint, change the URL to `https://api.lumiid.com/v1/ng/nin-premium/`. The request body remains the same.


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