Skip to content
Translated page. The English version is the source of truth.

POST /apiv2/aml

已被 POST /apiv2/screening 取代

POST /apiv2/screening 是版本 2 契约:针对每个提供商和订单的每种状态提供统一的响应结构、 将小数表示为字符串而非 JSON 数字、统一比例的份额分配,以及 单一的错误格式。此端点仍然保持运行,未经通知不会下线。

提交地址以进行 AML(反洗钱)筛查。返回风险评分、风险等级以及详细的敞口分析。

响应中的所有时间戳均为 UTC。 字符串格式保持不变 — "2026-09-09 23:01:44",不带时区后缀。

端点 URL

POST https://netts.io/apiv2/aml

请求头

请求头必填描述
Content-Typeapplication/json
X-API-KEY来自 Netts 控制面板的 API 密钥

请求体

json
{
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic",
    "wait": true
}

请求参数

参数类型必填描述
addressstring待检查的区块链地址(10-100 个字符)
networkstring区块链网络标识符(请参见下方的支持的网络
providerstringAML 提供商:elliptic(默认)
waitboolean若为 true,则同步等待结果(最多 15 秒)。若为 false 或省略,则立即返回 pending 状态和 client_order_id — 用于通过 GET /apiv2/aml/{order_id} 轮询结果
response_formatstring响应详细程度级别:rate(仅评分),full(默认,完整数据)
report_languagestring报告语言:en(默认)

提供商

提供商评分范围描述
elliptic0 — 10Elliptic 风险评分。0 = 无风险,10 = 最高风险。null = 未检测到触发项

请求示例

cURL(同步)

bash
curl -X POST https://netts.io/apiv2/aml \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -d '{
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic",
    "wait": true
  }'

cURL(异步)

bash
curl -X POST https://netts.io/apiv2/aml \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -d '{
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic"
  }'

Python

python
import requests

url = "https://netts.io/apiv2/aml"
headers = {
    "Content-Type": "application/json",
    "X-API-KEY": "your_api_key",
}

payload = {
    "address": "YOUR_ADDRESS_HERE",
    "network": "trx",
    "provider": "elliptic",
    "wait": True
}

response = requests.post(url, headers=headers, json=payload)
data = response.json()

if response.status_code == 200:
    result = data.get("data", {})
    print(f"Order ID: {result.get('client_order_id')}")
    print(f"Status: {result.get('status')}")
    print(f"Risk Score: {result.get('risk_score')}")
    print(f"Risk Level: {result.get('risk_level')}")
    print(f"Sanctioned: {result.get('is_sanctioned')}")
else:
    print(f"Error: {data}")

响应

成功 — 处理中 (200 OK)

未设置 wait 或检查仍在处理中时:

json
{
    "success": true,
    "data": {
        "client_order_id": "A4C666ABE24BD4A",
        "status": "pending",
        "address": "T...example...",
        "provider": "elliptic",
        "price_usdt": 0.98,
        "price_trx": 4.136286,
        "currency": "TRX",
        "message": "AML check order accepted. Use GET /apiv2/aml/A4C666ABE24BD4A to check status."
    },
    "timestamp": "2026-03-10 09:56:31"
}

成功 — Elliptic 已完成 (200 OK)

包含所有数据结构的完整 Elliptic 响应:

