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 및 감시 목록
1,300개 이상의 글로벌 감시 목록으로 실시간 AML 스크리닝. 제재, PEP, 부정적 언론 보도 확인. 두 가지 점수 체계, 건당 $0.20, 월 최소 요금 없음. Didit API.
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"
}인증
Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본 키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며 특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나 만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된 IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를 벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write 권한이 없는 키는 세션 링크와 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입니다.
샌드박스 전용 시나리오 슬러그입니다. API 키가 샌드박스 모드 애플리케이션에 속한 경우에만 허용되며, 프로덕션 환경 애플리케이션에서는 거부됩니다. 독립형 스크리닝에는 설정할 세션이 없으므로 슬러그가 스크리닝 요청 자체에 포함됩니다: decline_aml_hit는 프로덕션 형태의 일치 항목 하나를 반환하고 스크리닝을 Declined로 처리하며, review_aml_possible_match는 In Review로 처리하고, AML 결과를 설정하지 않는 시나리오는 스크리닝을 문제없는 상태로 둡니다. 시나리오 카탈로그는 GET /v1/sandbox/scenarios/ 또는 Sandbox & Test Data에서 확인하십시오.
"decline_aml_hit"
응답
스크리닝이 완료되었습니다. aml.status는 설정한 임계값을 반영하며, 내부 포함 기준선 이상의 모든 적중 항목은 신원 match_score, 엔티티 risk_score, 일치 세부 정보를 설명하는 score_breakdown과 함께 aml.hits에 나열됩니다.