---
updatedAt: 2025-09-24T10:21:38.000Z
agentTools:
  projectIndex: https://docs.verihubs.com/llms.txt
---

# API Request & Response

The ID Verification service validate the personal identity of your user in a quick and efficient way to protect your business from potential fraud. We provide you a simple API that can be quickly tested and integrated. Please check the details below on the components of our API.

# Endpoint

| Method   | Endpoint                                                            |
| :------- | :------------------------------------------------------------------ |
| **POST** | `https://api.verihubs.com/data-verification/id-verification/verify` |

# Headers

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Key
      </th>

      <th>
        Type
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        App-ID
      </td>

      <td>
        String
      </td>

      <td>
        This is the Application ID that you can generate in the

        [Application Menu in Verihubs Client Dashboard](https://app.verihubs.com/application?granularity=application_name)

        .
        The Client Dashboard have 2 modes, Sandbox and Production.
        Using the Application ID generated in Sandbox mode will return dummy all-true response in ID Verification Service, while using the Application ID generated in Production mode will process the data with the Authoritative Partner.
      </td>
    </tr>

    <tr>
      <td>
        API-Key
      </td>

      <td>
        String
      </td>

      <td>
        API-Key that generated in the

        [Application Menu in Verihubs Client Dashboard](https://app.verihubs.com/application?granularity=application_name)

        that paired to a specific Application ID.
      </td>
    </tr>
  </tbody>
</Table>

# 🎈Request

## Request Parameter

| Parameter     | Type   | Description                                                                                                                                                             | Validation                    | Example          |
| :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------- | :--------------- |
| nik           | String | 16 digits of Nomor Induk Kependudukan as stated on the KTP.                                                                                                             | Must be 16 exact digit.       | 9171022512990011 |
| name          | String | Full name as stated on the KTP.                                                                                                                                         | Must be alphabet.             | John Doe         |
| birth\_date   | String | Birth date in DD-MM-YYYY format as stated on the KTP.                                                                                                                   | Must be in DD-MM-YYYY format. | 01-01-1901       |
| reference\_id | String | This reference\_id can be used to indicate your company’s transaction and must be unique. If the reference\_id is not inputted, then Verihubs will generate one for you | N/A                           | ID\_CHECK\_123   |

# Response

## HTTP Code

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        HTTP Code
      </th>

      <th>
        Description
      </th>

      <th>
        Response
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        200
      </td>

      <td>
        Successful Transaction; Transaction where the data inputted had been successfully verified by the Authoritative Partner and the response has been returned by Verihubs to client.
      </td>

      <td>
        ```json
        {
        "message": "ID Check verification has been done",
        "data": \{
        "id": "e3c0326e-23f7-49d0-8876-71528a860a0c",
        "nik": true,
        "name": false,
        "birth_date": true,
        "reference_id": "f3c0326e-23f7-49d0-8876-71528a860a0d"
        }
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        400
      </td>

      <td>
        Invalid Payload
      </td>

      <td>

      </td>
    </tr>

    <tr>
      <td>
        401
      </td>

      <td>
        Authorization Failed; Unauthorized transaction due to Application ID and/or API-Key issue. If this error appear, please check the possible reason below:

        1. Transaction performed using Sandbox Application ID but Production API-Key, vice versa.
        2. Transaction performed using an API-Key that's not linked to an Application ID, vice versa. This generally occur when a company has more than 1 credential in Verihubs.
      </td>

      <td>
        ```json
        {
        "message": "Authorization Failed",
        "error_code":    "UNAUTHORIZED",
        "error_fields": []
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        403
      </td>

      <td>
        `Forbidden`; The transaction is in Testing mode and you have 0 (zero) remaining quota. Please contact our team to top up your quota, or go live with the ID Verification service.

        **This condition only applies in Testing Mode.**
      </td>

      <td>
        ```json
        {
        "message": "Insufficient testing quota",
        "error_code": "FORBIDDEN",
        "error_fields": []
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        429
      </td>

      <td>
        `Too Many Request`; Spam Error as the transaction is read as spam, please wait 10 seconds before re-performing the hit process with the same identity.
      </td>

      <td>
        ```json
        {
        "message": "Too many request in the allowed time frame",
        "error_code":       "TOO_MANY_REQUEST",
        "error_fields": []
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        500
      </td>

      <td>
        `Internal Server Error`; The transaction failed due to an unexpected error. An message will appear explaining the error with following possible reason:

        1. `Access timeout in the Datasource`; this means that your request has been forwarded but the server did not reply until the pre-set timeout time thus Verihubs terminate the transaction to prevent client to wait too long to get the conclusion.
        2. `Intermittent errors occurred in the Datasource`; this means that your request has been forwarded but the server in experiencing interruptions and unable to perform checking to your data.
        3. `Internal server error`; this means an unpredicted errors occurred in the server.
      </td>

      <td>
        ```json
        {
        "message": "Internal Server Error",
        "error_code":    "INTERNAL_SERVER_ERROR",
        "error_fields": []
        }
        ```
      </td>
    </tr>
  </tbody>
</Table>

## Response Parameter

| Parameter          | Type    | Description                                                                                  | Example                              |
| :----------------- | :------ | :------------------------------------------------------------------------------------------- | :----------------------------------- |
| message            | string  | The message of your transaction.                                                             | ID Check verification has been done  |
| data.id            | string  | Verihubs auto generated Transaction ID. Consist of 36 digit UUID (32 digit exclude stripes). | e3c0326e-23f7-49d0-8876-71528a860a0c |
| data.nik           | boolean | The verification result of your NIK.                                                         | true                                 |
| data.name          | boolean | The verification result of your name.                                                        | true                                 |
| data.birth\_date   | boolean | The verification result of your date of birth.                                               | true                                 |
| data.reference\_id | boolean | Client inputted unique ID. If you did not input any, Verihubs will auto generate the ID.     | f3c0326e-23f7-49d0-8876-71528a860a0d |

## Response Case Example

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Case
      </th>

      <th>
        Description
      </th>

      <th>
        Response
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        Verified
      </td>

      <td>
        All data inputted (NIK, Name, Date of Birth) verified.
      </td>

      <td>
        ```json
        {
        "message": "Identity verification has been done",
        "data": \{
        "id": "e3c0326e-23f7-49d0-8876-71528a860a0c",
        "nik": true,
        "name": true,
        "birth_date": true,
        "reference_id": "f3c0326e-23f7-49d0-8876-71528a860a0d"
        }
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        NIK Not Found
      </td>

      <td>
        NIK inputted not found in the government database.
      </td>

      <td>
        ```json
        {
        "message": "Identity verification has been done",
        "data": \{
        "id": "e3c0326e-23f7-49d0-8876-71528a860a0c",
        "nik": false,
        "name": null,
        "birth_date": null,
        "reference_id": "f3c0326e-23f7-49d0-8876-71528a860a0d"
        }
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        Name Not Match
      </td>

      <td>
        Name inputted did not match the name recorded in the government database.
      </td>

      <td>
        ```json
        {
        "message": "Identity verification has been done",
        "data": \{
        "id": "e3c0326e-23f7-49d0-8876-71528a860a0c",
        "nik": true,
        "name": false,
        "birth_date": true,
        "reference_id": "f3c0326e-23f7-49d0-8876-71528a860a0d"
        }
        }
        ```
      </td>
    </tr>

    <tr>
      <td>
        Date of Birth Not Match
      </td>

      <td>
        Date of Birth inputted did not match the date of birth recorded in the government database.
      </td>

      <td>
        ```json
        {
        "message": "Identity verification has been done",
        "data": \{
        "id": "e3c0326e-23f7-49d0-8876-71528a860a0c",
        "nik": true,
        "name": true,
        "birth_date": false,
        "reference_id": "f3c0326e-23f7-49d0-8876-71528a860a0d"
        }
        }
        ```
      </td>
    </tr>
  </tbody>
</Table>