json
{
    "success": true,
    "data": {
        "client_order_id": "A019540900E55CA",
        "status": "completed",
        "address": "T...example...",
        "provider": "elliptic",
        "report_language": "en",
        "risk_score": 0.802904,
        "risk_level": "low",
        "is_sanctioned": true,
        "created_at": "2026-03-10 15:56:28",
        "completed_at": "2026-03-10 15:56:28",
        "result": {
            "risk_score": 0.802904473154148,
            "risk_score_detail": {
                "source": 0.233206,
                "destination": 0.802904
            },
            "contributions": {
                "source": [
                    {
                        "entities": [
                            {
                                "name": "Capitalist",
                                "is_vasp": true,
                                "actor_id": 53979,
                                "category": "Payment Services Provider",
                                "entity_id": "b73a9c87-...",
                                "category_id": "54f55bfe-...",
                                "is_primary_entity": true
                            }
                        ],
                        "indirect_value": { "usd": 40194.03 },
                        "contribution_value": { "usd": 40194.03 },
                        "counterparty_value": { "usd": 0 },
                        "min_number_of_hops": 2,
                        "indirect_percentage": 31.57,
                        "is_screened_address": false,
                        "contribution_percentage": 31.57,
                        "counterparty_percentage": 0
                    },
                    {
                        "entities": [
                            {
                                "name": "KuCoin",
                                "is_vasp": true,
                                "actor_id": 11620,
                                "category": "Exchange",
                                "entity_id": "e54292da-...",
                                "category_id": "0a52f7a2-...",
                                "is_primary_entity": true
                            }
                        ],
                        "indirect_value": { "usd": 28436.45 },
                        "contribution_value": { "usd": 29434.17 },
                        "counterparty_value": { "usd": 997.72 },
                        "min_number_of_hops": 1,
                        "indirect_percentage": 22.34,
                        "is_screened_address": false,
                        "contribution_percentage": 23.12,
                        "counterparty_percentage": 0.78
                    }
                ],
                "destination": [
                    {
                        "entities": [
                            {
                                "name": "Bybit",
                                "is_vasp": true,
                                "actor_id": 23354,
                                "category": "Exchange",
                                "entity_id": "bddde8b7-...",
                                "category_id": "0a52f7a2-...",
                                "is_primary_entity": true
                            }
                        ],
                        "indirect_value": { "usd": 26333.43 },
                        "contribution_value": { "usd": 27458.30 },
                        "counterparty_value": { "usd": 1124.86 },
                        "min_number_of_hops": 1,
                        "indirect_percentage": 20.69,
                        "is_screened_address": false,
                        "contribution_percentage": 21.57,
                        "counterparty_percentage": 0.88
                    }
                ]
            },
            "cluster_entities": [
                {
                    "name": "Unknown",
                    "is_vasp": null,
                    "actor_id": -4,
                    "category": "Unknown",
                    "entity_id": "00000000-...",
                    "category_id": "00000000-...",
                    "is_primary_entity": true,
                    "is_after_sanction_date": false
                }
            ],
            "evaluation_detail": {
                "source": [
                    {
                        "rule_id": "6c2dcb03-...",
                        "rule_name": "Obfuscating & Misc.",
                        "rule_type": "exposure",
                        "risk_score": 0.2332,
                        "matched_elements": [
                            {
                                "category": "Coin Swap Service",
                                "category_id": "ff85b715-...",
                                "contributions": [
                                    {
                                        "entity": "FixedFloat",
                                        "risk_triggers": {
                                            "category": "Coin Swap Service",
                                            "category_id": "ff85b715-..."
                                        },
                                        "indirect_value": { "usd": 2891.09, "native": 0, "native_major": 0 },
                                        "contribution_value": { "usd": 2968.66, "native": 0, "native_major": 0 },
                                        "counterparty_value": { "usd": 77.58, "native": 0, "native_major": 0 },
                                        "min_number_of_hops": 1,
                                        "indirect_percentage": 2.27,
                                        "is_screened_address": false,
                                        "contribution_percentage": 2.33,
                                        "counterparty_percentage": 0.06
                                    }
                                ],
                                "indirect_value": { "usd": 2891.09, "native": 0, "native_major": 0 },
                                "contribution_value": { "usd": 2968.66, "native": 0, "native_major": 0 },
                                "counterparty_value": { "usd": 0, "native": 0, "native_major": 0 },
                                "indirect_percentage": 100,
                                "contribution_percentage": 2.33,
                                "counterparty_percentage": 0
                            }
                        ],
                        "matched_behaviors": []
                    },
                    {
                        "rule_id": "0a2b68fd-...",
                        "rule_name": "Illicit Activity",
                        "rule_type": "exposure",
                        "risk_score": 0.0026,
                        "matched_elements": [
                            {
                                "category": "Token Blacklisting",
                                "category_id": "94b50de8-...",
                                "contributions": [
                                    {
                                        "entity": "Tether USD",
                                        "risk_triggers": {
                                            "category": "Token Blacklisting",
                                            "category_id": "94b50de8-..."
                                        },
                                        "contribution_value": { "usd": 1022.45, "native": 0, "native_major": 0 },
                                        "min_number_of_hops": 3,
                                        "contribution_percentage": 0.08
                                    }
                                ]
                            }
                        ],
                        "matched_behaviors": []
                    },
                    {
                        "rule_id": "df59fab5-...",
                        "rule_name": "Sanctions",
                        "rule_type": "exposure",
                        "risk_score": 0.0024,
                        "matched_elements": [
                            {
                                "category": "Sanctioned Entity",
                                "category_id": "c1648b7a-...",
                                "contributions": [
                                    {
                                        "entity": "Garantex",
                                        "risk_triggers": {
                                            "category": "Sanctioned Entity",
                                            "category_id": "c1648b7a-..."
                                        },
                                        "contribution_value": { "usd": 863.21, "native": 0, "native_major": 0 },
                                        "min_number_of_hops": 3,
                                        "contribution_percentage": 0.07
                                    }
                                ]
                            }
                        ],
                        "matched_behaviors": []
                    }
                ],
                "destination": []
            },
            "detected_behaviors": []
        },
        "sanctions": {
            "self": false,
            "self_entities": null,
            "exposure": {
                "share": 8.029045,
                "proximity": "mixed",
                "hops": 1,
                "entity": "Garantex Europe OU - OFAC SDN - 5 Apr 2022",
                "category": "OFAC Sanctioned Entity",
                "direction": "destination",
                "rule_name": "Sanctioned, TF & CSAM"
            },
            "items": [
                {
                    "entity": "Garantex Europe OU - OFAC SDN - 5 Apr 2022",
                    "category": "OFAC Sanctioned Entity",
                    "share": 8.02904473154148,
                    "counterparty_share": 2.472410320321629,
                    "indirect_share": 5.556634411219852,
                    "hops": 1,
                    "proximity": "mixed",
                    "is_sanctioned": true,
                    "trigger": "sanctions_list",
                    "value_usd": 7494.407584232807,
                    "direction": "destination",
                    "rule_name": "Sanctioned, TF & CSAM"
                }
            ]
        }
    },
    "timestamp": "2026-03-10 15:56:28"
}

