> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-en/rest-api/identity-api/identity-api-reference/onboarding/kyc/nigeria/document-verification/passport-verify.md).

# Passport Verify

Verifies a **Nigerian Passport number** and returns the holder's information including **Passport photo and details**.

### Endpoint

```
POST /kyc/nga/passport
```

### Authentication

| Type    | Location | Name          |
| ------- | -------- | ------------- |
| API Key | Header   | **x-api-key** |

### Request body

**Content-Type:** `application/json`

#### Parameters

| Parameter         | Type   | Required | Description                             |
| ----------------- | ------ | -------- | --------------------------------------- |
| `passport_number` | string | **Yes**  | Passport number to verify.              |
| `last_name`       | string | **Yes**  | Holder's last name.                     |
| `date_of_birth`   | string | **Yes**  | Date of birth in format **YYYY-MM-DD**. |

#### Request example

```json
{
  "passport_number": "A12345678",
  "last_name": "Olamide",
  "date_of_birth": "1996-05-06"
}
```

### Responses

#### `200` Success

#### Response parameters

| Parameter              | Type    | Description                                                                                                                   |
| ---------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `serviceResultCode`    | integer | Code that indicates the **overall result** of the service execution. See [Service Result Code](#service-result-code)          |
| `serviceTime`          | string  | Processing time **(milliseconds)**.                                                                                           |
| `serviceResultLog`     | string  | Descriptive field of the result of the service execution. Includes details when there is an error or exception in the module. |
| `serviceTransactionId` | string  | Transaction identifier associated with the request processed by the API.                                                      |
| `data`                 | object  | Object with the verified Passport data. See table below.                                                                      |

#### Response parameters — `data`

| Parameter         | Type           | Description                                                             |
| ----------------- | -------------- | ----------------------------------------------------------------------- |
| `passport_number` | string         | Verified Passport number. It may be returned masked (e.g. `B0****000`). |
| `first_name`      | string         | Name(s) of the holder.                                                  |
| `middle_name`     | string         | Middle name.                                                            |
| `last_name`       | string         | Holder's last name(s).                                                  |
| `dob`             | string         | Date of birth (format `DD/MM/YYYY`).                                    |
| `gender`          | string         | Gender. Possible values: `Male`, `Female`                               |
| `document_type`   | string         | Document type (e.g. `Standard E-passport`).                             |
| `issued_date`     | string \| null | Issue date.                                                             |
| `expiry_date`     | string \| null | Expiration date.                                                        |
| `issued_at`       | string \| null | Place of issue.                                                         |
| `photo`           | string \| null | Holder's photo in **Base64** (can be `null`).                           |
| `signature`       | string \| null | Holder's signature in format **Base64** (can be `null`).                |

\| `mobile` | string | Mobile phone number associated with the document (unmasked). |

#### Service Result Code

The `serviceResultCode` indicates the overall result of the service execution:

| serviceResultCode | Description                                                                       | HTTP Code |
| ----------------- | --------------------------------------------------------------------------------- | --------- |
| 200               | The service execution was successful, the module processed the request correctly. | 200       |

#### Response example

```json
{
  "serviceResultCode": 200,
  "serviceTime": "2200",
  "serviceResultLog": "Success",
  "serviceTransactionId": "g63j457k-56k4-3j5n-j08j-4k803jl44lm",
  "data": {
    "passport_number": "A1****678",
    "issued_date": "2020-03-15",
    "expiry_date": "2025-03-14",
    "document_type": "Standard E-passport",
    "issued_at": "LAGOS",
    "first_name": "Samuel",
    "last_name": "Olamide",
    "middle_name": "Nomo",
    "dob": "06/05/1996",
    "gender": "Male",
    "mobile": "08031234843",
    "photo": "base64encodedphoto...",
    "signature": "base64encodedsignature..."
  }
}
```

#### `400` Bad Request

Error returned with the service envelope (`serviceResultCode` reflects the HTTP status code of the response):

```json
{
  "serviceResultCode": 400,
  "serviceResultLog": "Sorry, lookup failed. Please check the details and try again",
  "serviceTime": "151",
  "serviceTransactionId": "08ac9699-dc9e-4cdc-81d7-264f71838309"
}
```

#### `502` Bad Gateway

Returned when the service is temporarily unavailable or its response could not be interpreted. The body uses the service envelope with `serviceResultCode: 500`:

```json
{
  "serviceResultCode": 500,
  "serviceResultLog": "Service temporarily unavailable. Please try again later",
  "serviceTime": "3000",
  "serviceTransactionId": "38de2932-0f2h-7gff-14g0-597h04161632"
}
```

#### `504` Gateway Timeout

Timeout error **timeout**, returned with the service envelope:

```json
{
  "serviceResultCode": 504,
  "serviceResultLog": "Request timeout. Please try again",
  "serviceTime": "30000",
  "serviceTransactionId": "48ef3043-1g3i-8hgg-25h1-608i15272743"
}
```

{% hint style="info" %}
Authentication errors (`401`/`403`) are rejected by the **gateway before reaching the service** and **do not** use the envelope `serviceResultCode`. Platform validation errors use the format `application/problem+json`. See [Error handling](/docs.facephi-en/rest-api/identity-api/identity-api-reference/onboarding/kyc/nigeria.md#manejo-de-errores) for details on the three response formats.
{% endhint %}
