curl -X POST https://verification.didit.me/v3/aml/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: aml-user-1234-2026-08-20' \
-d '{
"full_name": "Antonio Ejemplo Modelo",
"entity_type": "person",
"date_of_birth": "1972-02-29",
"nationality": "ES",
"include_adverse_media": false,
"vendor_data": "user-1234"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.aml.screen(
full_name="Antonio Ejemplo Modelo",
entity_type="person",
date_of_birth="1972-02-29",
nationality="ES",
include_adverse_media=False,
vendor_data="user-1234",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.aml.screen({
full_name: "Antonio Ejemplo Modelo",
entity_type: "person",
date_of_birth: "1972-02-29",
nationality: "ES",
include_adverse_media: false,
vendor_data: "user-1234",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.AML.Screen(ctx, didit.AMLScreenParams{
FullName: "Antonio Ejemplo Modelo",
EntityType: didit.Some(didit.AMLScreenParamsEntityType("person")),
DateOfBirth: didit.String("1972-02-29"),
Nationality: didit.String("ES"),
IncludeAdverseMedia: didit.Bool(false),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.time.LocalDate;
import me.didit.Didit;
import me.didit.types.AmlScreenParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.aml().screen(AmlScreenParams.builder()
.fullName("Antonio Ejemplo Modelo")
.entityType(AmlScreenParams.EntityType.of("person"))
.dateOfBirth(LocalDate.parse("1972-02-29"))
.nationality("ES")
.includeAdverseMedia(false)
.vendorData("user-1234")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->aml->screen([
'full_name' => 'Antonio Ejemplo Modelo',
'entity_type' => 'person',
'date_of_birth' => '1972-02-29',
'nationality' => 'ES',
'include_adverse_media' => false,
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.aml.screen(
full_name: "Antonio Ejemplo Modelo",
entity_type: "person",
date_of_birth: "1972-02-29",
nationality: "ES",
include_adverse_media: false,
vendor_data: "user-1234"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Aml.ScreenAsync(new AmlScreenParams
{
FullName = "Antonio Ejemplo Modelo",
EntityType = new AmlScreenParamsEntityType("person"),
DateOfBirth = "1972-02-29",
Nationality = "ES",
IncludeAdverseMedia = false,
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "d27c5509-7a66-45a9-b05e-d69d9f4c336a",
"aml": {
"status": "Approved",
"total_hits": 0,
"entity_type": "person",
"hits": [],
"score": 0,
"screened_data": {
"full_name": "Maximilian Mustermann-Doe",
"date_of_birth": "1992-03-14",
"nationality": "DE",
"document_number": null
},
"warnings": []
},
"vendor_data": "user-1234",
"metadata": {
"internal_ref": "abc-123"
},
"created_at": "2026-06-11T10:21:07.013938+00:00"
}AML 筛查 API:制裁、PEP 与观察名单
Didit 提供实时 AML 筛查,覆盖 1,300+ 全球观察名单,包括制裁、PEP 与负面新闻。双评分风险体系,每次检查 $0.20,无月度最低消费。
curl -X POST https://verification.didit.me/v3/aml/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: aml-user-1234-2026-08-20' \
-d '{
"full_name": "Antonio Ejemplo Modelo",
"entity_type": "person",
"date_of_birth": "1972-02-29",
"nationality": "ES",
"include_adverse_media": false,
"vendor_data": "user-1234"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.aml.screen(
full_name="Antonio Ejemplo Modelo",
entity_type="person",
date_of_birth="1972-02-29",
nationality="ES",
include_adverse_media=False,
vendor_data="user-1234",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.aml.screen({
full_name: "Antonio Ejemplo Modelo",
entity_type: "person",
date_of_birth: "1972-02-29",
nationality: "ES",
include_adverse_media: false,
vendor_data: "user-1234",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.AML.Screen(ctx, didit.AMLScreenParams{
FullName: "Antonio Ejemplo Modelo",
EntityType: didit.Some(didit.AMLScreenParamsEntityType("person")),
DateOfBirth: didit.String("1972-02-29"),
Nationality: didit.String("ES"),
IncludeAdverseMedia: didit.Bool(false),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import java.time.LocalDate;
import me.didit.Didit;
import me.didit.types.AmlScreenParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.aml().screen(AmlScreenParams.builder()
.fullName("Antonio Ejemplo Modelo")
.entityType(AmlScreenParams.EntityType.of("person"))
.dateOfBirth(LocalDate.parse("1972-02-29"))
.nationality("ES")
.includeAdverseMedia(false)
.vendorData("user-1234")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->aml->screen([
'full_name' => 'Antonio Ejemplo Modelo',
'entity_type' => 'person',
'date_of_birth' => '1972-02-29',
'nationality' => 'ES',
'include_adverse_media' => false,
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.aml.screen(
full_name: "Antonio Ejemplo Modelo",
entity_type: "person",
date_of_birth: "1972-02-29",
nationality: "ES",
include_adverse_media: false,
vendor_data: "user-1234"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Aml.ScreenAsync(new AmlScreenParams
{
FullName = "Antonio Ejemplo Modelo",
EntityType = new AmlScreenParamsEntityType("person"),
DateOfBirth = "1972-02-29",
Nationality = "ES",
IncludeAdverseMedia = false,
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "d27c5509-7a66-45a9-b05e-d69d9f4c336a",
"aml": {
"status": "Approved",
"total_hits": 0,
"entity_type": "person",
"hits": [],
"score": 0,
"screened_data": {
"full_name": "Maximilian Mustermann-Doe",
"date_of_birth": "1992-03-14",
"nationality": "DE",
"document_number": null
},
"warnings": []
},
"vendor_data": "user-1234",
"metadata": {
"internal_ref": "abc-123"
},
"created_at": "2026-06-11T10:21:07.013938+00:00"
}授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
请求头
可选的重试安全密钥,最多 255 个字符。使用相同的请求体复用同一密钥将返回原始响应,而不会执行第二次筛查或重复计费。使用不同的请求体复用该密钥将返回 409。
255请求体
待筛查个人或企业的姓名。最少 2 个字符,此为筛查服务商自身的最低限制。在执行任何筛查之前,较短或空白的名称会使该字段返回 400,因此不会产生任何计费。
2"Antonio Ejemplo Modelo"
要筛查的实体类型。默认为 person。
person, company 出生日期(自然人)或成立日期(企业),YYYY-MM-DD。通过出生日期权重提高匹配精度。
"1972-02-29"
ISO 3166-1 alpha-2 国家/地区代码(例如 ES)。无效代码返回 400。通过国家/地区权重提高匹配精度。
"ES"
身份证件号码。不设权重 — 充当黄金密钥:完全匹配会将命中的 match_score 覆盖为 100,严重不匹配则会对其进行惩罚扣分。仅当长度为 2-50 个字符时,才会作为搜索过滤器发送给筛查提供商;超出该范围的值会被接受并存储,筛查仍会运行并计费,只是不会按证件号码缩小范围。
判定结果为 Approved 的风险评分阈值(小于或等于该值)。必须 ≤ aml_score_review_threshold(否则返回 400)。
0 <= x <= 100判定结果为 Declined 的风险评分阈值上限。介于两个阈值之间的分数将产生 In Review。
0 <= x <= 100姓名相似度在单次命中匹配分数中的权重。这三个权重相加必须正好为 100(否则返回 400)。
0 <= x <= 100出生日期在单次命中匹配分数中的权重。
0 <= x <= 100国家/地区/国籍在单次命中匹配分数中的权重。
0 <= x <= 100逐条命中的截断阈值:match_score 低于此值的命中标注为 False Positive(不计入风险评估);等于或高于此值的为 Unreviewed 疑似匹配项。
0 <= x <= 100同时在新闻媒体中搜索负面报道。汇总结果时最多增加约 30 秒延迟 — 请使用 ≥60 秒的客户端超时时间。
持续对此档案重新筛查并通过 Webhook 推送变更。需要 save_api_request=true(否则返回 400)。
将筛查持久化为会话(控制台可见性、决策 endpoint、Webhook、命中审核)。设为 false 则执行无状态检查。
您为被筛查用户指定的标识符;将原样返回并与会话一起存储。
随请求一同存储并回显的自由格式 JSON。
响应
筛查已完成。aml.status 反映您的阈值设置;达到或高于内部收录下限的每个命中项都会列在 aml.hits 中,并带有其身份 match_score、实体 risk_score 以及解释匹配原因的 score_breakdown。