响应字段

字段类型描述
data.client_order_idstring用于状态轮询的唯一订单 ID
data.statusstringpendingprocessingcompletedfailedskipped
data.risk_scorenumber | null风险评分。Elliptic:0-10。null = 无触发项
data.risk_levelstring | nullnonelowmediumhighsevere。Elliptic 返回 lowmediumhigh;BitOK 额外包含 nonesevere。当提供商未检测到任何触发项时为 null
data.is_sanctionedboolean若检测到制裁实体敞口则为 true。自端点上线以来保持不变:其不区分受制裁地址与仅关联受制裁实体的地址 — 具体请参阅 data.sanctions
data.sanctionsobject | null制裁检测结果的细分:地址本身是否在名单中、关联紧密程度以及敞口大小。参见制裁
data.resultobject完整的提供商响应(当 response_format=full 时)

制裁

is_sanctioned 是一个单独的布尔值,并在两种截然不同的情况下显示为 true:被筛查地址本身处于制裁名单中,以及被筛查地址曾通过两个中间节点接收过来自受制裁方的极小份额资金。该标识为保持向后兼容性而保留了其原始含义;data.sanctions 则用于区分这两种情况。

字段类型描述
sanctions.selfboolean当被筛查地址本身是受制裁实体时为 true
sanctions.self_entitiesarray | nullselftrue 时,其自身所属受制裁实体的名称
sanctions.exposureobject | null单个最大的制裁关联 — 用于在摘要中展示
sanctions.exposure.sharenumber涉及资金的比例,以百分比表示(8.03 表示 8.03%)
sanctions.exposure.proximitystringscreened_addresscounterpartyindirectmixed
sanctions.exposure.hopsnumber | null到受制裁实体的最小交易跳数
sanctions.exposure.entitystring | null受制裁实体名称,包括名单及日期
sanctions.exposure.directionstring | null流入资金为 source,流出资金为 destination
sanctions.itemsarray所有制裁贡献项,按份额从大到小排序,包含与 exposure 相同的字段,并附带 counterparty_shareindirect_sharevalue_usdtrigger
sanctions.relatedarray | null仅限 BitOK:受到欧盟或英国制裁的交易所敞口,独立于制裁名单本身

