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


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

フィッシング耐性・SIMスワップ対策済み
第二認証要素はユーザーの顔です。サインアップ時に登録された顔写真と1:1で照合されます。 ライブネス検出により、同一フレームでの印刷、リプレイ、マスク、 敵対的生成ネットワーク(GAN)攻撃をブロックします。エントリーレベルのAndroidでも2秒未満で 判定。認証あたり$0.10。毎月500回まで無料で検証できます。
ID、ライブネス、顔認証、制裁リスト、住所、年齢、電話番号、メールアドレス、カスタム質問など、必要なチェックを選択します。ダッシュボードでフローにドラッグするか、同じフローをAPIに投稿します。条件分岐やA/Bテストもコード不要で実行できます。
Web、iOS、Android、React Native、Flutter SDKでネイティブに組み込むか、ホストされたページにリダイレクトします。または、メール、SMS、WhatsAppなど、どこからでもユーザーにリンクを送信するだけです。あなたのスタックに合った方法を選んでください。
Diditは、カメラ、照明の指示、モバイルでの引き継ぎ、アクセシビリティをホストします。ユーザーがフローを実行している間、200以上の不正信号をリアルタイムでスコアリングし、すべてのフィールドを信頼できるデータソースと照合して検証します。2秒未満で結果が出ます。
リアルタイムの署名付きWebhookにより、ユーザーが承認、拒否、またはレビューに送られた瞬間にデータベースが同期されます。必要に応じてAPIをポーリングすることもできます。または、コンソールを開いてすべてのセッション、すべての信号を検査し、ケースを管理することも可能です。
Didit · 生体認証
送金を確認
顔認証で承認
Didit · 顔認証 1:1
登録済み
類似度
0.96
一致ライブ
Didit · 攻撃マトリックス
Didit · ステップアップトリガー
Didit · Webhook · X-Signature-V2
ペイロード
{
"session_id": "<uuid>",
"vendor_data": "user-42",
"status": "Approved",
"face": {
"status": "Approved",
"similarity_score": 0.96
}
}Didit · エコノミクス
$ curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-d '{
"workflow_id": "wf_bio_2fa",
"workflow_type": "biometric_authentication",
"vendor_data": "user-42",
// base64 reference selfie, ≤ 1MB (omit for liveness-only)
"portrait_image": "/9j/4AAQSkZJRgABAQE..."
}'{ "session_url": "verify.didit.me/..." }$ curl -X POST https://verification.didit.me/v3/face-match/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "image_a=@live.jpg" \
-F "image_b=@enrolled.jpg"{ "status": "承認済み", "similarity_score": 0.96 }You are integrating Didit's Biometric 2FA into <my_stack>. Replace SMS one-time-password (OTP) on sensitive flows — login from a new device, large-value transfer, settings change, account recovery — with a sub-2-second face match against the user's enrolled portrait. Cheaper than SMS. Phishing-resistant. SIM-swap-proof.
1. Enrol the user's portrait ONCE at sign-up via the standard Know Your Customer (KYC) session.
2. On every sensitive action, open a Biometric Authentication session that runs Passive Liveness + Face Match 1:1 against the stored portrait. Verdict in sub-2-seconds.
Pricing (public):
- Biometric Authentication: $0.10 per authentication (Sessions API)
- Standalone Face Match 1:1: $0.05 per match (server-to-server)
- First 500 verifications free every month, forever
PRE-REQUISITES
- Production API key from https://business.didit.me (sandbox key in 60s, no card).
- Webhook endpoint with Hash-based Message Authentication Code (HMAC) SHA-256 verification using the X-Signature-V2 header.
- The user has previously enrolled — either via a full KYC session (recommended; the portrait is stored automatically and never leaves Didit) or via a portrait you supply on each re-auth.
- A workflow_id from the Workflow Builder. The workflow MUST contain LIVENESS, and the session must be opened with workflow_type = "biometric_authentication" (or use a workflow that has FACE_MATCH and pass a portrait_image at session creation).
STEP 1 — Enrolment (one-time, at user sign-up)
Run a standard KYC session at sign-up. Didit stores the portrait (the face captured during the liveness step) as the user's enrolled template, bound to vendor_data.
POST https://verification.didit.me/v3/session/
Body:
{
"workflow_id": "<your KYC workflow>",
"vendor_data": "<your user id>"
}
No additional code — once the user passes KYC, their enrolled portrait is ready for every future re-auth.
STEP 2 — Re-authentication (on every sensitive action)
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<your biometric_authentication workflow>",
"workflow_type": "biometric_authentication",
"vendor_data": "<the same user id used at enrolment>",
"callback": "https://<your-app>/2fa/callback",
"metadata": {
"reason": "<login_new_device | high_value_txn | settings_change | account_recovery>",
"amount": "<optional, for large-value transfers>"
},
"portrait_image": "<base64 JPEG of the user's enrolment selfie, ≤ 1 MB — REQUIRED when the workflow has FACE_MATCH active; OMIT for liveness-only mode>"
}
Response: 201 Created with the hosted session_url. Redirect the user to it. The hosted UI:
- Opens the front camera
- Captures one passive frame
- Runs Liveness + Face Match 1:1 against the user's enrolled portrait
- Returns the verdict in sub-2-seconds
STEP 3 — Read the signed verdict on the webhook
Body (excerpted for a passing re-auth):
{
"session_id": "<uuid>",
"vendor_data": "<your user id>",
"status": "Approved",
"liveness": { "status": "Approved", "method": "PASSIVE", "score": 96 },
"face": {
"status": "Approved",
"similarity_score": 0.96
}
}
Verify X-Signature-V2 BEFORE trusting the body — HMAC SHA-256 of the raw bytes with your webhook secret.
Session status enum (exact case): Approved | Declined | In Review | Resubmitted | Expired | Not Finished | Kyc Expired | Abandoned.
Branch your application:
Approved → execute the action (sign in, release the transfer, save settings).
Declined → block the action, re-prompt with a higher-friction recovery path (support contact / KYC re-do).
In Review → hold; route to your operations queue.
Not Finished → user abandoned the capture; safe to re-prompt or fall back.
STEP 4 — Alternate path (server-to-server, when you already have the selfie)
If you already captured the selfie locally (native mobile SDK, in-app camera):
POST https://verification.didit.me/v3/face-match/
Headers:
x-api-key: <your api key>
Body (multipart/form-data):
image_a <the live selfie>
image_b <the enrolled portrait>
Response: similarity_score (0-1), status (Approved | Declined | In Review).
Use the standalone path only when you trust your client-side capture pipeline. For browser flows or any surface where the SDK is not embedded, always prefer the hosted session — Didit's liveness check is harder to defeat than a raw camera grab.
WEBHOOK EVENT NAMES
- Sessions: status changes flow through the standard session webhook.
- Always verify X-Signature-V2 on every payload.
CONSTRAINTS
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: LIVENESS, FACE_MATCH, ID_VERIFICATION, AML, IP_ANALYSIS, AGE_ESTIMATION.
- Method enum is UPPERCASE: PASSIVE, FLASHING, ACTIVE_3D.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Status casing matches exactly: Approved, Declined, In Review, Expired, Not Finished, Resubmitted, Kyc Expired, Abandoned.
- The biometric template is irreversible (a one-way hash) and stored on Didit's infrastructure. You never receive the raw template. Standard data-subject-deletion rules apply.
PRO TIPS
- Pair Biometric 2FA with Device & IP Analysis (bundled into the 200+ fraud-signal stack). A re-auth that originates from a brand-new device + a brand-new IP should always step up to face.
- For the strongest possible surface, swap method PASSIVE for ACTIVE_3D — a short motion challenge — on transfers above your operational risk threshold.
Read the docs:
- https://docs.didit.me/core-technology/biometric-auth/overview
- https://docs.didit.me/sessions-api/create-session
- 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は本人確認と不正対策のためのインフラストラクチャです。私たちが自社で製品を構築していたときに「こんなプラットフォームがあれば」と願ったものです。オープンで柔軟、そして開発者フレンドリーなので、単なるブラックボックスとしてではなく、お客様のスタックの真の構成要素として機能します。
1つのAPIで、個人の本人確認(KYC、顧客確認)、企業の本人確認(KYB、企業確認)、暗号資産ウォレットのスクリーニング(KYT、取引確認)、およびリアルタイムでの取引監視をカバーします。このスタックは以下を念頭に構築されています。
基盤となるフットプリント:14,000以上の文書タイプを48以上の言語で、1,000以上のデータソース、そしてすべてのセッションで200以上の不正シグナル。Diditインフラストラクチャは、すべてのセッションから動的に学習し、日々改善されています。
ネットワーク経由で送信されるコードではなく、ユーザーの顔を使用した第二要素認証です。第一要素はユーザーが知っているもの(パスワード、パスキー、マジックリンク)です。第二要素はユーザーがであるもの, 以前にユーザーが登録したポートレートと1対1で照合されるライブセルフィーです。
これは、アプリケーションフローにおけるSMSワンタイムパスワード(OTP)と同じ位置にありますが、コスト、セキュリティ、コンバージョンプロファイルが異なります。
4つのよく知られた攻撃手法によって破られます。米国連邦捜査局(FBI)と英国国家サイバーセキュリティセンター(NCSC)は、機密性の高いフローでのSMSの使用を避けるよう組織に指導するガイダンスを公開しています。
フルフローは通常、エンドツーエンドで30秒未満で完了します, IDを手に取り、書類を撮影し、セルフィーを撮影すれば完了です。これは市場で最速です。従来のKYCプロバイダーでは、同じフローで90秒以上かかることがよくあります。
バックエンドでは、Diditはユーザーがセルフィーを完了した瞬間からWebhookが発火する瞬間までを測定し、p99で2秒未満で結果を返します。モバイルキャプチャは、低速な電話やネットワーク向けに調整されています。プログレッシブ画像圧縮、遅延ソフトウェア開発キットのロード、ユーザーがウェブで開始した場合のQRコードを介したデスクトップから電話へのワンタップハンドオフなどです。
ほとんどのチームは、ユーザーの最初の本人確認(KYC)セッション中に登録を行います。ライブネスステップでキャプチャされたポートレートは、お客様のvendor_dataに紐付けられて保存され、その後のすべての再認証のテンプレートとして使用されます。
サインアップ時にKYCを実行しない場合でも、LIVENESS + FACE_MATCHのみを含むDiditワークフローに対して1回限りの登録セッションを実行できます。どちらのパスも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、およびDiditのリモート本人確認が対面での本人確認よりも安全であることを示すスペインのTesoro / SEPBLAC / CNMVからの公式証明書。詳細レポートは/security-complianceをご覧ください。
Diditは、本人確認インフラストラクチャにとって重要な規制当局に対し、デフォルトで準拠しています。
詳細なメモ、すべての証明書、すべての規制当局からの書簡は/security-complianceをご覧ください。
3つの統合パス, あなたのスタックに合うものをお選びください:
3つすべてで同じダッシュボード、同じ請求、成功ごとの従量課金制です。ステップバイステップガイドはdocs.didit.me/integration/integration-promptをご覧ください。
既存のワンタイムパスワードコールバック契約にドロップインするだけです。
workflow_type: "biometric_authentication"と、登録時に使用したvendor_dataを指定してPOST /v3/session/を実行します。session_urlにユーザーをリダイレクトします。X-Signature-V2ヘッダーを検証してから、ボディを信頼します。statusに基づいて分岐します, Approved(アクションを実行)、Declined(ブロック)、In Review(キューに入れる)、Not Finished(再プロンプト)。ほとんどのチームは、週末にSMS認証を顔認証に切り替えています。エージェントが貼り付け可能な完全なプロンプトは上記にあります。Model Context Protocol (MCP)サーバーは両方のインターフェースに対応しています。
顔認証1:1は、適度な外見の変化(顔の毛、メガネ、髪の色、照明)に対して堅牢です。認証ごとに返される類似性スコアは、モデルの信頼度を反映しています。
自動承認のしきい値を超えるユーザー(典型的なケース:劇的な体重変化、手術、長年の加齢)の場合、判定はIn Reviewとなり、運用キューにルーティングされます。標準的な回復パスは再登録セッションです。1回のKYCコールでポートレートが更新され、次回の認証では新しいテンプレートが使用されます。
固有性のカテゴリでは準拠しています。欧州銀行監督機構の強力な顧客認証に関する規制技術基準は、生体認証属性(あなた自身であること)を、他の2つのカテゴリ(知識または所有)のいずれかと組み合わせた場合に有効な第二要素として認識しています。
完全なPSD2強力な顧客認証フローには、生体認証2FAをユーザーのパスワード(知識)またはデバイスに紐付けられたセッション(所有)と組み合わせます。署名されたDiditの判定は、固有性要素の監査証拠となります。