AML API介绍
OKLink Onchain AML API 是一套围绕区块链网络及数字资产合规业务的产品,协助执法部门监控交易并确保符合反洗钱/反恐融资的监管要求。
我们的 Onchain AML 解决方案利用全球最大、最可信的地址标签数据库,将匿名的链上交易和地址映射到数万个实体。这些数据库由我们内部的链上业务和安全专家进行严谨的设计和开发,并结合全面的 OSINT 数据和 AI 引擎模型对标签拓展,很大的程度提高了我们标签的准确性。
Onchain AML的API
OKLink Onchain AML API 设计符合 Restful API规范。
- KYT API模块:全自动实时的数字货币资产交易监控系统,可以跟踪资金在 130 多个区块链和资产之间的流动情况,做出出交易风险等级评估,并且支持自定义的风险规则配置。
- KYA API模块:我们可提供全面的数字资产调查和实时监测数字货币钱包的服务,确保你的业务免受金融犯罪侵害,并帮助用户在 19 个主要的 L1/L2 区块链上开拓新业务。
- Webhook API模块:Webhook用于订阅KYT和KYA的风险警报推送,您可以添加一个Webhook URL接收AML服务的实时的警报和持续监控警报。
快速入门
入门指南
请联系您的客户经理获取API密钥以访问Onchain AML API。
API 鉴权与调用示例
API 密钥是访问 API 接口的唯一身份标识,所有 OpenAPI 接口都需要 API 密钥鉴权才可访问。
API 请求地址 URL:
- https://www.oklink.com/
API 密钥使用方法:
- 对于每个 API 请求,需要在 HTTP Request Headers 中添加 (“Ok-Access-Key”,填写您的 API 密钥)。
API 接口调用示例:
- 我们提供 cURL、Python、JavaScript - jQuery、Go、Java - OkHttp、PHP、Rust 不同语言的调用示例,帮助您快速上手。
cURL
curl -X GET 'https://www.oklink.com/api/v5/tracker/kyt/chain-list' \
--header 'Ok-Access-Key:你的APIkey' \
--header 'Content-type: application/json'
Python
import requests
url = "https://www.oklink.com/api/v5/tracker/kyt/transfers-info?txid=0x4e9939db7cabf8cad10206478638a58afc85cbf29dc76342570fefbccd1deaf1&network=ETH&outputAddress=0x75ff2d554afe3f9631bcbcd28d24cffc8dd27642&tokenContractAddress=0x7714f320adca62b149df2579361afec729c5fe6a"
payload = ""
headers = {
# apiKey
'Ok-Access-Key': 'apiKey'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
JavaScript - jQuery
var settings = {
"url": "https://www.oklink.com/api/v5/tracker/kyt/transfers-info?txid=0x4e9939db7cabf8cad10206478638a58afc85cbf29dc76342570fefbccd1deaf1&network=ETH&outputAddress=0x75ff2d554afe3f9631bcbcd28d24cffc8dd27642&tokenContractAddress=0x7714f320adca62b149df2579361afec729c5fe6a",
"method": "GET",
"timeout": 0,
"headers": {
"Accept": "*/*",
"Ok-Access-Key": "apiKey",
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Go
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://www.oklink.com/api/v5/tracker/kyt/transfers-info?txid=0x4e9939db7cabf8cad10206478638a58afc85cbf29dc76342570fefbccd1deaf1&network=ETH&outputAddress=0x75ff2d554afe3f9631bcbcd28d24cffc8dd27642&tokenContractAddress=0x7714f320adca62b149df2579361afec729c5fe6a"
method := "GET"
apiKey := "apiKey"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Ok-Access-Key", apiKey)
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Java - OkHttp
package com.oklink.demo;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class JavaDemo {
public static void main(String[] args) {
try {
String url = "https://www.oklink.com/api/v5/tracker/kyt/transfers-info?txid=0x4e9939db7cabf8cad10206478638a58afc85cbf29dc76342570fefbccd1deaf1&network=ETH&outputAddress=0x75ff2d554afe3f9631bcbcd28d24cffc8dd27642&tokenContractAddress=0x7714f320adca62b149df2579361afec729c5fe6a";
String apiKey = "apiKey";
OkHttpClient client = new OkHttpClient.Builder().build();
Request request = new Request.Builder()
.url(url)
.addHeader("Ok-Access-Key", apiKey)
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
}catch (IOException e){
e.printStackTrace();
}
}
}
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.oklink.com/api/v5/tracker/kyt/transfers-info?txid=0x4e9939db7cabf8cad10206478638a58afc85cbf29dc76342570fefbccd1deaf1&network=ETH&outputAddress=0x75ff2d554afe3f9631bcbcd28d24cffc8dd27642&tokenContractAddress=0x7714f320adca62b149df2579361afec729c5fe6a');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$headers = array();
$headers[] = 'Ok-Access-Key: apiKey';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
Rust
extern crate reqwest;
use reqwest::header;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut headers = header::HeaderMap::new();
headers.insert("Ok-Access-Key", "apiKey".parse().unwrap());
let res = reqwest::Client::new()
.get("https://www.oklink.com/api/v5/tracker/kyt/transfers-info?txid=0x4e9939db7cabf8cad10206478638a58afc85cbf29dc76342570fefbccd1deaf1&network=ETH&outputAddress=0x75ff2d554afe3f9631bcbcd28d24cffc8dd27642&tokenContractAddress=0x7714f320adca62b149df2579361afec729c5fe6a")
.headers(headers)
.send()?
.text()?;
println!("{}", res);
Ok(())
}
访问限制
我们对 API 调用实施了限流措施,以确保最佳处理速度和响应时间的同时保障 OKLink AML API 产品数据的安全性
支持与帮助
常见问题
1. KYT 和 KYA 之间有什么区别?
- KYT(Know Your Transaction)是一款数字货币交易监测产品。借助 OKLink 庞大的数据库,它将链上地址与线下活动建立关联, 监控充提款交易风险、识别恶意地址并生成警报,满足数字资产服务商 (VASP) 的合规与风控需求。
- KYA(Know Your Address)是一款对链上地址进行风险扫描、地址监控的风险检测工具,满足平台在合规和风控不同场景的需求。该服务不仅可以实时检测风险和全生命周期的风险变化,也可以帮助链上交易主体在交易之前做初步的风险筛查,使用户可以根据链上地址的风险进行防范。
2. KYT 和 KYA 支持多少个区块链网络?
3. OKLink Onchain AML 解决方案提供的标签类别有哪些?
- 标签类别包括制裁司法管辖区、制裁实体、恐怖融资、儿童虐待、混币器、跨链桥、网赌、黑客、盗窃、钓鱼、勒索、骗局、交易所、去中心化交易所、矿池、OTC、数字货币 ATM 等。
4. 如何确定 KYT 和 KYA 警报的风险级别?
- KYT 的风险等级由标签类型、关联类型、方向、风险资金占比、交易的阈值来确定。
- KYA 的自定义风险配置模式由风险配置的标签映射确定。
- KYA 的 OKLink 风险配置模式可以实现可疑交易、黑地址、黑地址关联方、高危身份、实体风险五个维度的风险扫描。其中黑地址风险是定性风险,当检测地址是黑地址则直接别判定为 0 分(极高风险)。其他几个风险维度则为定量风险,根据风险的基础分值和权重加权算取单维度风险分数,统计所有维度的风险分数之和从而算取整体的地址健康度分数。
5. 由于 API 和 SaaS 平台都提供,我该如何更有效地使用 OKLink Onchain AML 解决方案?
- 为了保证 AML 流程的及时行和完整性,建议你可通过 API 服务将 AML 集成到合规系统中。并按照相关的合规业务逻辑,自动采取相应风控措施
- SaaS 平台提供了全面可视化的数据展示和统计,助你全面地审查 AML 系统信息
错误码
客户端向服务器发出请求时,服务器会根据不通的业务场景返回不同的错误码,给出明确的错误提示。请参考下表了解 API 调用失败时返回的不同错误码和错误提示。
返回示例
json { "code": "50038", "msg": "This chain does not currently support.", "data": [] }
以下是我们使用的错误代码及其含义:
通用类
错误提示 | HTTP 状态码 | 错误码 |
---|---|---|
操作成功 | 200 | 0 |
body不能为空 | 400 | 50000 |
服务暂时不可用,请稍后重试 | 503 | 50001 |
非法的json数据 | 400 | 50002 |
无效的Content_Type,请使用"application/json"格式 | 400 | 50006 |
用户请求频率过快,超过该接口允许的限额 | 429 | 50011 |
当前系统繁忙,请稍后重试 | 200 | 50013 |
必填参数{0}不能为空 | 400 | 50014 |
系统错误 | 500 | 50026 |
您没有该API接口的访问权限,需要升级您的账户付费等级 | 403 | 50030 |
参数{%}错误 | 400 | 50036 |
代币不存在 | 200 | 50037 |
该公链不支持 | 200 | 50038 |
该警报ID没有历史处理记录 | 200 | 50039 |
此区块高度无数据展示。 | 200 | 50040 |
当前不支持此代币的历史余额查询 | 200 | 50041 |
该代币不支持风险扫描 | 200 | 50042 |
您的账户行为触发了风险控制,API功能已冻结。可以通过[email protected]与我们联系。 | 200 | 50043 |
数据不存在 | 400 | 50044 |
客户端操作错误 | 400 | 50045 |
鉴权类
错误提示 | HTTP 状态码 | 错误码 |
---|---|---|
Api 已被冻结,请联系客服处理 | 400 | 50100 |
请求头"OK_ACCESS_KEY"不能为空 | 401 | 50103 |
无效的OK_ACCESS_KEY | 401 | 50111 |
无效的请求类型 | 405 | 50115 |
超过了历史数据查询的范围 | 400 | 50117 |
业务类
错误提示 | HTTP 状态码 | 错误码 |
---|---|---|
{0}参数错误 | 400 | 51000 |
您填写的outputAddress地址在本次交易中没有找到。 | 200 | 51001 |
这个索引所指定的outputAddress在这个交易中不存在。 | 200 | 51002 |
该笔交易Hash在区块链上未解析到交易信息,无法确定该笔交易风险详情。 | 200 | 51003 |
您添加的WebhookURL无法访问,重新设置您的回调URL。 | 200 | 52000 |
Webhook Url不存在。 | 200 | 52001 |
Webhook Url已存在。 | 200 | 52002 |
联系我们
若您想要咨询与 OKLink 浏览器 API 相关问题,可以通过以下方式联系我们:
- 官方邮箱:[email protected]
- 电报 (Telegram):https://t.me/OKLinkAPI
交易风险检测(KYT)
KYT API说明
Onchain AML KYT API 是一款自动化的数字资产交易监测和合规解决方案。KYT API 提供实时的风险筛查,用于监测客户的存款和提款活动,并进行连续的风险监测和警报。
同时,它也是一种符合 OpenAPI 规范的 Restful API 服务,使你能:
- 监测存款和提款过程中的交易风险,识别恶意地址并生成风险警报
- 持续监测历史交易以获取最新的风险评估
- 构建符合合规需求的综合信息
- 支持庞大的数据库,拥有数十亿个地址标签
- 通过API获取用户界面更多的额外信息
KYT API支持的链
你可以通过已支持区块链列表进行查询。如你需要与之集成的区块链不在该列表中,请通过[email protected] 与我们联系。
KYT API业务流程
1、Onchain AML KYT API 提供以下3种场景的进行集成。
- 用户的资金充值检测
- 用户的提款检测
- 对用户交易监测持续监控
2、接收用户的存款
在接收用户资产前,可在系统中集成该服务,对用户存款进行实时的风险筛查。
调用交易风险检测 API 接口(GET/api/v5/tracker/kyt/transfers/transfers-alerts),获取该笔交易的风险等级。
- API 会在 100ms 内直接返回该笔交易的风险等级。
- 如果该笔交易产生风险,KYT 系统会依据自定义风险配置生成警报并提供警报ID,你可以对该警报的状态进行管理。
- API 会在 100ms 内直接返回该笔交易的风险等级。
根据相关合规条款对警报进行审查,调用警报管理接口(POST/api/v5/tracker/kyt/update-alert-status)更新警报状态,并添加修改状态的备注。
查看其他详细信息。
- 访问 GET/api/v5/tracker/kyt/transfers-info 接口,获取该笔交易的更多信息。
- 访问 GET/api/v5/tracker/kyt/transfers/exposures 接口,获取该笔交易的标签信息。
3、处理用户的提款
用户在提款前,系统可以使用 KYT API 筛查一下用户资金到账地址是否存在风险。如果客户资金到账地址存在风险,可在提款前采取措施,阻止客户与风险地址发生资金充提。
调用提款风险检测 API 接口(GET/api/v5/tracker/kyt/transfers/withdrawal-attempts-alerts),获取该地址的风险等级。
- API 会在 100ms 内直接返回该笔交易的风险等级。
- 如果该地址有风险,KYT 系统会依据自定义风险配置生成警报和提供警报 ID,你可以对该警报的状态进行管理。
- API 会在 100ms 内直接返回该笔交易的风险等级。
根据相关合规条款对警报进行审查,调用警报管理接口(POST/api/v5/tracker/kyt/update-alert-status)更新警报的状态,并添加修改状态的备注。<br
查看其他详细信息。
- 可访问 GET/api/v5/tracker/kyt/transfers/exposures 接口,获取该笔交易的标签信息。
4、持续监控
KYT 系统会自动监控 1 个月内的所有交易信息,已检测过的交易/地址一旦发生新的风险信息更新,将会根据自定义警报规则生成警报。
调用获取所有警报的 API 接口(GET/api/v5/tracker/kyt/alerts) ,同步获悉 KYT 系统中最新的警报。
- API 会在 100ms 内直接返回该笔交易的风险等级。
- 提供 produceAlertType 参数,如果是 initiative,则表示该警报是当前实时风险检测生成的。如果是continuous,则表示该警报是持续检测功能自动生成的警报。
- API 会在 100ms 内直接返回该笔交易的风险等级。
KYT API
公链列表
查询KYT检测服务所支持的公链列表。
HTTP请求
GET /api/v5/tracker/kyt/chain-list
请求示例
GET /api/v5/tracker/kyt/chain-list
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
category | String | 否 | 公链类别: 主流公链:mature 新链:emerging 默认为 mature |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"chainFullName": "Bitcoin",
"chainShortName": "BTC",
"symbol": "BTC",
"model": "utxo",
"category": "mature",
"chainId": "0",
"network": "BTC"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
chainFullName | String | 公链全称,例如:Bitcoin |
chainShortName | String | 发生此转账的公链网络,例如:btc |
symbol | String | 公链原生代币,例如:btc |
model | String | 公链模型 utxo 、account |
category | String | 公链类别: 主流公链: mature 预增长链: emerging |
chainId | String | 链ID |
network | String | 发生此转账的公链网络 ,例如:btc |
获取交易详情
通过交易Hash解析出交易详情信息,包含From和To地址及交易数量。
HTTP请求
GET /api/v5/tracker/kyt/transfers-info
请求示例
https://www.oklink.com/api/v5/tracker/kyt/transfers-info?userId=12&txid=0x1ccba96343bd1e6aad3668203d20b75e73022179b9d505721e00b66d21c91ae6&network=eth&outputAddress=0x043827a6dcfffb7fe21953d3bad32a1c74bb73bf
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 发生此转账的公链网络,例如:btc |
tokenContractAddress | String | 否 | 代币合约地址,如果是代币,该字段必需填写 |
txid | String | 是 | 交易Hash |
outputAddress | String | 是 | 该笔交易的输出地址(接收方地址) |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"userId": "TronTest",
"chainFullName": "TRON",
"network": "TRON",
"token": "TRX",
"tokenContractAddress": "",
"txid": "9eef7ca0168332654b4392b61f55c6208f39f5edd52cdbb9adf150529399e34d",
"outputAddress": "TWd4WrZ9wn84f5x1hZhL4DHvk738ns5jwb",
"inputAddresses": "TZAzpGxSLHoKDEo1PhS18hTvnLSU57w44G",
"usdAmount": "0",
"tokenAmount": "0.000001",
"transactionTime": "1683780423000"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
chainFullName | String | 发生此转账的公链网络,例如:Bitcoin |
network | String | 发生此转账的公链网络,例如:Bitcoin |
token | String | 发生此转账中使用的公链原生代币或者是代币,例如:BTC |
tokenContractAddress | String | 代币合约地址,没有的就返回"" |
txid | String | 交易Hash |
outputAddress | String | 该笔交易的输出地址(转账到账地址-to) |
inputAddresses | String | 该笔交易的输入地址(转账发起的地址-from) |
usdAmount | String | 发生此转账中代币折算成美元总金额。 代币数量*当前美元价格 |
tokenAmount | String | 该笔转账的数量 |
transactionTime | String | 该笔交易上链时间,Unix时间戳的毫秒数格式,如 '1597026383085' |
获取交易的地址标签
通过该接口获取该交易的From地址或to地址的标签信息,包括涉黑,受制裁、实体等标签,协助判断该笔交易的风险详情
HTTP请求
GET /api/v5/tracker/kyt/transfers/exposures
请求示例
https://www.oklink.com/api/v5/tracker/kyt/transfers/exposures?network=eth&userId=userId1&address=0x5a52E96BAcdaBb82fd05763E25335261B270Efcb&direction=sent
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 发生此转账的公链网络,例如:'btc' |
tokenContractAddress | String | 否 | 代币合约地址,如果是代币,该字段必需填写 |
txid | String | 二选一 | 交易Hash |
address | String | 二选一 | 需要查看标签信息的地址 |
direction | String | 否 | 对于KYT服务使用方角度的交易方向: sent:提币 ;received:充值;填写 txid时,该参数必填 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0x5a52e96bacdabb82fd05763e25335261b270efcb",
"entity": [
{
"category": "Exchange",
"value": "Binance"
}
],
"maliciousDirect": [],
"maliciousIndirect": [
{
"category": "Blocked",
"value": ""
},
{
"category": "Sanction",
"value": ""
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 地址 |
entity | Array | 实体标签 |
> category | String | 实体标签类别 |
> value | String | 实体标签名称 |
maliciousDirect | Array | 黑地址标签 |
> category | String | 黑地址标签类别 |
> value | String | 黑地址标签名称 |
maliciousIndirect | Array | 灰地址标签 |
> category | String | 灰地址标签类别 |
> value | String | 灰地址标签名称 |
获取交易风险
通过交易hash进行解析,查询该笔交易的alert,当该笔交易的地址触发您设置的风控条件和阈值时,将依照您的风险配置,给出风险等级。
HTTP请求
GET /api/v5/tracker/kyt/transfers/transfers-alerts
请求示例
https://www.oklink.com/api/v5/tracker/kyt/transfers/transfers-alerts?userId=63&network=eth&direction=received&address=0x7ff9cfad3877f21d41da833e2f775db0569ee3d9&tokenAmount=1
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
userId | String | 是 | 发生此转账的用户。 标识您的用户唯一的字符串,最长36位字符,格式;纯数字或纯字母(区分大小写)或字母加数字。该字段是该笔交易与关联用户的唯一标识,如果是已有的用户发生的转账,需要使用对应的用户id,如果是新的用户的转账,请填写新的用户id。 |
network | String | 是 | 发生此转账的公链网络,例如:Bitcoin ,KYT所支持的链。可通过 /api/v5/tracker/kyt/chain-list 接口查询 |
tokenContractAddress | String | 否 | 代币合约地址,如果是代币,该字段必需填写. 可通过 /api/v5/explorer/token/token-list 接口查询指定链的代币信息 |
txid | String | 是 | 交易Hash |
outputAddress | String | 是 | 该笔交易的输出地址(始终为资金到账地址) |
index | String | 否 | 该笔的输出地址在交易中的位置(始终为资金到账地址的index),仅适用于UTXO模型的公链 |
direction | String | 是 | 对于KYT服务使用方角度的交易方向:sent :转出 ;received :转入 ;对于转入,检测 from 地址,对于转出,检测to 地址 |
tag | String | 否 | 业务方对于该笔交易检测可以添加备注 |
tokenAmount | String | 否 | 填写address 时,必须填写转账数量,用于计算行为风险 |
tokenPrice | String | 否 | 如果该币我们可以从链上解析到该代币的价格,以我们解析到的代币价格为准,如果解析不到,以您填写的币价为准。单位是USD(美元),用于计算行为风险 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"tag": "test2",
"category": "Darknet",
"value": "",
"alertId": "f72b2ff2706d4ab5945587c7fba36487",
"alertAmount": "16.60490448518",
"alertLevel": "SEVERE",
"exposureType": "indirect",
"alertType": "deposit",
"address": "0xca30d700034461a007f51867a505bef7307869102b1b1509c7403adfc4675275"
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
tag | String | 业务方对于该笔交易检测的唯一标识别 |
category | String | 标签类别 |
value | String | 标签名称 |
alertId | String | 警报唯一标识 |
alertAmount | String | 导致触发警报的金额 |
alertLevel | String | 警报等级 极高风险: SEVERE 高风险: HIGH 中风险: MEDIUM 低风险: LOW 未检测出风险: NONE |
exposureType | String | 触发警报的类型 直接: direct 间接: indirect direct :表示该地址有风险;indirect :表示该地址和有风险的地址有关联 对于某地址没有标签信息或者只有实体标签的检测结果返回"" |
alertType | String | 警报类型 充值警报: deposit 提币警报: withdrawal 行为警报: behavioral |
address | String | 检测地址 |
提币风险预检测
通过该接口获取地址的风险等级,当您的客户从你的平台往外提币时,可以先将用户填写的提币地址,进行风险检测,如果有潜在风险警报,可以提前做出的风险措施。
HTTP请求
GET /api/v5/tracker/kyt/transfers/withdrawal-attempts-alerts
请求示例
https://www.oklink.com/api/v5/tracker/kyt/transfers/withdrawal-attempts-alerts?userId=63&network=eth&direction=received&address=0x7ff9cfad3877f21d41da833e2f775db0569ee3d9&tokenAmount=1
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
userId | String | 是 | 发生此转账的用户。 标识您的用户唯一的字符串,最长36位字符,格式;纯数字或纯字母(区分大小写)或字母加数字。该字段是该笔交易与关联用户的唯一标识,如果是已有的用户发生的转账,需要使用对应的用户id,如果是新的用户的转账,请填写新的用户id。 |
network | String | 是 | 发生此转账的公链网络,例如:Bitcoin ,KYT所支持的链。可通过 /api/v5/tracker/kyt/chain-list 接口查询 |
tokenContractAddress | String | 否 | 代币合约地址,如果是代币,该字段必需填写. 可通过 ` /api/v5/explorer/token/token-list 接口查询指定链的代币信息 |
address | String | 是 | 该笔交易的输出地址(始终为资金到账地址) |
direction | String | 是 | 对于KYT服务使用方角度的交易方向: sent :转出 ;received :转入 |
tag | String | 否 | 业务方对于该笔交易检测可以添加备注 |
tokenAmount | String | 是 | 填写address 时,必须填写转账数量,用于计算行为风险 |
tokenPrice | String | 是 | 如果该币我们可以从链上解析到该代币的价格,以我们解析到的代币价格为准,如果解析不到,以您填写的币价为准。单位是USD(美元),用于计算行为风险 |
time | String | 否 | 提币时间 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"tag": "test2",
"category": "Darknet",
"value": "",
"alertId": "f72b2ff2706d4ab5945587c7fba36487",
"alertAmount": "16.60490448518",
"alertLevel": "SEVERE",
"exposureType": "direct",
"alertType": "deposit",
"address": "0xca30d700034461a007f51867a505bef7307869102b1b1509c7403adfc4675275"
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
tag | String | 业务方对于该笔交易检测的唯一标识别 |
category | String | 标签类别 |
value | String | 标签名称 |
alertId | String | 警报唯一标识 |
alertAmount | String | 导致触发警报的金额 |
alertLevel | String | 警报等级 极高风险: SEVERE 高风险: HIGH 中风险: MEDIUM 低风险: LOW 未检测出风险: NONE |
exposureType | String | 触发警报的类型 直接: direct 间接: indirect direct :表示该地址有风险;indirect :表示该地址和有风险的地址有关联 对于某地址没有标签信息或者只有实体标签的检测结果返回"" |
alertType | String | 警报类型 充值警报: deposit 提币警报: withdrawal 行为警报: behavioral |
address | String | 检测地址 |
获取所有警报
使用该接口获取您KYT系统当中所有的警报信息,包括交易检测的警报和提币预检测警报和KYT系统持续性的行为警报。
HTTP请求
GET /api/v5/tracker/kyt/alerts
请求示例
https://www.oklink.com/api/v5/tracker/kyt/alerts?limit=2&alertLevel=HIGH
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
userId | String | 否 | 指定用户 |
token | String | 否 | 代币名称 |
tokenContractAddress | String | 否 | 代币合约 |
produceAlertType | String | 否 | 警报生成类型 主动检测风险警报:initiative 持续检测风险警报:continuous 不填写此参数默认返回所有类型 |
alertLevel | String | 否 | 警报等级 极高风险:SEVERE 高风险:HIGH 中风险:MEDIUM 低风险:LOW 未检测出风险:NONE |
alertType | String | 否 | 警报类型 充值警报:deposit 提币警报:withdrawal 行为警报:behavioral |
alertStatus | String | 否 | 警报的状态 未审核:unreviewed 审查中:in_review 已完成:completed 标记:flagged 废弃:dismissed |
limit | String | 否 | 每次请求返回的结果数量,默认为100,最大为100 |
page | String | 否 | 返回第几页的数据,页码 |
begin | String | 否 | 返回大于和等于特定日期的所有警报,Unix时间戳的毫秒数格式,如 1597026383085,必需和end参数同时使用 |
end | String | 否 | 返回小于和等于特定日期的所有警报,Unix时间戳的毫秒数格式,如 1597026383085, |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"page": "1",
"limit": "1",
"totalPage": "397",
"alertList": [
{
"alertUsdAmount": "0",
"txid": "0xf7e679b1f59312c46034384dd9e5e9f506a8f7a18f210626908caaef654a3ef4",
"exposureType": "indirect",
"alertStatus": "unreviewed",
"alertId": "61ac574e6ee34c7ca789d55b72e8bdbd",
"direction": "received",
"transactionTime": "1652646460000",
"alertLevel": "SEVERE",
"category": "Hack",
"value": "",
"updateTime": "1678696120133",
"userId": "98",
"alertCreatTime": "1678696120133",
"alertType": "deposit",
"produceAlertType": "initiative",
"address": "0x73b359d5da488eb2e97990619976f2f004e9ff7c",
"token": "eth"
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
page | String | 当前页码 |
limit | String | 当前页共多少条数据 |
totalPage | String | 总共多少页 |
alertList | Array | 警报列表 |
> alertUsdAmount | String | 导致触发警报的美元金额 |
> txid | String | 警交易Hash |
> exposureType | String | 触发警报的类型 间接:direct 直接:indirect indirect:表示该地址有风险 |
> alertStatus | String | 警报的状态 未审核:unreviewed 审查中:in_review 已完成:completed 标记:flagged 废弃:dismissed |
> alertId | String | 警报ID,kyt系统对每个警报生成的唯一ID |
> direction | String | KYT服务使用方角度的交易方向: sent:转出 ;received:转入 |
> transactionTime | String | 该笔交易在区块链上的交易时间 |
> alertLevel | String | 警报等级 极高风险:SEVERE 高风险:HIGH 中风险:MEDIUM 低风险:LOW 未检测出风险:NONE |
> category | String | 黑地址标签类别 |
> value | String | 黑地址标签名称 |
> updateTime | String | 该笔交易风险信息最近的一次更新时间 |
> userId | String | 该警报归属的用户ID |
> alertCreatTime | String | 警报生成时间 |
> alertType | String | 警报类型 充值警报:deposit 提币警报:withdrawal 行为警报:behavioral |
> produceAlertType | String | 警报生成类型 主动检测风险警报:initiative 持续检测风险警报:continuous |
> address | String | 该警报生成的对应的地址,用充值和提币警报 |
> token | String | 发生交易的币种 |
修改警报状态
您的合规官使用该接口可以及时处理警报,修改警报状态和添加相关备注,
HTTP请求
POST /api/v5/tracker/kyt/update-alert-status
请求示例
POST /api/v5/tracker/kyt/update-alert-status
Body
{
"alertId": "50ac803210c842bcbbe2e9d5deaf1acc",
"alertStatus": "flagged",
"comment": "pdsd"
}
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
alertId | String | 是 | 警报ID,kyt系统为每个警报生成的唯一ID |
alertStatus | String | 是 | 警报的状态 未审核:unreviewed 审查中:in_review 已完成:completed 标记:flagged 废弃:dismissed |
comment | String | 否 | 对该警报增加描述,长度限制为1000个字符 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"alertId": "50ac803210c842bcbbe2e9d5deaf1acc",
"alertStatus": "completed",
"comment": "this is bug",
"updateTime": "1678699149743"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
alertId | String | 警报ID,kyt系统为每个警报生成的唯一ID |
alertStatus | String | 警报的状态 未审核:unreviewed 审查中:in_review 已完成:completed 标记:flagged 废弃:dismissed |
comment | String | 对该警报增加描述,长度限制为1000个字符 |
updateTime | String | 更改警报状态时间 |
查询警报状态
通过该接口获取警报状态和评论
HTTP请求
GET /api/v5/tracker/kyt/alert-status
请求示例
https://www.oklink.com/api/v5/tracker/kyt/alert-status?alertId=4cb7279357064143af29b26d0cf19bea
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
alertId | String | 是 | 警报ID,kyt系统为每个警报生成的唯一ID |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"alertId": "50ac803210c842bcbbe2e9d5deaf1acc",
"alertStatus": "completed",
"comment": "this is bug",
"updateTime": "1678699149743"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
alertId | String | 警报ID,kyt系统为每个警报生成的唯一ID |
alertStatus | String | 警报的状态 未审核:unreviewed 审查中:in_review 已完成:completed 标记:flagged 废弃:dismissed |
comment | String | 对该警报增加描述,长度限制为1000个字符 |
updateTime | String | 更改警报状态时间 |
获取所有用户列表
使用该接口获取您KYT系统里所有用户列表和用户维度的风险模型打分情况
HTTP请求
GET /api/v5/tracker/kyt/users
请求示例
https://www.oklink.com/api/v5/tracker/kyt/users
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
limit | String | 否 | 每一页返回的用户数量,默认为100个,最大为100条用户信息。 |
page | String | 否 | 页码 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"page": "1",
"limit": "1",
"totalPage": "19",
"userList": [
{
"userId": "98",
"updateTime": "1678697034939",
"riskLevel": "SEVERE"
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
page | String | 当前页码 |
limit | String | 当前页共多少条数据 |
totalPage | String | 总共多少页 |
userList | Array | 用户列表 |
> userId | String | 用户ID |
> riskLevel | String | 用户维度的风险等级 严重风险:SEVER 高风险:HIGH 中风险:MEDIUM 低风险:LOW |
> updateTime | String | 更改警报状态时间 |
获取用户详情
使用该接口获取您指定的某一个User的详情信息。
HTTP请求
GET /api/v5/tracker/kyt/user
请求示例
GET /api/v5/tracker/kyt/user?userId=APTTest2
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
userId | String | 是 | 用户ID |
limit | String | 否 | 每一页返回的用户数量,默认为100个,最大为100条用户信息。 |
page | String | 否 | 页码 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"page": "1",
"limit": "100",
"totalPage": "1",
"userId": "APTTest2",
"updateTime": "1684327472684",
"riskLevel": "SEVERE",
"createTime": "1684210586588",
"sentUsdAmount": "0",
"receivedUsdAmount": "50.400687283012005",
"alertList": [
{
"alertId": "f72b2ff2706d4ab5945587c7fba36487",
"value": "",
"category": "Darknet"
},
{
"alertId": "e080161a2a5c4e08b978812f3177fb90",
"value": "",
"category": "Darknet"
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
page | String | 当前页码 |
limit | String | 当前页共多少条数据 |
totalPage | String | 总共多少页 |
userId | String | 用户 ID |
updateTime | String | 更新时间 |
riskLevel | String | 该UserId维度的风险等级 |
createTime | String | 该用户在kyt系统里添加时间,Unix时间戳的毫秒数格式,如 1597026383085 |
sentUsdAmount | String | 提币总金额,以美元为单位 |
receivedUsdAmount | String | 充值总金额,以美元为单位 |
alertList | Array | 用户的alert列表 |
> alertId | String | 警报ID |
> category | String | 标签类别 |
> value | String | 标签名称 |
地址风险检测(KYA)
KYA API说明
Onchain AML KYA API 是一款风险评估工具,可帮助执法机构快速评估链上钱包地址相关的风险。
在使用 KYA 之前,你需按照相关的合规要求进行自定义风险设置。具体的风险筛查配置、阈值和风险控制详情请联系你的合规团队进行确认。
KYA API支持的链
公链全称 | 公链缩写符号 | 公链 ID |
---|---|---|
Bitcoin | BTC | 0 |
Ethereum | ETH | 1 |
BNB Chain | BSC | 56 |
TRON | TRON | 195 |
Arbitrum One | ARBITRUM | 42161 |
Polygon | POLYGON | 137 |
OP Mainnet | OP | 10 |
Avalanche-C | AVAXC | 43114 |
Fantom | FTM | 250 |
DASH | DASH | 5 |
Ethereum Classic | ETC | 61 |
Litecoin | LTC | 2 |
EthereumPoW | ETHW | 10001 |
EthereumFair | ETHF | 513100 |
KLAYTN | KLAYTN | 8217 |
Dogecoin | DOGE | 3 |
Bitcoin Cash | BCH | 145 |
LINEA | LINEA | 59144 |
zkSync Era | ZKSYNC | 324 |
Gnosis | GNOSIS | 100 |
Polygon zkEVM | POLYGON_ZKEVM | 1101 |
Base | BASE | 8453 |
Scroll | SCROLL | 534352 |
KYA 自定义风险配置
您可以根据相关的合规要求进行自定义风险配置
- 使用获取地址风险等级 API GET/api/v5/tracker/kya/address-risk-screening 接口,获取地址风险等级。
- 当用户钱包地址应用程序交互或发生资金交互前,做风险预筛查。
- 使用添加地址监控 API PSOT/api/v5/tracker/kya/create-address-monitoring 接口,将关注的地址添加到监控当中,一旦发生风险等级的变更,将通过短信或邮箱发送通知。
OKLink KYA 风险检测模型
OKLink 风险检测模型采用机器学习和多模型算法,精准识别各类地址标签,实现可疑交易、黑地址、黑地址关联方、高危身份、实体风险五个维度对链上地址进行扫描.
- 你可以对任何的 EOA 地址进行风险检测,进行风险评估。
- 使用获取地址风险评分 API GET/api/v5/tracker/kya/address-risk-level 接口对 EOA 地址进行筛查。
- 根据风险评分,采取相应措施。
KYA API
获取公链列表
通过该接口获取地址健康度所支持的公链列表。
HTTP请求
GET /api/v5/tracker/kya/chain-list
请求示例
GET /api/v5/tracker/kya/chain-list
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"chainId": "1",
"chainFullName": "Ethereum",
"chainShortName": "ETH",
"network": "ETH"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
chainFullName | String | 公链全称,例如:Ethereum |
chainShortName | String | 公链网络,例如:ETH |
chainId | String | 公链 ID |
network | String | 公链网络,例如:ETH |
获取地址风险分
通过可疑交易、黑地址、黑地址关联方、高危身份、实体风险五个维度对链上非合约地址进行实时的API风险的全方位扫描,提供地址本身的风险评估得分,用户可以根据链上地址的风险特征采取针对性的行动。
HTTP请求
GET /api/v5/tracker/kya/address-risk-level
请求示例
GET /api/v5/tracker/kya/address-risk-level?network=ETH&address=0xde3fa44e0f532fb1de4fbe157ff3b031b7df67e0
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 公链符号,例如 ETH |
address | String | 是 | 需要检测的EOA地址 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0xde3fa44e0f532fb1de4fbe157ff3b031b7df67e0",
"level": "LOW",
"riskScore": "80",
"associatBlackAddresses": "1",
"interactionTime": "1",
"amount": "6.9883895758257",
"maliciousAddressrelatedpartiesList": [
{
"associatedWithDarknet": false,
"associatedWithFakeIco": false,
"associatedWithGambling": false,
"associatedWithHack": false,
"associatedWithLaundering": false,
"associatedWithPhishing": false,
"associatedWithPonzi": false,
"associatedWithScam": false,
"associatedWithThief": false,
"associatedWithRansomware": false,
"associatedWithSanction": false,
"associatedWithBlocked": true,
"associatedWithTerroristFinancing": false,
"associatedWithHighRiskJurisdiction": false
}
],
"suspiciousTransactionList": [
{
"newAddressNotEnabled": false,
"multipleTransaction": false,
"largeTransaction": false,
"frequentTransaction": false,
"ultraHighValueTransaction": false,
"frequentTransferIn": false,
"decentralizedTransferOut": false,
"privacyToken": false,
"frequentTransfers": false,
"highConcentration": false,
"transitAddress": false,
"excessiveTransactionTarget": false,
"frequentTransferOut": false,
"centralizedTransferOut": false,
"inactiveAddress": false
}
],
"maliciousAddressList": [
{
"darknet": false,
"fakeIco": false,
"gambling": false,
"hack": false,
"moneyLaundering": false,
"phishing": false,
"ponzi": false,
"scam": false,
"thief": false,
"ransomware": false,
"sanction": false,
"blocked": false,
"terroristFinancing": false,
"highRiskJurisdiction": false
}
],
"entityRiskList": [
{
"highRiskExchange": false,
"mediumRiskExchange": false,
"lowRiskExchange": false
}
],
"identityRisk": [
{
"sybil": false,
"mixerUser": false,
"flashLoanAttack": false
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
level | String | 风险等级;风险极大:SEVERE ;高:HIGH ;中:MEDIUM ;低:LOW ;无风险:NONE |
riskScore | String | 风险分数、百分之制,分数越高越安全 |
maliciousAddressrelatedpartiesList | Array | 黑地址关联风险列表 |
> associatedWithDarknet | Bol | 是否是暗网地址关联方 是:true 否:false |
>associatedWithFakeIco | Bol | 是否是虚假融资关联方 是:true 否:false |
>associatedWithGambling | Bol | 是否是网赌关联方 是:true 否:false |
>associatedWithHack | Bol | 是否是黑客关联方 是:true 否:false |
>associatedWithLaundering | Bol | 是否是洗钱关联方 是:true 否:false |
>associatedWithPhishing | Bol | 是否是网络钓鱼关联方 是:true 否:false |
>associatedWithPonzi | Bol | 是否是庞氏骗局关联方 是:true 否:false |
>associatedWithScam | Bol | 是否是诈骗关联方 是:true 否:false |
>associatedWithThief | Bol | 是否是盗窃关联方 是:true 否:false |
>associatedWithRansomware | Bol | 是否是勒索关联方 是:true 否:false |
>associatedWithSanction | Bol | 是否是制裁关联方 是:true 否:false |
>associatedWithBlocked | Bol | 是否是冻结关联方 是:true 否:false |
>associatedWithTerroristFinancing | Bol | 是否是恐怖融资关联方 是:true 否:false |
>associatedWithHighRiskJurisdiction | Bol | 是否是高风险管辖区的地址 是:true 否:false |
associatBlackAddresses | String | 关联黑地址的个数 |
interactionTime | String | 与黑地址交互次数 |
amount | String | 交易总金额。以USDT为单位 |
suspiciousTransactionList | Array | 可疑交易列表风险列表 |
> largeTransaction | Bol | 是否大额交易比例较高 是:true 否:false |
> ultraHighValueTransaction | Bol | 是否存在超高额交易 是:true 否:false |
> frequentTransferIn | Bol | 是否频繁转入 是:true 否:false |
> frequentTransferOut | Bol | 是否频繁转出 是:true 否:false |
> frequentTransaction | Bol | 存在高频交易行为 是:true 否:false |
> highConcentration | Bol | 交易的集中程度高 是:true 否:false |
> centralizedTransferOut | Bol | 分散转入 集中转出 是:true 否:false |
> decentralizedTransferOut | Bol | 集中转入 分散转出 是:true 否:false |
> multipleTransaction | Bol | 同一交易对手短期内多笔交易 是:true 否:false |
> transitAddress | Bol | 中转地址 是:true 否:false |
> inactiveAddress | Bol | 沉寂地址 是:true 否:false |
> newAddressNotEnabled | Bol | 新地址未启用 是:true 否:false |
> frequentTransfers | Bol | 频繁转入 罕有转出 是:true 否:false |
> excessiveTransactionTarget | Bol | 交易标的数量多 是:true 否:false |
> privacyToken | Bol | 交易标的含有隐私代币 是:true 否:false |
maliciousAddressList | Array | 黑地址风险列表 |
> darknet | Bol | 暗网 是:true 否:false |
> fakeIco | Bol | 虚假融资 是:true 否:false |
> gambling | Bol | 网赌 是:true 否:false |
> hack | Bol | 黑客 是:true 否:false |
> moneyLaundering | Bol | 洗钱 是:true 否:false |
> phishing | Bol | 网络钓鱼 是:true 否:false |
> ponzi | Bol | 庞氏骗局 是:true 否:false |
> scam | Bol | 诈骗 是:true 否:false |
> thief | Bol | 盗窃 是:true 否:false |
> ransomware | Bol | 勒索 是:true 否:false |
> sanction | Bol | 制裁 是:true 否:false |
> blocked | Bol | 冻结 是:true 否:false |
> terroristFinancing | Bol | 恐怖融资 是:true 否:false |
> highRiskJurisdiction | Bol | 高风险管辖区 是:true 否:false |
entityRiskList | Array | 实体风险列表 |
> highRiskExchange | Bol | 高风险交易所 是:true 否:false |
> mediumRiskExchange | Bol | 中风险交易所 是:true 否:false |
> lowRiskExchange | Bol | 低风险交易所 是:true 否:false |
identityRiskList | Array | 高危风险列表 是:true 否:false |
> sybil | Bol | 女巫地址 是:true 否:false |
> mixerUser | Bol | 混币器使用者 是:true 否:false |
> flashLoanAttack | Bol | 闪电贷攻击关联方 是:true 否:false |
获取地址风险等级
根据自定义风险规则生成地址风险评估结果,实时返回地址风险等级。
HTTP请求
GET /api/v5/tracker/kya/address-risk-screening
请求示例
GET /api/v5/tracker/kya/address-risk-screening?network=BSC&address=0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec'
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 公链符号,例如 ETH |
address | String | 是 | 需要检测的EOA地址 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec",
"level": "HIGH",
"associateBlackAddresses": "0",
"interactionTime": "0",
"amount": "0",
"maliciousAddressList": [
{
"category": "Hack",
"value": "BNB Token Hub"
}
],
"maliciousAddressRelatedPartiesList": []
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
level | String | 风险等级;风险极大:SEVERE ;高:HIGH ;中:MEDIUM ;低:LOW ;无风险:NONE |
associateBlackAddresses | String | 关联黑地址的个数 |
interactionTime | String | 与黑地址交互次数 |
amount | String | 交易总金额。以USDT为单位 |
maliciousAddressList | Array | 黑地址风险列表 |
>category | String | 命中的黑地址标 暗网: darknet 网赌: gambling 黑客: hack 钓鱼: phishing 诈骗: scam 盗窃: thief 勒索: ransomware 制裁: sanction 冻结: blocked 恐怖融资: terrorist_financing 高风险管辖区: high_risk_jurisdiction 儿童侵害: child_exploitation 混币器: crypto_mixer 跨链桥: blockchain_bridge 托管钱包: custodial_wallet 交易所: exchange ATM: atm DEX: dex 矿池: mining_pool OTC: otc 商户服务: merchant_solutions |
>value | String | 标签名称 |
maliciousAddressRelatedPartiesList | Array | 黑地址关联风险列表 |
>category | String | 命中的黑地址标 暗网: darknet 网赌: gambling 黑客: hack 盗窃: thief 钓鱼: phishing 勒索: ransomware 诈骗: scam 冻结: blocked 制裁: sanction 恐怖融资: terrorist_financing 高风险管辖区: high_risk_jurisdiction 儿童侵害: child_exploitation 混币: crypto_mixer_user 跨链桥: blockchain_bridge |
添加地址监控
该接口可为您关注的地址添加地址时时监控。
HTTP请求
POST /api/v5/tracker/kya/create-address-monitoring
请求示例
POST /api/v5/tracker/kya/create-address-monitoring
{
"duration":"30D",
"trigger":"BLACK_TYPE",
"note":"binance",
"phone":"18888",
"network":"BSC",
"address":"0x8894E0a0c962CB723c1976a4421c95949bE2D4E3"
}
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 公链缩写符号,例如:BTC 、ETH |
address | String | 是 | 地址 |
note | String | 否 | 备注 |
trigger | String | 否 | 监控条件,默认RISK_LEVEL 地址风险等级变化: RISK_LEVEL 黑地址类型变化: BLACK_TYPE |
duration | String | 否 | 有效期,默认perpetual 永久: perpetual 90天: 90D 60天: 60D 30天: 30D |
phone | String | 二选一 | 接收地址监控信息更新的短信的手机号,与邮箱必须填写一个 |
String | 二选一 | 接收地址监控信息更新的邮箱 ,与手机号必须填写一个 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0x098b716b8aaf21512996dc57eb0615e2383e2f96",
"network": "BCH",
"monitorId": "2094b78d8391495fa3b65cfc4fb10f55"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
network | String | 公链缩写符号,例如:BTC 、ETH |
monitorId | String | 监控ID |
撤销地址监控
该接口可以取消您已经添加的监控地址。
HTTP请求
POST /api/v5/tracker/kya/cancel-address-monitoring
请求示例
POST /api/v5/tracker/kya/cancel-address-monitoring
{
"monitorId":"2094b78d8391495fa3b65cfc4fb10f55"
}
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
monitorId | String | 是 | 监控ID |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "",
"network": "",
"monitorId": "2094b78d8391495fa3b65cfc4fb10f55"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | network | 检测地址 |
network | network | 公链缩写符号,例如:BTC、ETH |
monitorId | String | 监控ID |
查看地址监控列表
该接口可查看您已添加地址监控列表。
HTTP请求
GET /api/v5/tracker/kya/address-monitoring-list
请求示例
GET /api/v5/tracker/kya/address-monitoring-list
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
monitorId | String | 否 | 监控ID |
trigger | String | 否 | 监控条件,默认RISK_LEVEL 地址风险等级变化: RISK_LEVEL 黑地址类型变化: BLACK_TYPE |
limit | String | 否 | 每一页返回的用户数量,默认为100 个,最大为100 条用户信息。 |
page | String | 否 | 页码 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"page": "0",
"limit": "1",
"totalPage": "13",
"monitoringList": [
{
"network": "BCH",
"address": "0x098b716b8aaf21512996dc57eb0615e2383e2f96",
"trigger": "BLACK_TYPE",
"email": "",
"phone": "188889",
"createdTime": "1705566280254",
"updateTime": "0",
"note": "binance",
"monitorId": "c6bebf16ec824e6fa558ef64292f8925"
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
page | String | 当前页码 |
limit | String | 当前页共多少条数据 |
totalPage | String | 总共多少页 |
monitoringList | Array | 地址监控列表 |
> network | String | 公链符号,例如 ETH |
> address | String | 风险监控的地址 |
> trigger | String | 触发风险变更的监控条件 地址风险等级变化: RISK_LEVEL 黑地址类型变化: BLACK_TYPE |
String | 接收该地址风险变更信息的邮箱 | |
> phone | String | 接收该地址风险变更信息的手机号 |
> createdTime | String | 该地址监控创建时间 |
> updateTime | String | 该地址风险更新时间 |
> note | String | 备注 |
> monitorId | String | 监控ID |
查看地址监控详情
该接口可查看您已添加地址监控列表。
HTTP请求
GET /api/v5/tracker/kya/address-monitoring-detail
请求示例
GET /api/v5/tracker/kya/address-monitoring-detail?monitorId=a66d0f48727149d6ba5873e5721b3330'
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
monitorId | String | 是 | 监控ID |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"network": "ETH",
"address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
"level": "SEVERE",
"totalTransactionVolume": "9752202.670120968",
"createTime": "1694063288625",
"trigger": "RISK_LEVEL",
"email": "",
"phone": "733333",
"note": "",
"associateBlackAddresses": "2",
"duration": "perpetual",
"monitorId": "a66d0f48727149d6ba5873e5721b3330",
"records": [
{
"updateTime": "1705327841804",
"level": "HIGH",
"category": "hack",
"isRelated": true
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
network | String | 公链缩写符号,例如:BTC 、ETH |
level | String | 地址当前的风险等级; 风险极大: SEVERE 高: HIGH 中: MEDIUM 低: LOW 无风险: NONE |
totalTransactionVolume | String | 总转账金额 |
createTime | String | 地址监控创建时间 |
trigger | String | 触发风险变更的监控条件 地址风险等级变化: RISK_LEVEL 黑地址类型变化: BLACK_TYPE |
String | 接收该地址风险变更信息的邮箱 | |
phone | String | 接收该地址风险变更信息的手机号 |
note | String | 备注 |
associateBlackAddresses | String | 关联的黑地址个数 |
duration | String | 有效期 永久: perpetual 90天: 90D 60天: 60D 30天: 30D |
monitorId | String | 监控ID |
records | Array | 地址监控列表 |
> level | String | 变化的风险等级; 风险极大: SEVERE 高: HIGH 中: MEDIUM 低: LOW 无风险: NONE |
> isRelated | Bol | 是否是黑地址关联方 是:true 是:flase |
> updateTime | String | 该地址风险更新时间 |
> category | String | 命中的黑地址标 暗网: darknet 网赌: gambling 黑客: hack 钓鱼: phishing 诈骗: scam 盗窃: thief 勒索: ransomware 制裁: sanction 冻结: blocked 恐怖融资: terrorist_financing 高风险管辖区: high_risk_jurisdiction 儿童侵害: child_exploitation 混币器: crypto_mixer 跨链桥: blockchain_bridge 托管钱包: custodial_wallet ATM: atm DEX: dex 矿池: mining_pool 交易所: exchange OTC: otc 商户服务: merchant_solutions |
获取实体标签
通过该接口获取地址的实体标签。
HTTP请求
GET /api/v5/tracker/tag/entity-tag
请求示例
GET /api/v5/tracker/tag/entity-tag?network=eth&address=0xF977814e90dA44bFA03b6295A0616a897441aceC
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 公链缩写符号,例如:BTC 、ETH |
address | String | 是 | 地址 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0xf977814e90da44bfa03b6295a0616a897441acec",
"entityTagList": [
{
"category": "Exchange",
"value": "Binance",
"attribute": "Cold Wallet"
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
entityTagList | Array | 实体标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
获取实体和黑标签
通过该接口获取地址的实体标签和黑标签。
HTTP请求
GET /api/v5/tracker/tag/entity-black-tag
请求示例
GET /api/v5/tracker/tag/entity-black-tag?network=eth&address=0xcf5e4066bab04ac196816aa04ee94143b79e14d2
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 公链缩写符号,例如:BTC 、ETH |
address | String | 是 | 地址 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0xcf5e4066bab04ac196816aa04ee94143b79e14d2",
"entityTagList": [
{
"category": "Exchange",
"value": "Coinbase",
"attribute": "Exchange User"
}
],
"blackTagList": []
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
entityTagList | Array | 实体标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
blackTagList | Array | 黑标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
获取所有标签
通过该接口获取地址上的所有标签信息。
HTTP请求
GET /api/v5/tracker/tag/tag-all
请求示例
GET /api/v5/tracker/tag/tag-all?network=eth&address=0xcf5e4066bab04ac196816aa04ee94143b79e14d2
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
network | String | 是 | 公链缩写符号,例如:BTC 、ETH |
address | String | 是 | 地址 |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"address": "0xcf5e4066bab04ac196816aa04ee94143b79e14d2",
"entityTagList": [
{
"category": "Exchange",
"value": "Coinbase",
"attribute": "Exchange User"
}
],
"blackTagList": [],
"identityTagList": [],
"projectTagList": [],
"attributeTagList": [
{
"category": "",
"value": "",
"attribute": "Eth2-depositor,beacon-depositor"
}
]
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 检测地址 |
entityTagList | Array | 实体标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
blackTagList | Array | 黑标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
identityTagList | Array | 身份标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
projectTagList | Array | 项目标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
transactionBehaviorTagList | Array | 交易行为标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
attributeTagList | Array | 属性标签列表 |
> category | Bol | 标签类别 |
> value | String | 标签 |
> attribute | String | 归属 |
Webhook
Webhook用于订阅KYT和KYA的风险警报推送,您可以创建一个Webhook来接收AML服务里的实时的警报和持续监控警报的通知,当新的警报产生时,以最快的方式主动推送到您的应用程序当中,让您的合规系统可以在第一时间对警报进行响应。
Webhook类型
类型 | 描述 | 链 |
---|---|---|
kyt_alert | 当用户进行以下行为,推送新生产的警报信息 交易风险检测 提币预检测 持续检测 |
全部 |
kya_alert | 当用户进行以下行为时,推送地址新产生的警报信息 添加地址监控,持续检测 |
全部 |
如何添加Webhook URL
使用API设置webhook URL:POST /api/v5/tracker/webhook/create-webhook
使用Ngrok测试webhook
您可以根据该流程测试Webhook监控任务是否可以接收到警报的推送数据。
- 使用Ngrok来测试webhook
- 注册一个免费的Ngrok账户
- 使用Ngrok引导来安装Ngrok. macOS 运行 'brew install ngrok'
- 连接您的 Ngrok 帐户 :'ngrok authtoken YOUR_AUTH_TOKEN'
- 启动您的本地频道:获取webhook url (Forwarding)
Python Code Demo
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.get_json()
print(data)
return 'suucess'
if __name__ == '__main__':
app.run(port=8001, debug=True)
获取到webhook url后可参照以下步骤进行调试
- 创建webhook监控任务(将获取到的url填入)
- 创建webhook消息推送监听
- 创建webhook监控任务(将获取到的url填入)
创建webhook消息推送监控可参照右侧代码
Webhook 重试逻辑
用于 webhook 的内置重试逻辑。如果无法到达客户端的服务器,将会重试非 200 响应代码的请求。
请求在失败前最多重试 3 次。以下是请求重试间隔。
- 10秒
- 30秒
- 1分钟
Webhook 订阅限制
当AML账户权益到期后,回调URL的任务停止,移除监控任务。
KYT和KYA分别只允许添加一个回调URL,添加多个会覆盖前一个。
添加回调URL时,进行KYT或者KYA权限验证。
Webhook API
创建Webhook
通过该接口您可以添加用于接收KYT和KYA警报推送信息的WebhookURL。
HTTP请求
POST /api/v5/tracker/webhook/create-webhook
请求示例
POST https://www.oklink.com/api/v5/tracker/webhook/create-webhook
Body
{
"webhookUrl": "https://e211-222-249-184-61.ngrok-free.app/webhook",
"webhookType": "kyt_alert"
}
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
webhookUrl | String | 是 | 添加用于回调数据的 URL |
webhookType | String | 是 | KYT系统中的Alert警报监控:kyt_alert KYA系统中的地址警报监控:kya_alert |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"webhookId": "a47f4e48-3a27-4b4f-a6b2-058b61c48d02",
"createTime": "1703675552444",
"webhookUrl": "https://e211-222-249-184-61.ngrok-free.app/webhook",
"webhookType": "kyt_alert"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
webhookId | String | Webhook 订阅类型唯一ID |
createTime | String | 创建Webhook 的时间,Unix时间戳的毫秒数格式,如 1597026383085 |
webhookType | String | KYT系统中的Alert警报监控:kyt_alert KYA系统中的地址警报监控:kya_alert |
webhookUrl | String | Webhook的URL端点 |
删除Webhook
通过该接口您可以删除用于接收KYT和KYA警报推送信息的Webhook URL。
HTTP请求
POST /api/v5/tracker/webhook/delete-webhook
请求示例
POST https://www.oklink.com/api/v5/tracker/webhook/delete-webhook
Body
{
"webhookUrl": "https://e211-222-249-184-61.ngrok-free.app/webhook",
"webhookType": "kyt_alert"
}
请求参数
参数名 | 类型 | 是否必须 | 描述 |
---|---|---|---|
webhookUrl | String | 是 | 添加用于回调数据的 URL |
webhookType | String | 是 | KYT系统中的Alert警报监控:kyt_alert KYA系统中的地址警报监控:kya_alert |
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"webhookId": "67563d0c-4a73-4e05-ba11-53c7a7c6c659",
"webhookUrl": "https://e211-222-249-184-61.ngrok-free.app/webhook"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
webhookId | String | Webhook 订阅类型唯一ID |
webhookUrl | String | Webhook的URL端点 |
查询已添加的Webhook
通过该接口您可以查询用于接收KYT和KYA警报推送信息的WebhookURL。
HTTP请求
GET /api/v5/tracker/webhook/get-webhooks
请求示例
GET https://www.oklink.com/api/v5/tracker/webhook/get-webhooks
返回结果
{
"code": "0",
"msg": "",
"data": [
{
"webhookId": "dcfe640e-9c14-4886-bce0-7e826458766a",
"createTime": "1703646841620",
"webhookUrl": "https://e211-222-249-184-61.ngrok-free.app/webhook",
"webhookType": "kya_alert"
},
{
"webhookId": "a47f4e48-3a27-4b4f-a6b2-058b61c48d02",
"createTime": "1703675552444",
"webhookUrl": "https://e211-222-249-184-61.ngrok-free.app/webhook",
"webhookType": "kyt_alert"
}
]
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
webhookId | String | Webhook 订阅类型唯一ID |
createTime | String | 创建Webhook 的时间,Unix时间戳的毫秒数格式,如 1597026383085 |
webhookType | String | KYT系统中的Alert警报监控:kyt_alert KYA系统中的地址警报监控:kya_alert |
webhookUrl | String | Webhook的URL端点 |
KYA Webhook响应
介绍
当您监控KYA的持续监控警报时,您会收到来自OKlink Webhook的响应。
返回结果
{
"eventId":"257ea99d-63b8-4284-a8ac-08ddcdc0dd90",
"webhookId":"dcfe640e-9c14-4886-bce0-7e826458766a",
"createTime":"1703732768125",
"event":[
{
"duration":"perpetual",
"note":"",
"monitorId":"d4a0fd55a20649f4801c7e0d6e17aa4e",
"address":"0x59abf3837fa962d6853b4cc0a19513aa031fd32b",
"level":"SEVERE",
"createTime":"1694154974699",
"records":[
{
"isRelated":false,
"level":"SEVERE",
"updateTime":"1703732767771",
"category":"exchange"
}
],
"trigger":"RISK_LEVEL",
"network":"BSC"
}
],
"webhookType":"kya_alert"
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
webhookId | String | Webhook 订阅类型唯一ID |
eventId | String | Webhook 推送事件唯一ID |
createTime | String | 警报推送时间 |
webhookType | String | KYA系统中的地址警报监控:kya_alert |
event | Array | 警报信息 |
> monitorId | String | 监控ID |
> address | String | 监控的地址 |
> network | String | 公链缩写符号,例如:BTC、ETH |
> level | String | 地址当前的风险等级; 风险极大: SEVERE 高: HIGH 中: MEDIUM 低: LOW 无风险: NONE |
> createTime | String | 地址监控创建时间 |
> trigger | String | 触发风险变更的监控条件 地址风险等级变化: RISK_LEVEL 黑地址类型变化: BLACK_TYPE |
> note | String | 备注 |
> duration | String | 有效期 永久: perpetual 90天: 90D 60天: 60D 30天: 30D |
> records | Array | 风险监控列表 |
>> isRelated | Bol | 是否是黑地址关联方 是:true 否:flase |
>> level | String | 变化的风险等级 风险极大: SEVERE 高: HIGH 中: MEDIUM 低: LOW 无风险: NONE |
>> updateTime | String | 该地址风险更新时间 |
>> category | String | 命中的黑地址标 暗网: darknet 网赌: gambling 黑客: hack 钓鱼: phishing 诈骗: scam 盗窃: thief 勒索: ransomware 制裁: sanction 冻结: blocked 恐怖融资: terrorist_financing 高风险管辖区: high_risk_jurisdiction 儿童侵害: child_exploitation 混币器: crypto_mixer 跨链桥: blockchain_bridge 托管钱包: custodial_wallet ATM: atm DEX: dex 矿池: mining_pool OTC: otc 商户服务: merchant_solutions |
KYT Webhook响应
介绍
当您监控KYT的实时警报和持续监控警报时,您会收到来自OKlink Webhook的响应。
- 实时警报:当您通过RestAPI发起一笔检测时,如果产生警报,Webhook立刻将生成的警报信息通过您添加的Webhook推送到您的应用程序。
- 持续监控警报:当您历史检测过的交易,1个月内再次产生警报时,Webhook立刻将生成的警报信息通过您添加的Webhook推送到您的应用程序。
返回结果
{
"eventId":"7d6969ad-4045-45f0-8d77-a6350d02ba81",
"webhookId":"67563d0c-4a73-4e05-ba11-53c7a7c6c659",
"createTime":"1703650621242",
"event":[
{
"alertType":"withdrawal",
"address":"0xebfe7a29ea17acb5f6f437e659bd2d472deedc54",
"exposureType":"direct",
"alertLevel":"SEVERE",
"tag":"",
"alertId":"224edc7ec42943f19fbc8380c709218e",
"category":"terrorist financing",
"value":"MOHAMMED RAMADAN HASAN ABUKWAIK",
"alertAmount":"4437.64"
}
],
"webhookType":"kyt_alert"
}
返回参数
参数名 | 类型 | 描述 |
---|---|---|
webhookId | String | Webhook 订阅类型唯一ID |
eventId | String | Webhook 推送事件唯一ID |
createTime | String | 警报推送时间 |
webhookType | String | KYT系统中的Alert警报监控:kyt_alert |
event | Array | 警报信息 |
> tag | Array | 业务方对于该笔交易检测的唯一标识别 |
> category | Array | 标签类别 |
> value | Array | 标签名称 |
> alertId | Array | 警报唯一标识 |
> alertAmount | Array | 导致触发警报的金额 |
> alertLevel | Array | 警报等级 极高风险:SEVERE 高风险:HIGH 中风险:MEDIUM 低风险:LOW 未检测出风险:NONE |
> exposureType | Array | 触发警报的类型 间接:direct 直接:indirect indirect:表示该地址有风险;direct:表示该地址和有风险的地址有关联 对于某地址没有标签信息或者只有实体标签的检测结果返回"" |
> alertType | Array | 警报类型 充值警报:deposit 提币警报:withdrawal 行为警报:behavioral |
> address | Array | 生产警报的地址 |