免费
每月 $0。无需信用卡。
- 免费 KYC 套件(身份验证 + 被动活体检测 + 人脸匹配 + 设备与 IP 分析), 每月 500 次,永久有效
- 黑名单用户
- 重复检测
- 每次会话 200+ 欺诈信号
- Didit 网络中可重复使用的 KYC
- 案件管理平台
- 工作流构建器
- 公开文档、沙盒、SDK、MCP(模型上下文协议)服务器
- 社区支持


全球2,000多家组织信赖。

防钓鱼 · 防 SIM 卡互换
第二重认证是用户的面部,与他们在注册时录入的照片进行 1:1 匹配。 活体检测可有效抵御打印/重放/面具/生成对抗网络 (GAN) 攻击。 入门级安卓设备上,验证结果可在 2 秒内给出。每次认证 $0.10。每月免费 500 次验证。
选择您需要的检查项, 身份、活体、人脸匹配、制裁名单、地址、年龄、电话、电子邮件、自定义问题。在控制面板中将它们拖入流程,或通过我们的 API 发布相同的流程。支持条件分支、A/B 测试,无需代码。
通过我们的 Web、iOS、Android、React Native 或 Flutter SDK 进行原生嵌入。重定向到托管页面。或者直接通过电子邮件、短信、WhatsApp 等任何方式向用户发送链接。选择适合您技术栈的方式。
Didit 负责托管摄像头、灯光提示、移动设备切换和辅助功能。在用户进行流程时,我们实时评估 200 多个欺诈信号,并根据权威数据源验证每个字段。两秒内给出结果。
实时签名 Webhook 可在用户被批准、拒绝或发送审核时立即同步您的数据库。按需轮询 API。或者打开控制台检查每个会话、每个信号,并按您的方式管理案例。
Didit · 生物识别认证
确认转账
刷脸授权
Didit · 人脸比对 1:1
已注册
相似度
0.96
匹配实时
Didit · 攻击矩阵
Didit · 升级触发器
Didit · Webhook · X-Signature-V2
Payload
{
"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 是身份和欺诈基础设施, 这是我们自己构建产品时所希望拥有的平台:开放、灵活且对开发者友好,因此它可以真正成为您技术栈的一部分,而不是一个需要您围绕其集成的黑盒。
一个 API 涵盖了人员验证(KYC,了解您的客户)、企业验证(KYB,了解您的企业)、加密钱包筛选(KYT,了解您的交易)以及实时监控交易, 所有这些都建立在一个旨在实现以下目标的堆栈上:
其底层支持:14,000 多种文档类型,支持 48 种以上语言,1,000 多个数据源,以及每个会话的 200 多个欺诈信号。Didit 基础设施从每个会话中动态学习,并日益完善。
使用用户面部进行第二因素认证,而不是通过网络发送代码。第一因素是用户所知道的(密码、通行密钥、魔术链接)。第二因素是用户本身, 将实时自拍与用户之前注册的肖像进行 1:1 匹配。
它在您的应用程序流程中与短信一次性密码 (OTP) 处于相同位置,但具有不同的成本、安全性和转化率。
四种有据可查的攻击类型可以攻破它。美国联邦调查局 (FBI) 和英国国家网络安全中心 (NCSC) 都发布了指导意见,建议组织在敏感流程中避免使用短信。
整个流程通常在 30 秒内完成, 拿起身份证,拍摄证件,拍摄自拍,完成。这是市场上最快的速度。传统的 KYC 提供商完成相同流程通常需要超过 90 秒。
在后端,Didit 在 p99 下两秒内返回结果,从用户完成自拍到您的 webhook 触发。移动端捕获针对慢速手机和慢速网络进行了优化:渐进式图像压缩、延迟加载软件开发工具包,以及如果用户从网页端开始,通过二维码一键从桌面端切换到手机端。
大多数团队在用户最初的“了解您的客户 (KYC)”会话期间进行注册。活体检测步骤捕获的肖像会存储并绑定到您的 vendor_data,并用作后续每次重新认证的模板。
如果您在注册时未运行 KYC,则可以针对仅包含 LIVENESS + FACE_MATCH 的 Didit 工作流运行一次性注册会话。两种路径的成本均为一次性 $0.10,并且生成的模板可用于未来的每次认证。
每个会话都会进入七种明确状态之一,因此您的代码始终知道如何处理:
Approved, 所有检查通过。让用户继续。Declined, 一项或多项检查失败。您可以允许用户重新提交特定的失败步骤(例如,重新拍摄自拍),而无需重新运行整个流程。In Review, 标记为合规性审查。在控制台中打开案例,查看所有信号,决定批准或拒绝。In Progress, 用户正在流程中。Not Started, 链接已发送,用户尚未打开。如果长时间未打开,发送提醒。Abandoned, 用户打开了链接但未及时完成。重新引导或使其过期。Expired, 会话链接已过期。创建新会话。每次状态更改都会触发一个带签名的 webhook,因此您的数据库始终保持同步。放弃和拒绝的会话是免费的。
生产数据默认在欧盟的 Amazon Web Services 上处理和存储。企业合同可根据监管机构要求,申请在其他区域存储。
全面加密。 所有数据库、对象存储和备份均采用 AES-256 静态加密。所有 API 调用、webhook 和业务控制台会话均采用传输层安全协议 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。
三种集成方式,任选其一,适配您的技术栈:
所有三种方式均使用相同的仪表板、相同的计费和按成功付费的价格。分步指南请访问 docs.didit.me/integration/integration-prompt。
它是一个可直接用于您现有一次性密码回调契约的即插即用方案。
POST /v3/session/,其中包含 workflow_type: "biometric_authentication" 和您在注册时使用的相同 vendor_data。session_url。X-Signature-V2 标头。status 进行分支处理, Approved(执行操作)、Declined(阻止)、In Review(排队)、Not Finished(重新提示)。大多数团队在一个周末内就能将短信验证替换为面部验证。完整的代理可粘贴提示在上方;模型上下文协议 (MCP) 服务器支持两种界面。
面部 1:1 匹配对适度的外观变化(面部毛发、眼镜、发色、光照)具有很强的鲁棒性。每次认证返回的相似度分数反映了模型的置信度。
对于超出自动批准阈值的用户(典型情况:体重剧烈变化、手术、多年老化),结果将返回 In Review 并路由到您的运营队列。标准的恢复路径是重新注册会话, 一次 KYC 调用刷新肖像,下一次认证将使用新模板。
是的,符合固有性类别。欧洲银行管理局关于强客户认证的监管技术标准承认生物识别属性(您所拥有的特征)作为有效的第二要素,当与另外两个类别(知识或所有权)之一配对时。
对于完整的 PSD2 强客户认证流程,请将生物识别 2FA 与用户密码(知识)或设备绑定会话(所有权)配对。Didit 的签名裁决是固有性因素的审计证据。