無料
月額$0。クレジットカード不要。
- 無料KYCバンドル(本人確認 + パッシブ・ライブネス + 顔照合 + デバイス&IP分析), 毎月500回まで
- ブロックリストユーザー
- 重複検出
- すべてのセッションで200以上の不正シグナル
- Diditネットワーク全体でのKYC再利用
- ケース管理プラットフォーム
- ワークフロービルダー
- 公開ドキュメント、サンドボックス、SDK、MCP (Model Context Protocol) サーバー
- コミュニティサポート


世界中の2,000以上の組織から信頼されています。

1,300以上のウォッチリスト
1回のAPIコールで、国際的な制裁リスト、PEP、その親族および近親者、 ネガティブメディア、警告リストを網羅します。完全なKYCに組み込むことも、 すべてのユーザーを年間$0.07で毎日更新することも可能です。
本人確認、生体認証、顔照合、制裁リスト、住所、年齢、電話番号、メールアドレス、カスタム質問など、必要なチェック項目を選択します。ダッシュボードでフローにドラッグ&ドロップするか、同じフローをAPIにポストします。条件分岐やA/Bテストもコード不要で実行できます。
Web、iOS、Android、React Native、Flutter SDKでネイティブに組み込むことができます。ホストされたページにリダイレクトすることも、メール、SMS、WhatsAppなど、あらゆる方法でユーザーにリンクを送信することも可能です。お使いのスタックに最適な方法をお選びください。
Diditがカメラ、照明の指示、モバイル連携、アクセシビリティをホストします。ユーザーがフローを実行中に、200以上の不正シグナルをリアルタイムでスコアリングし、すべてのフィールドを信頼できるデータソースと照合して検証します。結果は2秒以内に得られます。
リアルタイムの署名付きWebhookにより、ユーザーが承認、拒否、またはレビューに送られた瞬間にデータベースが同期されます。必要に応じてAPIをポーリングすることも可能です。または、コンソールを開いてすべてのセッション、すべてのシグナルを検査し、ケースを管理することもできます。
継続的に更新
グローバルリスト
カテゴリ
管轄区域
更新
単一エンドポイント・POST /v3/aml/
レベル1~4・RCA
マッチスコア・リスクスコア
毎日再スクリーニング・1ユーザーあたり年間$0.07
FATF・AMLD6・OFAC・MiCA
$ curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow_id": "wf_kyc_aml",
"vendor_data": "user-42"
}'{ "session_url": "verify.didit.me/..." }$ curl -X POST https://verification.didit.me/v3/aml/ \
-H "x-api-key: $DIDIT_API_KEY" \
-d '{
"entity_type": "person",
"full_name": "Carmen Espanola"
}'{ "status": "承認済み", "total_hits": 0 }# Didit AML Screening — integrate in 5 minutes
You are integrating Didit's Anti-Money Laundering (AML) Screening module into
<my_stack>. Follow these steps exactly. Every URL, header, and enum value
below is canonical — do not paraphrase or "improve" them.
AML Screening covers four lookup categories on every call:
- Sanctions (OFAC, EU, UN, HMT, and 1,300+ more global lists)
- Politically Exposed Persons (PEPs) — Levels 1 through 4 + RCAs
- Adverse Media — financial-crime news, court records, regulatory press
- Warnings and Regulatory Enforcement, Insolvency, SIP / SIE lists
The same module screens BOTH persons and companies — set the
"entity_type" parameter to "person" or "company".
## 1. Provision an account
- Sign up: https://business.didit.me (no credit card required).
- Or provision programmatically: POST https://apx.didit.me/auth/v2/programmatic/register/
(returns an API key bound to the workspace + application).
## 2. Two integration paths — pick one
### Path A — Workflow Builder (hosted UI / linked KYC)
Best when you want AML screened automatically as part of a verification
session. Run it alongside ID Verification, or chain it after a Know Your
Customer (KYC) check, or fire it on its own.
1. Create a workflow that contains the AML feature:
POST https://verification.didit.me/v3/workflows/
Authorization header: x-api-key: <your-api-key>
Body: workflow_label, features array with the entry
{ "feature": "AML" } (UPPERCASE — strict enum)
Optional per-workflow configuration:
- match_score_threshold (default 93)
- approve_risk_threshold (default 80)
- review_risk_threshold (default 100)
- include_adverse_media (default true; adds ~10s to the call)
- include_ongoing_monitoring (default false; +$0.07/user/year if on)
- sanctions_categories (subset of dataset enums)
2. Create a verification session for an end user:
POST https://verification.didit.me/v3/session/
Body: workflow_id (from step 1), vendor_data (your own user id),
expected_details { first_name, last_name, date_of_birth,
nationality, document_number }.
Response: session_url — redirect the user to it. If your workflow has
only the AML feature and you already collected the identity fields,
the session resolves server-side with no UI step.
3. Listen for webhook callbacks (see "Webhooks" below).
### Path B — Standalone server-to-server API
Best when you already have the screened entity's name + identifiers and
do not want a hosted session. Synchronous response, no webhook needed.
POST https://verification.didit.me/v3/aml/
Content-Type: application/json
Headers:
x-api-key: <your-api-key>
Body (person):
{
"entity_type": "person",
"full_name": "Carmen Espanola",
"date_of_birth": "1980-01-01",
"nationality": "ESP",
"document_number": "CAA000000",
"include_adverse_media": true,
"include_ongoing_monitoring": false
}
Body (company):
{
"entity_type": "company",
"full_name": "Acme Holdings Ltd",
"registration_number": "12345678",
"incorporation_country": "GBR",
"include_adverse_media": true
}
Response: JSON report with status, hits, scores, and a warnings array.
## 3. Webhooks (Path A and Path B ongoing monitoring)
- Register a webhook destination once via
POST https://verification.didit.me/v3/webhook/destinations/
Body: url, subscribed_events: ["session.verified", "session.review_started",
"session.declined", "aml.new_hit"]
- Response includes secret_shared_key — store it.
- Every webhook delivery carries an X-Signature-V2 header you MUST verify
before trusting the payload. HMAC-SHA256 verification MUST run against the raw body bytes (the raw payload as Didit sent it) BEFORE any JSON parsing — re-serialising the parsed body changes whitespace and key order, which invalidates the signature.Algorithm:
1. sortKeys(payload) recursively
2. shortenFloats (truncate trailing zeros after the decimal point)
3. JSON.stringify the result
4. HMAC-SHA256 with the secret_shared_key
5. Hex-encode, compare to the X-Signature-V2 header.
## 4. Reading the report (both paths return the same shape)
The aml object includes:
- status: "Approved" | "Rejected" | "In Review" | "Not Started"
- total_hits: integer
- score: number 0-100 (overall AML risk score; highest non-False-Positive
match risk score wins)
- screened_data: the inputs used for the lookup
- hits: array of matched entities. Each hit includes:
- id, url, caption (matched display name)
- datasets: which categories matched (PEP, PEP Level 1..4, Sanctions,
Adverse Media, Warnings and Regulatory Enforcement, Fitness and
Probity, SIP, SIE, Insolvency)
- match_score (0-100, identity confidence — is it the same person)
- risk_view.categories.score (0-100, entity risk if it IS a match)
- sanction_matches, pep_matches, warning_matches,
adverse_media_matches (typed arrays with list names, source URLs,
legal basis, sanction program, sanctioning authority, publication
dates, sentiment scores, etc.)
- warnings: Array<{ risk, log_type, short_description, long_description }>
Two-score system (the part most agents get wrong):
1. Match Score answers "is this the same person we are screening".
Below the match_score_threshold (default 93) the hit is a
False Positive and excluded from the final status. At or above the
threshold it is Unreviewed (a possible match).
2. Risk Score answers "how risky is this entity if it IS a match".
The session's final status comes from the highest risk score among
non-False-Positive hits:
- risk score below approve_risk_threshold (80) => Approved
- between approve and review => In Review
- above review_risk_threshold (100) => Declined
Warning codes you should branch on:
- POSSIBLE_MATCH_FOUND (informational — at least one hit above the
match threshold; review or auto-approve
per your risk policy)
- COULD_NOT_PERFORM_AML_SCREENING (KYC fields incomplete; session is held
in In Review and re-triggered automatically
once full_name, date_of_birth, issuing
state and document_number are populated)
## 5. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: AML, ID_VERIFICATION, LIVENESS, FACE_MATCH,
IP_ANALYSIS. The AML feature flag is AML, not AML_SCREENING.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Always verify webhook signatures before trusting payload data.
- Status casing matches exactly: "Approved", "Rejected", "In Review",
"Not Started" (title-cased, space-separated).
- entity_type is lowercase: "person" or "company".
## 6. Ongoing monitoring
- Toggle include_ongoing_monitoring=true on the workflow or the standalone
request to enroll the screened entity in continuous AML monitoring.
- Didit rescreens every enrolled entity DAILY against the full 1,300+
watchlist database (sanctions, PEPs, adverse media, warnings).
- A status change (new hit above review or decline threshold) fires the
aml.new_hit webhook, flips the session status to In Review or Declined,
and surfaces the hit in the Business Console with full audit trail.
- Billing: $0.07 per enrolled entity per year. Toggle off at any time
from the Business Console — billing prorates to the day.
## 7. Pricing reference (public)
- AML Screening (one-time, per person OR per company): $0.20 per check
- Ongoing AML Monitoring: $0.07 per enrolled entity per year
- Bundled inside a full KYC workflow (ID + Liveness + Face Match + IP):
$0.33 per session — AML is an add-on at the same $0.20 standalone price
- 500 free checks every month, forever, on every account.
## 8. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Test names: deterministic synthetic entities returned in sandbox
(Approved by default; canonical "PEP test name" returns an In Review
with a Wikidata PEP hit so you can exercise the review queue).
- Switch to live: flip the application environment toggle in the console.
When in doubt: https://docs.didit.me/core-technology/aml-screening/overview
月額$0。クレジットカード不要。
使った分だけお支払い。25以上のモジュール。モジュールごとの公開価格、月額最低料金なし。
カスタムMSA & SLA。大量利用や規制対象プログラム向け。
無料で開始 → チェック実行時のみ支払い → カスタム契約、SLA、データレジデンシーが必要な場合はエンタープライズプランへ。
Diditは、本人確認と不正対策のためのインフラです。私たちが自社製品を開発していたときに「こんなプラットフォームがあれば」と願ったものを実現しました。オープンで柔軟、そして開発者フレンドリーなので、ブラックボックスとしてではなく、スタックの真の構成要素として機能します。
単一のAPIで、個人の確認(KYC、顧客確認)、企業の確認(KYB、企業確認)、暗号資産ウォレットのスクリーニング(KYT、トランザクション確認)、およびリアルタイムのトランザクション監視をカバーします。このスタックは、以下の特徴を持つように構築されています。
その基盤となるのは、48以上の言語に対応する14,000以上のドキュメントタイプ、1,000以上のデータソース、そしてすべてのセッションで200以上の不正シグナルです。Diditのインフラは、すべてのセッションから動的に学習し、日々改善されています。
OFAC)、欧州連合、国連、英国HM Treasury、およびG20各国の制裁リスト。PEP(政治的要人)は4つのレベルでスクリーニングされます, PEP Level 1(国家元首、最高裁判所判事、中央銀行総裁)、PEP Level 2(国会議員、大使、軍事指導者)、PEP Level 3(中堅公務員、地方自治体)、PEP Level 4(親族および近親者 / RCA)。ネガティブメディア、Warnings and Regulatory Enforcement、Fitness and Probity、Insolvency、SIP(特別関心人物)、SIE(特別関心エンティティ)、およびお客様独自のカスタムリストも対象です。カタログは継続的に更新されます, 詳細はdocs.didit.me/core-technology/aml-screening/watchlist-database-aml-screeningをご覧ください。aml JSONオブジェクトが返されます。トップレベルのstatusはApproved、Rejected、In Review、Not Startedのいずれかです。オブジェクトには、total_hits、全体的なscore(0~100、偽陽性ではない最高リスクスコア)、使用された入力を反映するscreened_dataブロック、構造化されたriskコードを含むwarnings配列、およびhits配列が含まれます。各ヒットには、id、url、caption、datasets(一致したカテゴリ)、match_score(本人確認の信頼度0~100)、risk_view.categories.score(エンティティリスク0~100)、および型付きのサブ配列, sanction_matches、pep_matches、warning_matches、adverse_media_matches, が含まれ、リスト名、ソースURL、法的根拠、制裁当局、公開日、感情スコアが示されます。完全なリファレンスはdocs.didit.me/core-technology/aml-screening/report-aml-screeningをご覧ください。通常、エンドツーエンドの全フローは30秒未満で完了します, IDを手に取り、書類を撮影し、セルフィーを撮影すれば完了です。これは市場で最速です。従来のKYCプロバイダーでは、同じフローに90秒以上かかることが一般的です。
バックエンドでは、Diditはユーザーがセルフィーを完了した瞬間からウェブフックが発火するまでの時間を測定し、p99で2秒未満で結果を返します。モバイルキャプチャは、低速な電話やネットワーク向けに最適化されています。プログレッシブ画像圧縮、遅延SDKロード、そしてユーザーがウェブから開始した場合のQRコードによるデスクトップから電話へのワンタップハンドオフなどが含まれます。
match_score(0~100、デフォルトしきい値93)は、ヒットが実際に同一人物であるかを判断します, 名前の一致度60%、生年月日25%、国15%で重み付けされ、ゴールデンキーの書類番号によるオーバーライドでスコアを100に固定することも可能です。risk_score(0~100、デフォルト承認80 / レビュー100)は、一致した場合にそのエンティティがどれほど危険かを判断します, カテゴリ50%、国30%、犯罪記録20%で重み付けされます。マッチしきい値未満のヒットはFalse Positiveと分類され、最終的なステータス計算から除外されます。最終的なセッションステータスは、残りの偽陽性ではないヒットの中で最も高いリスクスコアを使用します。すべてのセッションは7つの明確なステータスのいずれかに分類されるため、お客様のコードは常に何をすべきかを知ることができます。
Approved, すべてのチェックに合格しました。ユーザーを次のステップに進めます。Declined, 1つ以上のチェックに失敗しました。ユーザーは、フロー全体を再実行することなく、特定の失敗したステップ(例:セルフィーの再撮影)を再提出できます。In Review, コンプライアンスレビューのためにフラグが立てられました。コンソールでケースを開き、すべてのシグナルを確認し、承認または拒否を決定します。In Progress, ユーザーはフローの途中にいます。Not Started, リンクは送信されましたが、ユーザーはまだ開いていません。長時間放置されている場合はリマインダーを送信します。Abandoned, ユーザーはリンクを開きましたが、時間内に完了しませんでした。再エンゲージするか、期限切れにします。Expired, セッションリンクの有効期限が切れました。新しいセッションを作成します。ステータス変更ごとに署名付きウェブフックが発火するため、お客様のデータベースは常に同期されます。中断および拒否されたセッションは無料です。
本番データは、デフォルトで欧州連合のAmazon Web Servicesで処理および保存されます。規制当局が代替リージョンを要求する管轄区域の場合、エンタープライズ契約で対応可能です。
あらゆる場所で暗号化。すべてのデータベース、オブジェクトストレージ、バックアップでAES-256による保存時暗号化。すべてのAPIコール、ウェブフック、ビジネスコンソールセッションでTransport Layer Security 1.3による転送時暗号化。生体認証データは、個別のカスタマーマスターキーで暗号化されます。
保持期間はお客様が管理できます。デフォルトの保持期間は無期限(無制限)ですが、アプリケーションごとに30日から10年の間で短縮設定することも可能です。また、ダッシュボードまたはAPIからいつでも個々のセッションを削除できます。
認証:SOC 2 Type 1(Type 2監査進行中)、ISO/IEC 27001:2022、iBeta Level 1 PAD、およびスペインのTesoro / SEPBLAC / CNMVからの公式認定により、Diditのリモート本人確認は対面確認よりも安全であることが証明されています。詳細レポートは/security-complianceをご覧ください。
Diditは、本人確認インフラにとって重要な規制にデフォルトで準拠しています。
詳細なメモ、すべての証明書、すべての規制当局からの書簡は/security-complianceをご覧ください。
3つの統合パス, お客様のスタックに合ったものをお選びください。
同じダッシュボード、同じ請求、成功ごとの同じ料金で、これら3つのパスすべてに対応します。ステップバイステップガイドはdocs.didit.me/integration/integration-promptをご覧ください。