Proximity 对应 Elliptic 报告中的 Closest Proximity 列:

含义
screened_address被筛查地址本身即为触发项,而非交易对手方
counterparty被筛查地址的直接交易对手方
indirect通过中间节点到达 — 参见 hops
mixed与同一实体同时存在直接与间接资金流动

仅当提供商明确标记时,该贡献项才算作制裁关联 — Elliptic 为 risk_triggers.is_sanctioned,BitOK 为 sanctions 类别。名为 Sanctioned, TF & CSAM 的 Elliptic 规则在国家及类别触发项下也会被触发,因此仅凭规则名称无法构成制裁判定结论。

Elliptic result 对象

字段类型描述
risk_scorenumber精确风险评分 (0-10)
risk_score_detailobject细分:sourcedestination 评分
contributionsobject资金流贡献方的 sourcedestination 数组
contributions[].entitiesarray与该贡献关联的已知实体
contributions[].entities[].namestring实体名称(例如 "Binance"、"KuCoin")
contributions[].entities[].categorystring实体类型(例如 "Exchange"、"Payment Services Provider")
contributions[].entities[].is_vaspboolean | null该实体是否为虚拟资产服务提供商 (VASP)
contributions[].contribution_value.usdnumber该贡献项的总 USD 交易量
contributions[].contribution_percentagenumber来自该实体的资金占总资金的百分比
contributions[].indirect_value.usdnumber间接接收的 USD 交易量(通过中间节点)
contributions[].indirect_percentagenumber间接接收的资金百分比
contributions[].counterparty_value.usdnumber作为直接交易对手方的 USD 交易量
contributions[].counterparty_percentagenumber作为直接交易对手方的百分比
contributions[].min_number_of_hopsnumber距该实体的最小交易跳数(0 = 直接)
contributions[].is_screened_addressboolean若此项为被筛查地址本身则为 true
cluster_entitiesarray与该地址聚类直接关联的已知实体
cluster_entities[].namestring实体名称
cluster_entities[].categorystring实体类别
cluster_entities[].is_vaspboolean | nullVASP 状态
cluster_entities[].is_after_sanction_dateboolean若活动发生在实体受到制裁之后则为 true
evaluation_detailobject已触发风险规则的 sourcedestination 数组
evaluation_detail[].rule_namestring规则名称(例如 "Sanctions"、"Illicit Activity"、"Obfuscating & Misc.")
evaluation_detail[].rule_typestring规则类型(例如 "exposure")
evaluation_detail[].risk_scorenumber来自该规则的风险评分贡献
evaluation_detail[].matched_elementsarray触发该规则的类别和实体
evaluation_detail[].matched_elements[].categorystring风险类别(例如 "Sanctioned Entity"、"Gambling"、"Token Blacklisting")
evaluation_detail[].matched_elements[].contributionsarray匹配类别内的实体
evaluation_detail[].matched_elements[].contributions[].entitystring实体名称
evaluation_detail[].matched_elements[].contributions[].contribution_percentagenumber敞口百分比
evaluation_detail[].matched_elements[].contributions[].min_number_of_hopsnumber交易跳数
evaluation_detail[].matched_elements[].contributions[].is_screened_addressboolean当被筛查地址本身触发该规则时为 true
evaluation_detail[].matched_elements[].contributions[].risk_triggersobject规则触发原因:is_sanctioned 对应制裁名单,country 对应司法管辖区,category 对应实体类型
evaluation_detail[].matched_behaviorsarray检测到的行为模式
detected_behaviorsarray在该地址上检测到的全局行为模式

风险等级

Elliptic(0-10 范围):

范围等级描述
0 — 3low极低风险。无显著敞口
3 — 7medium中等风险。检测到部分风险类别
7 — 10high高风险。受制裁、非法或高风险实体
null-未检测到风险触发项

