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


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

攻撃者の手口
クレデンシャルスタッフィング、SIMスワップ、セッションクッキー盗難による攻撃は、 パスワードやワンタイムコードを迂回します。これらの攻撃に対して、 Diditのステップアップ認証を導入しましょう。1コールあたり$0.10、2秒未満で判定、毎月500回まで無料です。
本人確認、ライブネス、顔照合、制裁リスト、住所、年齢、電話番号、メールアドレス、カスタム質問など、必要なチェック項目を選択します。ダッシュボードでフローにドラッグ&ドロップするか、同じフローをAPIにPOSTします。条件分岐やA/Bテストもコード不要で実行できます。
Web、iOS、Android、React Native、Flutter SDKでネイティブに組み込むか、ホストされたページにリダイレクトします。または、メール、SMS、WhatsAppなど、どこからでもユーザーにリンクを送信するだけです。あなたのスタックに合った方法を選んでください。
Diditがカメラ、照明の指示、モバイル連携、アクセシビリティをホストします。ユーザーがフローを実行している間、200以上の不正信号をリアルタイムでスコアリングし、すべてのフィールドを信頼できるデータソースと照合して検証します。2秒未満で結果が出ます。
リアルタイム署名済みWebhookにより、ユーザーの承認、却下、またはレビューへの送付が決定された瞬間にデータベースを同期します。必要に応じてAPIをポーリングしたり、コンソールを開いてすべてのセッション、すべてのシグナルを検査し、ケースを自由に管理できます。
Didit · ステップアップポリシー
Didit · 生体認証
ステップ 2 / 2
確認のため静止してください
Didit · 顔認証 1:1
サインアップ
ステップアップ
Didit · パッシブ・ライブネス
Didit · デバイス&IP分析
Didit · Webhook · X-Signature-V2
{
"session_id": "abc-…",
"vendor_data": "user-42",
"status": "Approved",
"liveness": { "status": "Approved" },
"face": { "status": "Approved",
"similarity_score": 0.94 }
}$ 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_ato_step_up",
"vendor_data": "user-42",
"metadata": { "trigger": "high_value_transfer" },
// base64 KYC enrolment selfie, ≤ 1MB
"portrait_image": "/9j/4AAQSkZJRgABAQE..."
}'{ "session_url": "verify.didit.me/..." }// X-Signature-V2 verified upstream
if (payload.status === "承認済み") {
unblockAction(payload.vendor_data);
} else if (payload.status === "拒否済み") {
logWarnings(payload.liveness.warnings);
blockAndAlert(payload.vendor_data);
}ステータス: 承認済み · 拒否済み · レビュー中 · 未完了You are integrating Didit account-takeover defence into an application that already has the user signed in. Your job: when a sensitive action fires (large transfer, password reset, payout to a new destination, new-device login, geo anomaly), gate it on a Didit biometric step-up. One API call. One signed webhook. Three branches.
WHY THIS SHAPE
- Credential stuffing, SIM-swap, and stolen-session-cookie attacks all walk past passwords and SMS one-time codes. A face check at the moment of the sensitive action does not.
- Didit runs Passive Liveness (the user is alive, present, not a deepfake) plus 1:1 Face Match against the portrait captured at sign-up. A stolen selfie cannot pass — the comparison target is locked to the original enrollment.
- $0.10 per step-up (Biometric Authentication module) + $0.03 IP pre-check (optional) = around $0.13 per event. Sub-two-second verdict on entry-level Android. 500 verifications free every month.
PRE-REQUISITES
- Production API key from https://business.didit.me (sandbox key in 60 seconds, no credit card).
- A webhook endpoint with HMAC SHA-256 verification of the X-Signature-V2 header using your webhook secret.
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. - A Workflow Builder workflow that bundles Passive Liveness + Face Match 1:1 (with the user's stored sign-up portrait as the comparison target). Optionally compose Device & IP Analysis ahead of the step-up to pre-gate the check.
- Persist the user's sign-up portrait — either base64 on your side, or rely on Didit's stored enrollment via vendor_data lookup.
STEP 1 — Decide WHEN to step up (your code, not Didit's)
Run your usual fraud signals. Common triggers worth a biometric step-up:
- Wire / crypto transfer above the user's daily limit
- Password / email reset on a session less than 24h old
- Payout to a bank account or wallet seen for the first time
- Login from a new device or new country
- Velocity anomaly — N actions of type T within window W
Cheap pre-check (optional, ~100ms, $0.03):
- Score the user's IP via Device & IP Analysis. If the IP is a residential trusted address with a low risk score AND the device fingerprint matches the user's trusted device, skip the step-up. Otherwise run Step 2.
STEP 2 — Create a biometric step-up session
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<wf id bundling Passive Liveness + Face Match 1:1>",
"vendor_data": "<your user id, max 256 chars>",
"callback": "https://<your-app>/ato/step-up/callback",
"metadata": {
"trigger": "high_value_transfer",
"action_id": "<your internal action reference>"
},
"portrait_image": "<base64 JPEG of the user's stored sign-up portrait, ≤ 1 MB — REQUIRED when the workflow has FACE_MATCH active; the step-up matches the new live selfie against this stored reference>"
}
Response: 201 Created with a hosted session URL. Redirect the user there inline (or open it in a webview / Didit mobile SDK). The action stays BLOCKED on your side until the signed webhook lands.
STEP 3 — Read the signed webhook on completion
Didit POSTs the decision to your callback. Verify X-Signature-V2 (HMAC SHA-256 of the raw request body using your webhook secret) BEFORE reading the JSON.
Payload (excerpted):
{
"session_id": "<uuid>",
"vendor_data": "<your user id>",
"status": "Approved",
"liveness": { "status": "Approved" },
"face": { "status": "Approved", "similarity_score": 0.94 },
"ip_analysis": { "status": "Approved", "score": 11 }
}
Session status enum (exact case, Title Case With Spaces): Approved | Declined | In Review | Resubmitted | Expired | Not Finished | Kyc Expired | Abandoned.
STEP 4 — Branch the original action on status
Approved → unblock the sensitive action. Log session_id + similarity score on the audit trail.
In Review → hold the action, route to a human review queue.
Declined → block the action, log liveness warnings (mask / deepfake / replay / morph), alert the user.
Not Finished → invite the user to retry with a fresh session URL.
Expired → resend the link; the original session has timed out.
Abandoned → the user closed the flow before completing; resend the link.
STEP 5 — (Optional) Pull the full decision payload
GET https://verification.didit.me/v3/session/{session_id}/decision/
Headers:
x-api-key: <your api key>
Returns the same payload as the webhook plus the structured signals (liveness warnings, face-match similarity, IP / device flags). Use for analyst review.
WEBHOOK EVENT NAMES
- Sessions: standard session webhook (one endpoint, status field tells you where in the lifecycle).
- Verify X-Signature-V2 (HMAC SHA-256) on every payload.
CONSTRAINTS
- Session statuses use Title Case With Spaces (Approved, In Review). Never use UPPER_SNAKE_CASE for session verdicts — that's the Transactions API and lives in a different surface.
- 1:1 face match's comparison target is the user's STORED sign-up portrait, not a freshly captured one. A stolen selfie cannot pass.
- iBeta Level 1 Presentation Attack Detection (PAD) certified against the full ISO/IEC 30107-3 catalogue — print, replay, paper / silicone / latex mask, deepfake, morph.
- The Workflow Builder is where you choose the modules in the step-up — change them in the console without redeploying.
- 200+ fraud signals are surfaced on every session at no extra cost — read them off the decision payload, don't re-query.
Read the docs:
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/core-technology/biometric-auth/overview
- https://docs.didit.me/core-technology/ip-analysis/overview
- https://docs.didit.me/integration/webhooks
Start free at https://business.didit.me — sandbox key in 60 seconds, 500 verifications free every month, no credit card.月額$0。クレジットカード不要。
使った分だけお支払い。25以上のモジュール。モジュールごとの公開価格、月額最低料金なし。
カスタムMSA & SLA。大量利用や規制対象プログラム向け。
無料で開始 → チェック実行時のみ支払い → カスタム契約、SLA、データレジデンシーが必要な場合はエンタープライズプランへ。
Diditは、本人確認と不正対策のためのインフラです。私たちが自社でプロダクトを開発していた時に「こんなプラットフォームがあれば」と願ったものを実現しました。オープンで柔軟、そして開発者に優しいため、ブラックボックスとしてではなく、お客様のスタックの一部として機能します。
単一のAPIで、個人の確認(KYC、顧客確認)、企業の確認(KYB、企業確認)、暗号資産ウォレットのスクリーニング(KYT、トランザクション確認)、およびリアルタイムのトランザクション監視をカバーします。このスタックは以下の特長を備えています。
基盤となるフットプリント:14,000以上のドキュメントタイプ、48以上の言語、1,000以上のデータソース、そして全セッションで200以上の不正シグナルを検出。Diditのインフラは、すべてのセッションから動的に学習し、日々進化しています。
アカウント乗っ取り(ATO)は、攻撃者が正規ユーザーのアカウントを乗っ取ることで発生します。通常、盗まれた認証情報、ハイジャックされたセッションクッキー、またはワンタイムパスワード(OTP)を傍受するSIMスワップによって行われます。そこから、ウォレットの資金を抜き取ったり、資金を移動させたり、支払い詳細を変更したり、メールをリセットして正規の所有者を締め出したりします。
この攻撃は、パスワードがすでに正しいのでパスワード認証をすり抜けます。攻撃者が電話番号を制御しているため、ショートメッセージサービス(SMS)コードもすり抜けます。防御策は、攻撃者が持っていないもの、つまり正規ユーザーの顔を使って、行動の瞬間を中断することです。
SIMスワップ詐欺によって、ショートメッセージサービス(SMS)コードが攻撃者の手に渡ってしまうからです。攻撃者はキャリアを説得して被害者の電話番号を新しい加入者識別モジュール(SIM)にポートさせ、それ以降、銀行が送信するすべてのコードは攻撃者の電話に届きます。
2026年のフィッシングキットもコードをリアルタイムでプロキシします。ユーザーが偽のページにコードを入力すると、キットがそれを実際のサイトにリプレイし、セッションが開かれます。SMSはチャネルごとに単一の共有シークレットを提供しますが、生体認証はカメラの前の人間に紐付けられたアクションごとの証明を提供します。
通常、フロー全体は30秒未満で完了します, 身分証明書を手に取り、書類を撮影し、セルフィーを撮影すれば完了です。これは市場で最速です。従来のKYCプロバイダーでは、同じフローで通常90秒以上かかります。
バックエンドでは、Diditはユーザーがセルフィーを完了した瞬間からWebhookが発火するまで、p99で2秒未満で結果を返します。モバイルキャプチャは、低速な電話やネットワーク向けに最適化されています。プログレッシブ画像圧縮、遅延SDKロード、そしてユーザーがウェブから開始した場合のQRコードによるデスクトップから電話へのワンタップハンドオフなどです。
サインアップは、ユーザーの本人情報を初めて取得するものです。政府発行の身分証明書、光学文字認識(OCR)、パッシブ・ライブネス、そして登録時のベースラインとなるポートレートが含まれます。これは一度きりの、重いフローです。
ステップアップは、軽量で繰り返し可能なバージョンです。新しいセルフィーに対して同じライブネスエンジンが実行され、顔認証1:1が新しいセルフィーと保存されたサインアップ時のポートレートを比較します。身分証明書もOCRも不要です。2秒未満で、1セッションあたり$0.10です。
すべてのセッションは7つの明確なステータスのいずれかに分類されるため、お客様のコードは常に何をすべきかを知ることができます。
Approved, すべてのチェックに合格しました。ユーザーを次に進めます。Declined, 1つ以上のチェックに失敗しました。ユーザーに特定の失敗したステップ(例:セルフィーの再撮影)を再提出させることができます。フロー全体を再実行する必要はありません。In Review, コンプライアンスレビューのためにフラグが立てられました。コンソールでケースを開き、すべてのシグナルを確認し、承認または拒否を決定します。In Progress, ユーザーはフローの途中にいます。Not Started, リンクが送信されましたが、ユーザーはまだ開いていません。長時間放置されている場合はリマインダーを送信します。Abandoned, ユーザーはリンクを開きましたが、時間内に完了しませんでした。再エンゲージするか、期限切れにします。Expired, セッションリンクの有効期限が切れました。新しいセッションを作成してください。ステータスが変更されるたびに署名付きWebhookが発火するため、お客様のデータベースは常に同期されます。中断および拒否されたセッションは無料です。
本番データは、デフォルトでAmazon Web Services上の欧州連合内で処理および保存されます。エンタープライズ契約では、規制当局が要求する管轄区域のために代替リージョンをリクエストできます。
あらゆる場所で暗号化。すべてのデータベース、オブジェクトストレージ、バックアップでAES-256による保存時暗号化。すべてのAPIコール、Webhook、ビジネスコンソールセッションで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をご覧ください。
ステップアップの前にデバイス&IP分析を構成します。1チェックあたり$0.03、100ミリ秒未満で、0〜100のリスクスコアに加えて、仮想プライベートネットワーク(VPN)、プロキシ、The Onion Router(Tor)、データセンター、国、自律システム番号(ASN)のフラグを返します。
ネットワークがクリーン(住宅用インターネットサービスプロバイダー(ISP)、信頼できるデバイスフィンガープリント、国変更なし)に見える場合は、顔認証をスキップします。スコアが高い場合やフラグが立つ場合は、ステップアップを実行します。これにより、実際に必要なイベントに生体認証の予算を集中させることができます。
2つの項目があります。
完全にスクリーニングされた機密性の高いアクション1回あたり約$0.13です。すべてのアカウントで毎月最初の500回の認証は無料です。ほとんどのチームは、最初の数週間はこの無料枠内でステップアップ認証の量をまかなえるでしょう。
最低料金、年間契約、シートごとの料金はありません。
このレシピは、価値の高いアクションを扱うあらゆるチームに適用できます。一般的なライブパターンは以下の通りです。
同じワークフロービルダー、異なるトリガー, 1つの統合、1つの料金体系です。