didit-aml-screening について
個人や企業を世界各地の監視リストやデータベースと照合する、開発者向けの Didit スキルです。1 回の同期リクエストで本人一致度とリスクを別々に評価し、しきい値設定やネガティブ報道検索、継続監視にも対応します。
主な機能
- 01個人と企業のスクリーニング
- 02監視リストとデータベースの検索
- 03一致度とリスクの個別スコア化
- 04審査しきい値の設定
- 05ネガティブ報道検索と継続監視の任意設定
活用シーン
- 01顧客登録時の個人スクリーニング
- 02企業の制裁・規制リスト照合
- 03一致候補のコンプライアンス審査への振り分け
- 04プロフィールの継続的な変更監視
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ didit-protocol/ skills --skill didit-aml-screeningインストール後、Claude Code で/didit-aml-screeningを入力して読み込まれたか確認します。
同梱ファイルscripts/screen_aml.py
詳細
Didit AML スクリーニング API
概要
1,300 以上の世界各地の監視リストやデータベースに対し、人物または企業を 1 回の同期呼び出しでスクリーニングします。ヒットごとに 2 つのスコアを返します。一致スコア(同一人物かどうか)とリスクスコア(一致した対象のリスクの高さ)です。
主な制約:
- 必須フィールドは
full_nameのみです(2 文字以上)。 entity_typeは"person"(デフォルト)または"company"です。nationalityは ISO 3166-1 alpha-2 コードです(ESPではなくES)。それ以外を指定すると400が返されます。aml_name_weight+aml_dob_weight+aml_country_weightの合計は、必ず 100 にしてください。aml_score_approve_thresholdはaml_score_review_threshold以下でなければなりません。include_ongoing_monitoring: trueを指定するには、save_api_request: true(デフォルト)が必要です。include_adverse_media: trueを指定すると、アドバースメディアの確認が完了するまで待機します(約 5 秒、最大 25 秒追加)。クライアントのタイムアウトは 60 秒以上に設定してください。- 再試行時には
Idempotency-Keyヘッダーを送信してください。タイムアウトが発生しても、2 回目のスクリーニングが実行されたり課金されたりすることはありません。
対象範囲(ドキュメントより): 制裁リスト(OFAC SDN、国連、EU、英国財務省など)、法執行機関のリストや指名手配リスト(FBI、Interpol など)、PEP(レベル 1~4)とその親族および近しい関係者、警告および規制上の執行措置、適格性および誠実性、支払不能、50,000 以上のニュースソースを対象とするアドバースメディア(include_adverse_media: true の場合のみ)。
スコアリング:
- ヒットごとの一致スコア(0~100):
aml_match_score_threshold(デフォルトは 93)未満のヒットは"False Positive"、しきい値以上のヒットは"Unreviewed"になります。75 未満のヒットは返されません。 - ヒットごとのリスクスコア(0~100):False Positive ではないヒットのうち最も高いリスクスコアが
aml.scoreとなり、2 つのしきい値に基づいてaml.statusが設定されます。
保存: save_api_request: true(デフォルト)の場合、スクリーニングはセッションとして保存されます。request_id は GET /v3/session/{sessionId}/decision/ で使用でき、Business Console に表示され、status.updated ウェブフックが発火し、後からヒットをレビューできます。false の場合は何も保存されず、request_id は相関 ID としてのみ使用されます。
サンドボックス: サンドボックス API キーではスクリーニングと課金が省略され、モック結果が返されます。sandbox_scenario を指定しない場合は、ヒット数 0 の "Approved" が返されます(decline_aml_hit はヒット 1 件と "Declined" を返し、review_aml_possible_match は "In Review" を返します。シナリオ一覧は GET /v1/sandbox/scenarios/ で確認できます)。ライブアプリケーションでは sandbox_scenario は拒否されます。
料金: AML スクリーニングは 1 回あたり $0.20 です(スクリーニングの成功後に 1 クレジットが課金されます。同じ冪等リクエストの再送では再課金されません。単独の呼び出しに無料枠はありません)。AML モニタリングは、モニタリング対象プロフィール 1 件あたり年間 $0.07 です。これらの表示価格は、Didit の料金が変更され、月 500 回の無料チェックが月 $10 の無料クレジットになる 2026 年 11 月 1 日まで適用されます。最新の料金はdidit.me/pricingをご確認ください。
API リファレンス: https://docs.didit.me/standalone-apis/aml-screening 機能ガイド: https://docs.didit.me/core-technology/aml-screening/overview 一致スコア: https://docs.didit.me/core-technology/aml-screening/aml-match-score リスクスコア: https://docs.didit.me/core-technology/aml-screening/aml-risk-score
認証
すべてのリクエストに x-api-key ヘッダーが必要です。Didit Business Console の Developers > API keys にあるアプリケーションの API キーを使用するか、プログラムからアカウントとキーを作成してください(「はじめに」を参照)。カスタムアクセス権を持つ名前付きキーで単独チェックを実行するには、Sessions の書き込み権限が必要です。一部のワークフローに制限されたキー、または承認済みセッションのみに制限されたキーでは、単独チェックを実行できません。
はじめに(まだアカウントをお持ちでない場合)
Didit API キーをお持ちでない場合は、2 回の API 呼び出しで作成できます。
- 登録:
POST https://apx.didit.me/auth/v2/programmatic/register/に{"email": "[email protected]", "password": "MyStr0ng!Pass"}を指定します - メールを確認: 6 文字の認証コードを確認します
- 認証:
POST https://apx.didit.me/auth/v2/programmatic/verify-email/に{"email": "[email protected]", "code": "A3K9F2"}を指定します。キーはレスポンスのapplication.api_keyに含まれています。
クレジットを追加するには: GET /v3/billing/balance/ で残高を確認し、POST /v3/billing/top-up/ に {"amount_in_dollars": 50} を指定して Stripe の決済リンクを取得します。
プラットフォーム管理(ワークフロー、セッション、ユーザー、請求)の詳細については、didit-verification-management スキルをご覧ください。
エンドポイント
POST https://verification.didit.me/v3/aml/
ヘッダー
| ヘッダー | 値 | 必須 |
|---|---|---|
x-api-key | API キー | はい |
Content-Type | application/json | はい |
Idempotency-Key | リトライキー。最大 255 文字 | いいえ |
Idempotency-Key は、アプリケーションとリクエスト本文の完全一致を対象に適用されます。同じキーと本文で再試行すると、スクリーニングや再請求を行わずに保存済みのレスポンスが返されます。同じキーで本文が異なる場合は 409 が返されます。最初のリクエストがまだ実行中に再試行すると、Retry-After: 30 を伴う 409 が返されます。
本文(JSON)
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
full_name | string | はい | - | 個人または会社の名前。最小 2 文字 |
entity_type | string | いいえ | "person" | "person" または "company" |
date_of_birth | string | いいえ | - | YYYY-MM-DD:生年月日(個人)または設立日(会社) |
nationality | string | いいえ | - | ISO 3166-1 alpha-2 の国コード。例:US |
document_number | string | いいえ | - | ID 書類番号。スコアの重み付けには使用されず、「ゴールデンキー」として機能します(一致スコアを参照)。2~50 文字の場合のみ検索フィルターとして使用されます。この範囲外でもスクリーニングは実行され、課金されますが、検索範囲は絞り込まれません |
aml_match_score_threshold | integer | いいえ | 93 | 0~100。これを下回るヒットは "False Positive"、以上のヒットは "Unreviewed" になります |
aml_name_weight | integer | いいえ | 60 | 0~100。一致スコアにおける名前の重み |
aml_dob_weight | integer | いいえ | 25 | 0~100。一致スコアにおける生年月日の重み |
aml_country_weight | integer | いいえ | 15 | 0~100。一致スコアにおける国の重み(3 つの重みの合計は 100 である必要があります) |
aml_score_approve_threshold | number | いいえ | 80 | 0~100。aml.score がこの値以下の場合は "Approved" になります |
aml_score_review_threshold | number | いいえ | 100 | 0~100。aml.score がこの値を超えると "Declined"、2 つのしきい値の間の場合は "In Review" になります |
include_adverse_media | boolean | いいえ | false | 否定的な報道をニュースメディアでも検索します(最大約 30 秒追加されます) |
include_ongoing_monitoring | boolean | いいえ | false | このプロフィールのスクリーニングを継続し、変更を Webhook で報告します。AML モニタリングとして課金されます。save_api_request: true が必要です |
save_api_request | boolean | いいえ | true | スクリーニングをセッションとして保存します(コンソール、判定エンドポイント、Webhook、ヒットレビューで利用できます) |
vendor_data | string | いいえ | - | スクリーニング対象ユーザーを識別するためのユーザー側の識別子。保存され、レスポンスで返されます |
metadata | object | いいえ | null | リクエストとともに保存され、レスポンスで返される自由形式の JSON |
sandbox_scenario | string | いいえ | - | サンドボックスキー専用:decline_aml_hit、review_aml_possible_match、... |
例
import requests
response = requests.post(
"https://verification.didit.me/v3/aml/",
headers={
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
"Idempotency-Key": "aml-user-1234-2026-10-12",
},
json={
"full_name": "Jane Doe",
"date_of_birth": "1985-03-15",
"nationality": "US",
"document_number": "AB1234567",
"entity_type": "person",
"vendor_data": "user-1234",
},
timeout=90,
)
aml = response.json()["aml"]
print(aml["status"], aml["score"], aml["total_hits"])
const response = await fetch("https://verification.didit.me/v3/aml/", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
"Idempotency-Key": "aml-user-1234-2026-10-12",
},
body: JSON.stringify({
full_name: "Jane Doe",
date_of_birth: "1985-03-15",
nationality: "US",
vendor_data: "user-1234",
}),
});
const { aml } = await response.json();
レスポンス(200 OK、一部省略)
制裁対象として Unreviewed のヒットが 1 件(一致 97、リスク 86)、False Positive の PEP ヒットが 1 件(一致 88)あります。後者は aml.score から除外されています。デフォルトのしきい値では、86 は 80 を上回り、100 は上回らないため、ステータスは "In Review" になります。
{
"request_id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"aml": {
"status": "In Review",
"total_hits": 2,
"entity_type": "person",
"hits": [
{
"id": "hit-001",
"url": "https://sanctions.example.org/entry/123",
"match": false,
"score": 0.97,
"match_score": 97.0,
"risk_score": 86.0,
"caption": "Jane Doe",
"datasets": ["Sanctions"],
"review_status": "Unreviewed",
"rca_name": "",
"first_seen": "2024-01-07T00:00:00",
"last_seen": "2026-05-02T00:00:00",
"properties": {"name": ["Jane Doe"], "birthDate": ["1985-03-15"], "nationality": ["United States"]},
"score_breakdown": {
"name_score": 95, "name_weight": 60, "name_weight_normalized": 60.0, "name_contribution": 57.0,
"dob_score": 100, "dob_weight": 25, "dob_weight_normalized": 25.0, "dob_contribution": 25.0,
"country_score": 100, "country_weight": 15, "country_weight_normalized": 15.0, "country_contribution": 15.0,
"document_number_match_type": "NEUTRAL",
"document_number_effect": "Hit has no document number data",
"total_score": 97
},
"pep_matches": [],
"sanction_matches": [{"list_name": ["Example Sanctions List"], "matched_name": "Jane Doe", "source_url": "https://sanctions.example.org/entry/123"}],
"warning_matches": [],
"adverse_media_matches": [],
"adverse_media_details": null,
"linked_entities": []
},
{
"id": "hit-002",
"match_score": 88.0,
"risk_score": 47.5,
"caption": "Jane A. Doe",
"datasets": ["PEP Level 2"],
"review_status": "False Positive",
"score_breakdown": {
"name_score": 80, "name_weight": 60, "name_weight_normalized": 60.0, "name_contribution": 48.0,
"dob_score": 100, "dob_weight": 25, "dob_weight_normalized": 25.0, "dob_contribution": 25.0,
"country_score": 100, "country_weight": 15, "country_weight_normalized": 15.0, "country_contribution": 15.0,
"document_number_match_type": "NEUTRAL",
"document_number_effect": "Hit has no document number data",
"total_score": 88
}
}
],
"score": 86.0,
"screened_data": {
"full_name": "Jane Doe",
"date_of_birth": "1985-03-15",
"nationality": "US",
"document_number": "AB1234567"
},
"warnings": [
{
"feature": "AML",
"risk": "POSSIBLE_MATCH_FOUND",
"additional_data": null,
"log_type": "warning",
"short_description": "Possible match found in AML screening",
"long_description": "The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review."
}
]
},
"vendor_data": "user-1234",
"metadata": null,
"created_at": "2026-10-12T10:23:44.812000+00:00"
}
ステータス値と処理
aml.status | ルール(デフォルト) | アクション |
|---|---|---|
"Approved" | aml.score <= 承認しきい値(80)。ヒットがない場合、およびすべてのヒットが誤検知(スコア 0)の場合も含みます | 安全に続行できます |
"In Review" | 承認しきい値 < aml.score <= 審査しきい値(100) | 未審査のヒットを手動でコンプライアンス審査します |
"Declined" | aml.score > 審査しきい値。デフォルトの 100 では発生しません。自動的に却下するには aml_score_review_threshold を下げてください | ポリシーに従ってブロックするか、エスカレーションします |
スタンドアロン API が返すのは、この 3 つのステータスのみです。
エラーレスポンス
| コード | 意味 | アクション |
|---|---|---|
400 | 無効なリクエスト | レスポンス本文のフィールドエラーを確認してください。複数フィールドにまたがるルール違反の場合は {"error": [...]} が返されます。重みの合計が 100 でない場合、承認しきい値が審査しきい値を上回っている場合、save_api_request なしでモニタリングを行った場合などが該当します。また、Idempotency-Key が 255 文字を超えている場合も該当します |
401 | API キーの有効期限が切れています | Developers > API keys でキーをローテーションするか、新しいキーを作成してください |
403 | API キーがない、誤っている、または取り消されている場合、このエンドポイントにアクセスできないスコープ付きキーを使用した場合、キーの IP 許可リスト外からリクエストした場合、またはクレジットが不足している場合 | detail または error のメッセージを確認してください。x-api-key ヘッダーまたはキーのアクセス権を修正するか、クレジットを追加してください |
409 | Idempotency-Key が異なる本文で再利用された場合、またはそのキーを使った最初のリクエストがまだ実行中の場合 | 新しいリクエストには新しいキーを使用してください。実行中のリクエストの場合は、Retry-After の時間だけ待ってから、同じキーと本文で再試行してください |
429 | レート制限:キーごとに 1 分あたり POST/PATCH/DELETE リクエストは 300 件、GET リクエストは 600 件までです | Retry-After の秒数だけ待ってから、再試行してください |
クレジットの確認は、検証とスクリーニングの前に行われます。クレジットが不足している場合は、403 と {"error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"} が返されます。
マッチスコアシステム
match_score = 各要素のスコアに重みを掛けた値の合計です。両側でデータがある要素について重みを再正規化します(名前のみの場合、名前の重みは 100%になります)。値は 0~100 に制限されます。
| 要素 | デフォルトの重み | スコアリング |
|---|---|---|
| 名前 | 60 | あいまい一致度 0~100(タイプミス、語順、ミドルネーム) |
| 生年月日 | 25 | 完全に同じ日付なら 100%。ヒット側が年のみで、その年が一致する場合は 100%。年は同じで月または日が異なる場合は 50%。年が異なる場合は -100% |
| 国 | 15 | 一致なら 100%。不一致なら -50%。比較前に、ヒット側の国名とアルファ 3 コードを正規化します |
書類番号の「ゴールデンキー」(重み付け対象外。スペース、-、.、_ を除去してから大文字に変換し、番号を比較します):
| ケース | 結果 |
|---|---|
入力した document_number がヒット側の番号のいずれかと一致する | match_score が 100(MATCH)に設定されます |
| いずれかの側で欠落している、または番号が異なる | スコアは変更されません(NEUTRAL)。別の書類の種類である可能性があるため、異なる番号は減点されません |
現在、score_breakdown.document_number_match_type は MATCH または NEUTRAL です。列挙型には HARD_MISMATCH もありますが、現在のスコアリングでは生成されません。
分類: match_score < aml_match_score_threshold(93)の場合は "False Positive"(aml.score から除外)、しきい値以上の場合は "Unreviewed" です。75 未満のヒットは一切返されません。
リスクスコアシステム
ドキュメントによると、risk_score = (Country x 0.30) + (Category x 0.50) + (Criminal records x 0.20)、0〜100です。ディメンションごとの表示は hits[].risk_view にあります。
カテゴリスコア(ヒットのうち、最も高いカテゴリが使用されます):
カテゴリ(datasets の値) | スコア |
|---|---|
Sanctions、PEP、PEP Level 1 | 100 |
Warnings and Regulatory Enforcement | 95 |
Insolvency、PEP Level 2 | 80 |
SIE、SIP | 75 |
PEP Level 3 | 70 |
Fitness and Probity | 65 |
Adverse Media | 60 |
PEP Level 4 | 55 |
最終ステータス: aml.score は "False Positive" ではないヒットのうち、最も高い risk_score です(該当するヒットがない場合は 0)。続いて「ステータス値」のしきい値が適用されます。後からヒットの審査ステータスを変更しても(「ヒットの審査」を参照)、aml.status は再計算されません。
警告タグ
| タグ | 条件 | log_type |
|---|---|---|
POSSIBLE_MATCH_FOUND | aml.score が 0 以外で、aml_score_approve_threshold 以上(スコアがしきい値と同じ場合は警告が発生しますが、"Approved" のままです) | warning。スコアが aml_score_review_threshold を超える場合は error |
警告オブジェクト:{feature, risk, additional_data, log_type, short_description, long_description}。COULD_NOT_PERFORM_AML_SCREENING はワークフローセッションでのみ発生します(KYC データに氏名、生年月日、または発行州が不足している場合)。スタンドアロン API がこれを返すことはありません。
レスポンスフィールドのリファレンス
トップレベル
| フィールド | 型 | 説明 |
|---|---|---|
request_id | string | save_api_request が true の場合はセッション ID、それ以外の場合は相関 UUID |
aml.status | string | "Approved"、"In Review"、"Declined" |
aml.total_hits | integer | hits 内のエントリ数(False Positive を含む) |
aml.entity_type | string | "person" または "company" |
aml.score | number | False Positive ではないヒットのうち、最も高い risk_score |
aml.screened_data | object | スクリーニング対象データ {full_name, date_of_birth, nationality, document_number}(存在しない場合は null) |
aml.warnings | array | 「警告タグ」を参照 |
vendor_data、metadata、created_at | エコーバックされるデータとレスポンスのタイムスタンプ |
ヒットオブジェクト
| フィールド | 型 | 説明 |
|---|---|---|
id | string | ヒット ID。レビュー時に hit_id として使用します |
caption | string | 一致したエンティティの表示名 |
match_score | number | 同一性の信頼度(0~100) |
risk_score | number | エンティティのリスク(0~100) |
score | number | 非推奨:0~1 スケールの一致スコア |
match | boolean | レガシーフラグ。match_score と review_status を使用してください |
review_status | string | "False Positive"、"Unreviewed"、"Confirmed Match"、"Inconclusive" |
datasets | array | PEP、PEP Level 1~PEP Level 4、Sanctions、Adverse Media、Warnings and Regulatory Enforcement、Fitness and Probity、SIP、SIE、Insolvency |
properties | object | プロファイルの配列:name、alias、notes、gender、birthDate、birthPlace、nationality、position、... |
rca_name | string | エンティティの一致につながった関係の近い関係者 |
url | string | 入手可能な場合のソース URL |
pep_matches | array | {list_name, publisher, source_url, description, matched_name, pep_position, date_of_birth, place_of_birth, aliases, education, other_sources} |
sanction_matches | array | 制裁リストのエントリー(例:list_name、matched_name、reason、legal_basis、sanction_program、sanctioning_authority、listed_on、source_url) |
warning_matches | array | 警告および規制執行のエントリー |
adverse_media_matches | array | include_adverse_media: true の場合のみ:{headline, summary, sentiment, sentiment_score, source_url, thumbnail, country, author_name, publication_date, adverse_keywords, other_sources} |
adverse_media_details | object | include_adverse_media: true の場合のみ:集約された sentiment、sentiment_score、adverse_keywords |
linked_entities | array | 関係:{name, relation, status, details, active} |
risk_view | object | 寸法ごとのリスク(crimes、countries、categories、custom_list)。各項目に score、weightage、risk_level、risk_scores が含まれます |
additional_information | object | 追加のコンテキスト。例:flag_summary 配列 |
first_seen / last_seen | string | データセット内での初回出現時刻と最新の更新時刻 |
score_breakdown | object | {name,dob,country}_score、_weight、_weight_normalized、_contribution、document_number_match_type、document_number_effect、total_score(match_score と同値) |
ヒットのレビュー
保存済みスクリーニング(save_api_request: true)とワークフローセッションでは、ヒットをレビューできます。どちらのエンドポイントも Sessions 書き込み権限(write:sessions)を持つ API キーが必要です。また、data.updated Webhook を発火し、セッションのレビュー履歴にエントリーを追加します。セッションのステータスや AML ステータスは変更されません。継続的モニタリングで再スクリーニングを行う際も、レビュアーの判定は保持されます。ワークフローセッションに複数の AML チェックがある場合に限り、?node_id=<node>(またはリクエスト本文の node_id)を追加してください。
1 件のヒット:
PATCH https://verification.didit.me/v3/session/{sessionId}/update-aml-hit-status/
{"hit_id": "hit-001", "review_status": "Confirmed Match"}
-> 200 {"message": "Hit status updated successfully", "hit_id": "hit-001", "review_status": "Confirmed Match"}
複数のヒット(一括処理。すべて成功するか、すべて失敗します):
PATCH https://verification.didit.me/v3/session/{sessionId}/bulk-update-aml-hit-status/
{"hit_updates": [{"hit_id": "hit-001", "review_status": "Confirmed Match"},
{"hit_id": "hit-002", "review_status": "False Positive"}]}
-> 200 {"message": "Updated 2 hit(s) successfully", "updated_hits": ["hit-001", "hit-002"]}
review_status:Unreviewed、Confirmed Match、False Positive、Inconclusive。エラー:400(hit_id または hit_updates が空、ステータスが無効)、403(キー、権限)、404(セッションが見つからない、AML チェックがない、または hit_id が不明。一括処理では何も変更されません)。
継続的なモニタリング
デフォルトではオフです。有効にすると、ウォッチリストの更新に応じてプロファイルが再スクリーニングされます。ステータスの変更時には status.updated が、ヒットの変更時には data.updated が発生します。料金は AML モニタリングとして、モニタリング対象のプロファイル1件あたり年間 $0.07 です。
有効にする方法:
POST /v3/aml/でinclude_ongoing_monitoring: trueを指定します(save_api_request: trueを設定)。- ワークフローの AML 機能設定で
is_aml_ongoing_monitoring_enabledを指定します。そのワークフローから作成されたセッションに適用されます(didit-verification-management スキルを参照)。 - 既存のプロファイルを一括で有効にするには、
POST /v3/users/aml-monitoring/またはPOST /v3/businesses/aml-monitoring/を使用します(didit-verification-management スキルを参照)。
モニタリングが実行された証拠(ドキュメントによる):GET /v1/session/{sessionId}/aml-screening-history/ には、完了した再スクリーニングがすべて新しい順に表示されます。outcome: "NO_CHANGE" の実行も含まれます。
一般的なワークフロー
基本的な AML チェック
1. POST /v3/aml/ -> {"full_name": "Jane Doe", "date_of_birth": "1985-03-15", "nationality": "US"}
2. If "Approved" -> no credible watchlist match
If "In Review" -> review hits with review_status "Unreviewed" (datasets, risk_score, score_breakdown)
If "Declined" -> block or escalate (only when you lowered aml_score_review_threshold)
3. Record the decision per hit: PATCH /v3/session/{request_id}/update-aml-hit-status/
包括的な KYC + AML
1. POST /v3/id-verification/ -> read name, date of birth, nationality and document number
2. Convert nationality from ISO alpha-3 (what ID verification returns, e.g. ESP) to alpha-2 (ES):
/v3/aml/ returns 400 for an alpha-3 code
3. POST /v3/aml/ with all four fields -> more data means fewer False Positives;
an exact document number match sets match_score to 100
4. Optional: include_ongoing_monitoring=true to keep the profile under monitoring
安全な再試行
1. POST /v3/aml/ with header Idempotency-Key: <unique per screening>
2. On timeout or 5xx, resend the same body with the same key -> stored response, no second charge
3. On 409 with Retry-After -> the first request is still running; wait and retry with the same key
ユーティリティスクリプト
screen_aml.py:コマンドラインから AML ウォッチリストを照会します。
# Requires: pip install requests
export DIDIT_API_KEY="your_api_key"
python scripts/screen_aml.py --name "Jane Doe"
python scripts/screen_aml.py --name "Jane Doe" --dob 1985-03-15 --nationality US --doc-number AB1234567
python scripts/screen_aml.py --name "Acme Energy Ltd" --entity-type company --adverse-media
python scripts/screen_aml.py --name "Jane Doe" --approve-threshold 70 --review-threshold 90 --idempotency-key user-1234-aml