BitOK(0-1 范围): 提供商直接返回等级本身 — nonelowmediumhighsevere

risk_level 是全平台通用的唯一判定指标:API 响应、控制面板和 PDF 报告针对同一项检查均显示完全相同的词。

错误响应

认证错误 (401)

json
{
    "detail": {
        "code": -1,
        "msg": "API key not provided"
    }
}

验证错误 (400)

json
{
    "success": false,
    "error": {
        "code": 4001,
        "msg": "Invalid or missing address"
    }
}
json
{
    "success": false,
    "error": {
        "code": 4002,
        "msg": "Invalid provider. Use: elliptic"
    }
}

余额不足 (402)

json
{
    "success": false,
    "error": {
        "code": 4020,
        "message": "Insufficient balance"
    },
    "timestamp": "2026-03-10 10:00:00"
}

提供商不可用 (503)

json
{
    "success": false,
    "error": {
        "code": 5030,
        "message": "Provider elliptic not available"
    },
    "timestamp": "2026-03-10 10:00:00"
}

错误代码参考

代码描述HTTP 状态
-1认证失败401
4001地址无效或缺失400
4002提供商无效400
4020余额不足402
5030提供商不可用503

速率限制

以下速率限制适用于所有 AML 端点(按 IP 地址):

周期限制描述
1 秒2 次请求每秒最多 2 次请求
1 分钟30 次请求每分钟最多 30 次请求

超过速率限制 (429)

json
{
    "message": "API rate limit exceeded"
}

结果缓存

若在过去 60 秒 内检查过相同的“地址 + 提供商”组合,系统将返回缓存的结果且不收取费用

支持的网络

network 参数为必填项。请使用下表中的代号。

Elliptic — 全面筛查

筛查针对特定网络上的特定地址执行。但是,Elliptic 会追踪与该地址关联的所有资产 — 包括代币、跨链转账以及在其他网络上与已知实体的交互。

网络代号原生资产
AlgorandalgoALGO
AptosaptAPT
ArbitrumarbETH
Avalanche (C-Chain)avaxAVAX
BasebaseETH
Binance ChainbnbBNB
Binance Smart ChainbscBNB
BitcoinbtcBTC
BittensortaoTAO
CardanoadaADA
CeloceloCELO
CosmosatomATOM
Crypto.comcroCRO
DogecoindogeDOGE
dYdXdydxDYDX
EthereumethETH
Ethereum ClassicetcETC
FantomftmFTM
FilecoinfilFIL
FlareflrFLR
GnosisgnosisxDai
HederahbarHBAR
HyperEVMhypeHYPE
InjectiveinjINJ
Internet ComputericpICP
LinealineaLINEA
LitecoinltcLTC
MobileCoinmobMOB
NearnearNEAR
OptimismopETH
PolkadotdotDOT
PolygonmaticMATIC
RipplexrpXRP
SeiseiSEI
SolanasolSOL
StarknetstrkSTRK
StellarxlmXLM
SuisuiSUI
TezosxtzXTZ
TONtonTON
TrontrxTRX
XDCxdcXDC
XLayerokbOKB
ZilliqazilZIL
zkSynczksyncETH

单资产筛查

这些网络支持针对单个地址/交易的筛查:

网络代号原生资产
Bitcoin CashbchBCH
HorizenzenZEN
ZCashzecZEC

提供商与网络兼容性

当使用 provider: "elliptic" 时 — 全面筛查和单资产表格中的所有网络均可用(47 个网络)。 如果传入了不支持的网络,API 将返回错误代码 4001

说明

  • 定价:Elliptic — 每次检查 0.98 美元。价格按当前汇率以 TRX 显示
  • 同步超时wait: true 最多等待 15 秒。若检查耗时更长,则返回 pending 状态
  • 处理时间:大多数检查在数秒内完成。然而,某些请求(特别是交易历史复杂的地址)可能需要长达 3 分钟 才能处理完毕。对于此类情况,请使用异步模式(省略 wait 或设置 wait: false),并通过 GET /apiv2/aml/{order_id} 进行轮询
  • 非活跃地址:无链上活动的地址将返回 skipped 状态,不收取费用