# Verify zkKYC Status

{% hint style="info" %}
Before making any API requests, please refer to the [#getting-started](https://docs.zk.me/hub/start/onboarding/integration/api/..#getting-started "mention") section on the [](https://docs.zk.me/hub/start/onboarding/integration/api "mention") page to obtain the necessary API access parameters.
{% endhint %}

## Get Users List <a href="#get-users-list" id="get-users-list"></a>

Returns a list of users who initiated the verification flow under a dashboard account.

{% tabs %}
{% tab title="Endpoint" %}

```ruby
POST https://agw.zk.me/zkseradmin/openapi/kyc/getUsersList
```

{% endtab %}

{% tab title="Request" %}

#### Request Body <a href="#parameters" id="parameters"></a>

```json
{
  "mchNo": "YourAppID" ,
  "apiKey": "YourApiKey",
  "programNo": "YourProgramNo",
  "page": 1,
}
```

#### Fields Explanation <a href="#parameters" id="parameters"></a>

<table><thead><tr><th width="206">Name</th><th width="155">Type</th><th>Description</th></tr></thead><tbody><tr><td>mchNo</td><td>string</td><td>Same as AppID in the <a href="https://dashboard.zk.me/integration">Dashboard</a>.</td></tr><tr><td>apiKey</td><td>string</td><td>Your API Key.</td></tr><tr><td>programNo</td><td>string</td><td>Same as the programNo you pass for the SDK integration. </td></tr><tr><td>page</td><td>integer</td><td>Returns users in blocks of 50 (page 1 = 1–50, page 2 = 51–100, etc.). If fewer users exist, all are returned.</td></tr></tbody></table>
{% endtab %}

{% tab title="Response" %}

#### Sample Response <a href="#sample-response" id="sample-response"></a>

```json
{
  "code": ...,
  "data": {
    "total": ...,
    "totalPage": ...,
    "users": [
      {
        "clientUserIdentifier": [
          {
            "blockchainId": ...,
            "network": "...",
            "tokenId": "...",
            "userId": ...,
            "walletAddress": "..."
          }
        ],
        "completedTimeUnix": "...",
        "ssiWallet": "...",
        "status": "...",
        "zkmeAccount": "...",
        "zkmeId": "..."
      },
    ]
  },
  "msg": "...",
  "timestamp": ...
}
```

#### Fields Explanation <a href="#parameters" id="parameters"></a>

| Name      | Type   | Description                                             |
| --------- | ------ | ------------------------------------------------------- |
| code      | number | Business status code, e.g. `80000000` indicates success |
| msg       | string | Message describing the result                           |
| timestamp | number | Response timestamp in Unix milliseconds                 |
| data      | object | Main data object (see **`data` Object** below)          |

***

**`data` Object**

| Name      | Type           | Description                                   |
| --------- | -------------- | --------------------------------------------- |
| total     | number         | Total number of users matched                 |
| totalPage | number         | Total number of pages                         |
| users     | array\<object> | List of user objects (see **`users` Object**) |

***

**`users` Object**

<table><thead><tr><th width="182.548828125">Name</th><th width="128.3125">Type</th><th>Description</th></tr></thead><tbody><tr><td>clientUserIdentifier</td><td>array&#x3C;object></td><td>Identifiers linked to this user (see <strong><code>clientUserIdentifier</code> Object</strong>)</td></tr><tr><td>completedTimeUnix</td><td>string</td><td>Completion time (Unix milliseconds, as string)</td></tr><tr><td>ssiWallet</td><td>string</td><td>zkMe SSI wallet address bound to the user.</td></tr><tr><td>status</td><td>string</td><td><p>Current KYC/verification status. Possible values include:</p><ul><li>Verification Started</li><li>﻿﻿OCR Passed</li><li>Liveness Checked</li><li>ZKP Generated</li><li>﻿﻿SBT Minted</li><li><p>OnChain Minted</p><ul><li>Note: Only applicable to <a href="../../../zkkyc-levels#on-chain-mint-default">On-chain Mint</a> </li></ul></li><li>﻿﻿KYC Passed</li><li>Verification Failed</li></ul></td></tr><tr><td>zkmeAccount</td><td>string</td><td>The email address used to log in to zkMe.</td></tr><tr><td>zkmeId</td><td>string</td><td>Unique zkMe user ID</td></tr></tbody></table>

{% hint style="info" %}
**Note:** <kbd>`clientUserIdentifier`</kbd> will be empty if the user’s `status` has not yet reached `KYC_PASSED`.
{% endhint %}

***

**`clientUserIdentifier` Object**

<table><thead><tr><th width="129.77734375">Name</th><th width="100">Type</th><th>Description</th></tr></thead><tbody><tr><td>blockchainId</td><td>number</td><td>Chain ID</td></tr><tr><td>network</td><td>string</td><td>Chain name </td></tr><tr><td>tokenId</td><td>string</td><td>The ID of the Soulbound Token (SBT) minted for the user on the chain.</td></tr><tr><td>walletAddress</td><td>string</td><td>User’s wallet address from the client system.</td></tr><tr><td>userId</td><td>string</td><td>User’s email address, or another non-wallet unique identifier from the client system.</td></tr></tbody></table>

{% hint style="info" %}
**Note:**&#x20;

The returned fields are returned is determined by the configured [**decentralization level**](https://docs.zk.me/hub/start/onboarding/zkkyc-levels)**:**&#x20;

* For [On-chain Mint](https://docs.zk.me/hub/start/zkkyc-levels#on-chain-mint-default) integrations, the fields `blockchainId`, `network`, `tokenId`, and `walletAddress` are returned. `userId` is not returned.
* For [Cross-chain](https://docs.zk.me/hub/start/zkkyc-levels#cross-chain) integrations, only `userId`  is returned.
  {% endhint %}

***

{% endtab %}
{% endtabs %}

## Get Users KYC Result Overview  <a href="#get-get-users-kyc-result-overview" id="get-get-users-kyc-result-overview"></a>

Returns the verification status of the user for the following credentials: [zkpoc](https://docs.zk.me/hub/what/zkkyc/zkpoc "mention"), [zkpol](https://docs.zk.me/hub/what/zkkyc/zkpol "mention"), and [amlme](https://docs.zk.me/hub/what/zkkyc/amlme "mention").&#x20;

{% tabs %}
{% tab title="Endpoint" %}

```ruby
POST https://agw.zk.me/zkseradmin/openapi/queryKycInfoByAddress
```

{% endtab %}

{% tab title="Request" %}

#### Request Body <a href="#parameters" id="parameters"></a>

```json
{
  "mchNo": "YourAppID" ,
  "apiKey": "YourApiKey",
  "programNo": "YourProgramNo",
  "account": "walletAddress", // or email, or other unique identifiers
  "chainId": "YourChainID"
}
```

#### Fields Explanation <a href="#parameters" id="parameters"></a>

<table><thead><tr><th width="206">Name</th><th width="155">Type</th><th>Description</th></tr></thead><tbody><tr><td>mchNo</td><td>string</td><td>Same as AppID in the <a href="https://dashboard.zk.me/integration">Dashboard</a>.</td></tr><tr><td>apiKey</td><td>string</td><td>Your API Key.</td></tr><tr><td>programNo</td><td>string</td><td>Same as the programNo you pass for the SDK integration. </td></tr><tr><td>account</td><td>string</td><td>User's wallet address (recommended), email address, or other unique identifier</td></tr><tr><td>chainId</td><td>string</td><td>Same as the param chainId you pass for the SDK integration. </td></tr></tbody></table>

#### Supported Chain List

{% tabs %}
{% tab title="Mainnet" %}

| Chain Name      | zkMe Chain ID |
| --------------- | ------------- |
| Aptos           | aptos-1       |
| Arbitrum        | 42161         |
| Base            | 8453          |
| BNB Smart Chain | 56            |
| BounceBit       | 6001          |
| Ethereum        | 1             |
| Kaia            | 8217          |
| Manta           | 169           |
| Neutron         | neutron-1     |
| Polygon         | 137           |
| Ronin           | 2020          |
| Solana          | solana        |
| TON             | ton           |
| {% endtab %}    |               |

{% tab title="Testnet" %}

| Chain Name                | zkMe Chain ID |
| ------------------------- | ------------- |
| Aptos Testnet             | aptos-2       |
| Plume Testnet             | 98864         |
| Scroll Sepolia Testnet    | 534351        |
| Sei Testnet               | atlantic-2    |
| ZetaChain Athens3 Testnet | 7001          |
| {% endtab %}              |               |
| {% endtabs %}             |               |
| {% endtab %}              |               |

{% tab title="Response" %}

#### Sample Response <a href="#sample-response" id="sample-response"></a>

```json
{
  "zkme_id":"...",
  "kycStatus":"...",
  "kycCompleteTimeUnix":"...", 
  "ssiAddress":"...",
  "verifierValues":{
    "sanction":...,
    "age":...,
    "citizenship":...,
    "location":...,
    "unique":...,
  },
}
```

#### Fields Explanation <a href="#fields" id="fields"></a>

<table><thead><tr><th width="218">Name</th><th width="96">Type</th><th>Description</th></tr></thead><tbody><tr><td>zkme_id</td><td>string</td><td>Return the zkMe id corresponding to the zkMe account linked to the provided address.</td></tr><tr><td>kycStatus</td><td>string</td><td><p>Return users' KYC status, including 8-9 stages: </p><ul><li>Not Started</li><li>Verification Started</li><li>﻿﻿OCR Passed</li><li>Liveness Checked</li><li>ZKP Generated</li><li>﻿﻿SBT Minted</li><li><p>OnChain Minted</p><ul><li>Note: Only applicable to <a href="../../../zkkyc-levels#on-chain-mint-default">On-chain Mint</a> </li></ul></li><li>﻿﻿KYC Passed</li><li>Verification Failed</li></ul></td></tr><tr><td>kycCompleteTimeUnix</td><td>string</td><td>Unix timestamp of the mint time of SBT minting in SSI wallet.</td></tr><tr><td>ssiAddress</td><td>string</td><td>User's SSI wallet address.</td></tr><tr><td>verifierValues</td><td>object</td><td>List of verifierValues objects (see <strong><code>verifierValues</code> Object</strong>)</td></tr></tbody></table>

***

**`verifierValues` Object**

<table><thead><tr><th width="218">Name</th><th width="96">Type</th><th>Description</th></tr></thead><tbody><tr><td>sanction</td><td>bool</td><td><p>Return the user's AML Screening verification result with the following output:</p><ul><li>If the user passes, return <code>true</code>.</li><li>If the user fails, return <code>false</code>.</li><li>If the AML Screening verification is not configured for the program, return <code>null</code>.</li></ul></td></tr><tr><td>age</td><td>bool</td><td><p>Return the user's age verification result with the following output:</p><ul><li>If the user passes, return <code>true</code>.</li><li>If the user fails, return <code>false</code>.</li><li>If the Proof of Citizenship is not configured for this program, return <code>null</code>.</li></ul></td></tr><tr><td>citizenship</td><td>bool</td><td><p>Return the user's citizenship verification result with the following output:</p><ul><li>If the user passes, return <code>true</code>.</li><li>If the user fails, return <code>false</code>.</li><li>If the Proof of Citizenship is not configured for the program, return <code>null</code>.</li></ul></td></tr><tr><td>location</td><td>bool</td><td><p>Return the user's location verification result with the following output:</p><ul><li>If the user passes, return <code>true</code>.</li><li>If the user fails, return <code>false</code>.</li><li>If the Proof of Location is not configured for the program, return <code>null</code>.</li></ul></td></tr><tr><td>unique</td><td>bool</td><td><p>Return the user's ID-based uniqueness verification result with the following output:</p><ul><li>If the user passes, return <code>true</code>.</li><li>If the user fails, return <code>false</code>.</li><li>If the Uniqueness Check is not configured for the program, return <code>null</code>.</li></ul></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Get Users Address Proof Result Overview

Returns the verification status of the user for the following credentials: [zkpoa](https://docs.zk.me/hub/what/zkkyc/zkpoa "mention").&#x20;

{% tabs %}
{% tab title="Endpoint" %}

```ruby
POST https://agw.zk.me/zkseradmin/openapi/queryPoAInfoByAddress 
```

{% endtab %}

{% tab title="Request" %}

#### Request Body <a href="#parameters" id="parameters"></a>

```json
{
  "mchNo": "YourAppID" ,
  "apiKey": "YourApiKey",
  "programNo": "YourProgramNo",
  "account": "walletAddress", // or email, or other unique identifiers
}
```

#### Fields Explanation <a href="#parameters" id="parameters"></a>

<table><thead><tr><th width="206">Name</th><th width="155">Type</th><th>Description</th></tr></thead><tbody><tr><td>mchNo</td><td>string</td><td>Same as AppID in the <a href="https://dashboard.zk.me/integration">Dashboard</a>.</td></tr><tr><td>apiKey</td><td>string</td><td>Your API Key.</td></tr><tr><td>programNo</td><td>string</td><td>Same as the programNo you pass for the SDK integration. </td></tr><tr><td>account</td><td>string</td><td>User's wallet address (recommended), email address, or other unique identifier</td></tr></tbody></table>
{% endtab %}

{% tab title="Response" %}

#### Sample Response <a href="#sample-response" id="sample-response"></a>

```json
{
    "code": ...,
    "data": [
        {
            "completedTimeUnix": "...",
            "ssiAddress": "...",
            "status": "...",
            "verifierValues": {
                "countryRegion": ...
            },
            "zkmeId": "..."
        }
    ],
    "msg": "...",
    "timestamp": ...
}
```

#### Fields Explanation <a href="#fields" id="fields"></a>

| Name      | Type   | Description                                             |
| --------- | ------ | ------------------------------------------------------- |
| code      | number | Business status code, e.g. `80000000` indicates success |
| msg       | string | Message describing the result                           |
| timestamp | number | Response timestamp in Unix milliseconds                 |
| data      | object | Main data object (see **`data` Object** below)          |

***

**`data` Object**

<table><thead><tr><th width="218">Name</th><th width="96">Type</th><th>Description</th></tr></thead><tbody><tr><td>completedTimeUnix</td><td>string</td><td>Unix timestamp of the mint time of SBT minting in SSI wallet.</td></tr><tr><td>ssiAddress</td><td>string</td><td>User's SSI wallet address.</td></tr><tr><td>status</td><td>string</td><td><p>Return users' KYC status, including 7 stages: </p><ul><li>Not Started</li><li>Verification Started</li><li>﻿﻿OCR Passed</li><li>ZKP Generated</li><li>﻿﻿SBT Minted</li><li>﻿﻿Verification Passed</li><li>Verification Failed</li></ul></td></tr><tr><td>zkme_id</td><td>string</td><td>Return the zkMe id corresponding to the zkMe account linked to the provided address.</td></tr><tr><td>verifierValues</td><td>object</td><td>List of verifierValues objects (see <strong><code>verifierValues</code> Object</strong>)</td></tr></tbody></table>

***

**`verifierValues` Object**

<table><thead><tr><th width="218">Name</th><th width="96">Type</th><th>Description</th></tr></thead><tbody><tr><td>countryRegion</td><td>bool</td><td><p>Return the user's Address verification result with the following output:</p><ul><li>If the user passes, return <code>true</code>.</li><li>If the user fails, return <code>false</code>.</li><li>If the AML Screening verification is not configured for the program, return <code>null</code>.</li></ul></td></tr></tbody></table>
{% endtab %}
{% endtabs %}
