kya/screening_v2
Summary
Section titled “Summary”The /kya/screening_v2 endpoint submits a new screening request. Supports both synchronous and asynchronous modes. In asynchronous mode, a task_id is returned for later result retrieval; in synchronous mode, the risk result is returned directly in the response.
Request
Section titled “Request”- HTTP Method:
GET - Endpoint Path:
/kya/screening_v2 - Query Parameters:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| chain | String | Yes | Name of the target blockchain (must be a supported chain; see Supported Chains) | eth, btc, bsc, sol |
| address | String | Yes | Valid blockchain address | 0x1234567890abcdef1234567890abcdef12345678 |
| rule_set_id | String | No | Optional parameter - standard-mode-rule-set (default) - fast-mode-rule-set - strict-mode-rule-set | |
| mode | String | No | Optional parameter - async (default) - sync |
Response - async mode
Section titled “Response - async mode”| Field | Type | Presence | Description |
|---|---|---|---|
task_id | String | Always | Task ID of the screening job |
Example Code - async mode
Section titled “Example Code - async mode”Request
curl -X GET "https://api.compliance.certik.com/v4/kya/screening_v2?chain=tron&address=TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR&rule_set_id=standard-mode-rule-set" \ -H "X-API-Key: YOUR_API_KEY" \ -H "X-API-Secret: YOUR_API_SECRET"Response
{ "code": 202, "message": "accepted", "data": { "task_id": "698d7b705f481da34257a174" }}Response - sync mode
Section titled “Response - sync mode”| Field | Type | Presence | Description |
|---|---|---|---|
chain | String | Always | The blockchain network identifier (e.g., eth). |
address | String | Always | The specific wallet address being screened. |
rule_set_id | String | Always | The identifier of the compliance policy applied to this task. |
status | String | Always | The current state of the task (e.g., SUCCESS, FAILED). |
retry_count | Integer | Always | Number of times the task was re-attempted by the system. |
created_at | String | Always | ISO 8601 timestamp of task creation. |
updated_at | String | Always | ISO 8601 timestamp of the last update to the task. |
started_at | String | Always | ISO 8601 timestamp of when the analysis was started. |
finished_at | String | Always | ISO 8601 timestamp of when the analysis was finalized. |
api_key | String | Always | The unique API key used for this request. |
org_id | String | Always | The organization identifier. |
result | Object | Always | screening result |
-risk_results | Object | Always | Grouped risk categories (e.g., Hack, Scam). |
--origin | String | Always (within Risk) | The source of the risk (e.g., self). |
--sub_origin | String | Always (within Risk) | Specifies the risk source dimension (label or entity). |
--category | String | Always (within Risk) | High-level grouping (e.g., Cefi, Dapp, Infra). |
--level | String | Always (within Risk) | Severity level of the specific risk factor. |
--trigger | Object | Always (within Risk) | Technical rule and trigger identifiers. |
---rule_id | String | Always | Internal ID of the compliance rule matched. |
---trigger_id | String | Always | Specific trigger condition ID. |
--exposure | Object | Always (within Risk) | Numerical and path analysis of the risk connection. |
---direction | String | Always | Fund flow direction (Inbound or Outbound). |
---share | Float | Always | Ratio of exposed volume to total volume (0.0 to 1.0). |
---amount_usd | Float | Always | Total USD value associated with the risk exposure. |
---amount | Number | Always | Asset amount associated with the risk exposure. |
---tx_count | Integer | Always | Number of transactions contributing to this exposure. |
---counterparty_address | String | Always | The source address associated with the risk. |
---hop_count | Integer | Always | Number of steps between target and risk source (1 = direct). |
---path_count | Integer | Always | Total number of identified fund paths. |
---paths_aggregated | Boolean | Always | Indicates if multiple paths were merged for the report. |
---paths | Array | Always | Detailed path visualization data (returns [] if none). |
-counterparties | Object | Always | A map of counterparty data, keyed by wallet address. |
--counterparty | String | Always (within CP) | The wallet address of the counterparty. |
--risk_factors | Object | Always (within CP) | Specific risk tags and origins for this counterparty. |
---origin | String | Always (within Factors) | The source of the risk (e.g., self). |
---sub_origin | String | Always (within Factors) | Specifies the risk source dimension (label or entity). |
---category | String | Always (within Factors) | High-level grouping (e.g., Cefi, Dapp, Infra). |
---level | String | Always (within Factors) | Severity level of the specific risk factor. |
---trigger | Object | Always (within Risk) | Technical rule and trigger identifiers. |
----rule_id | String | Always | Internal ID of the compliance rule matched. |
----trigger_id | String | Always | Specific trigger condition ID. |
--transactions | Array | Always (within CP) | List of actual transfers with this specific counterparty. |
---chain | String | Always (within Tx) | Network where the transaction occurred. |
---hash | String | Always (within Tx) | The unique transaction hash on the blockchain. |
---type | String | Always (within Tx) | The transaction type (e.g., Normal). |
---block_number | Integer | Always (within Tx) | Block height of the transaction. |
---timestamp | Integer | Always (within Tx) | Unix timestamp of the transaction. |
---from | String | Always (within Tx) | Sender’s address. |
---to | String | Always (within Tx) | Receiver’s address. |
---amount | String | Always (within Tx) | Raw asset amount. |
---usd_value | Number | Always (within Tx) | USD value at the time of the transfer. |
---token_address | String | Always (within Tx) | Contract address (e.g., 0xEeee… for native coins). |
---token_symbol | String | Always (within Tx) | Token symbol (e.g., USDT). |
---token_decimals | Integer | Always (within Tx) | Decimals for the token (used to format raw amount). |
---token_name | String | Always (within Tx) | Token name (e.g., Tether USD). |
---token_price | Number | Always (within Tx) | Market price per unit in USD at transaction time. |
-entities | Array[Object] | Conditional (Present if identified) | Profile details of organizations/entities associated with the address. |
--entity_id | String | Always (within entities) | Unique identifier for the identified entity. |
--entity_name | Object | Always (within entities) | Multilingual names of the entity (includes en and zh). |
--country | Object | Always (within entities) | The country/region where the entity is registered or operates. |
--description | Object | Always (within entities) | Detailed background and financial metrics of the entity. |
--link | String | Always (within entities) | Primary official website URL of the entity. |
--other_link | String | Always (within entities) | Comma-separated external links (social media, community, etc.). |
-labels | Array[Object] | Always (Returns [] if none) | A collection of behavior-based tags and classifications for the address. |
--chain | String | Always (within labels) | Chain identifier for the label (e.g., evm, tron). |
--address | String | Always (within labels) | Address associated with the label. |
--category | String | Always (within labels) | High-level grouping (e.g., Cefi, Dapp, Infra). |
--sub_category | String | Always (within labels) | Granular classification providing context (e.g., CEX, DEX). |
--label | String | Always (within labels) | The specific descriptive name of the tag (e.g., USDT Frozen Address). |
Example Code - sync mode
Section titled “Example Code - sync mode”Request
curl -X GET "https://api.compliance.certik.com/v4/kya/screening_v2?chain=tron&address=TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR&rule_set_id=standard-mode-rule-set&mode=sync" \ -H "X-API-Key: YOUR_API_KEY" \ -H "X-API-Secret: YOUR_API_SECRET"Response
{ "code": 200, "message": "success", "data": { "chain": "tron", "address": "TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR", "rule_set_id": "standard-mode-rule-set", "status": "SUCCESS", "retry_count": 0, "created_at": "2026-07-17T01:16:03.753Z", "updated_at": "2026-07-17T01:16:09.199Z", "started_at": "2026-07-17T01:16:04.685Z", "finished_at": "2026-07-17T01:16:09.199Z", "api_key": "YOUR_API_KEY", "org_id": "YOUR_ORG", "result": { "risk_results": { "Blocked": [ { "origin": "Self", "sub_origin": "Label", "category": "Blocked", "level": "High", "trigger": { "rule_id": "rule-blocked", "trigger_id": "blocked-self-label-trigger" } } ], "Sanctioned": [ { "origin": "Self", "sub_origin": "Label", "category": "Sanctioned", "level": "High", "trigger": { "rule_id": "rule-sanctioned", "trigger_id": "sanctioned-self-label-trigger" } }, { "origin": "Direct Exposure", "sub_origin": "Label", "category": "Sanctioned", "level": "High", "trigger": { "rule_id": "rule-sanctioned", "trigger_id": "sanctioned-direct-label-trigger" }, "exposure": { "direction": "Inbound", "share": 0.23813767305266928, "amount_usd": 25700, "amount": 0, "tx_count": 1, "counterparty_address": "TAN6jFzDmmZVyE3GbL1B2qNfy4o3MX6U9D", "hop_count": 1, "path_count": 0, "paths_aggregated": false, "paths": [] } } ] }, "counterparties": { "TAN6jFzDmmZVyE3GbL1B2qNfy4o3MX6U9D": { "counterparty": "TAN6jFzDmmZVyE3GbL1B2qNfy4o3MX6U9D", "risk_factors": { "Sanctioned": [ { "origin": "Direct Exposure", "sub_origin": "Label", "category": "Sanctioned", "level": "High", "trigger": { "rule_id": "rule-sanctioned", "trigger_id": "sanctioned-direct-label-trigger" }, "exposure": { "direction": "Inbound", "share": 0.23813767305266928, "amount_usd": 25700, "amount": 0, "tx_count": 1, "counterparty_address": "TAN6jFzDmmZVyE3GbL1B2qNfy4o3MX6U9D", "hop_count": 1, "path_count": 0, "paths_aggregated": false, "paths": [] } } ] }, "transactions": [ { "chain": "tron", "hash": "14878e7f6f598df3717d3863a47c8f96ad3266e78c3adc13428ce08ac8822f72", "type": "ERC20", "block_number": 0, "timestamp": 1682582649, "from": "TAN6jFzDmmZVyE3GbL1B2qNfy4o3MX6U9D", "to": "TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR", "amount": "25700000000", "usd_value": 25700, "token_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "token_symbol": "USDT", "token_decimals": 6, "token_name": "Tether USD", "token_price": 1 } ] } }, "entities": [ { "entity_id": "okx", "entity_name": { "en": "OKX", "zh": "" }, "country": { "en": "Seychelles", "zh": "" }, "description": { "en": "OKX is a centralized cryptocurrency exchange established in 2017 and is registered in Seychelles. Currently, there are 295 coins and 674 trading pairs available on the exchange. OKX 24h volume is reported to be at $3,004,658,390.58, a change of 20.14% in the last 24 hours. OKX has $27,698,590,265.24 in Exchange Reserves. The most active trading pair is ETH/USDT with a 24h volume of $838,294,809.05.", "zh": "" }, "link": "https://www.okx.com/join/1902090", "other_link": "https://www.facebook.com/OKXofficial/,https://twitter.com/OKX,https://www.reddit.com/r/OKX/,https://t.me/OKXOfficial_English,https://www.youtube.com/@OKXExchange,https://www.linkedin.com/company/okxofficial/" }, { "entity_id": "mr_xingbiao_shen", "entity_name": { "en": "Mr Xingbiao Shen", "zh": "" }, "country": { "en": "cn", "zh": "" }, "description": { "en": "Person", "zh": "" }, "link": "", "other_link": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=45312,https://home.treasury.gov/news/press-releases/jy1779" } ], "labels": [ { "chain": "tron", "address": "TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR", "category": "Blocked", "sub_category": "Frozen", "label": "USDT Frozen Address" }, { "chain": "tron", "address": "TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR", "category": "Cefi", "sub_category": "CEX", "label": "OKX Deposit Wallet" }, { "chain": "tron", "address": "TEAqwfMhXLaomXhZ8KeMhx3njGmQEDnsUR", "category": "Sanction", "sub_category": "OFAC", "label": "" } ] } }}