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




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

防网络钓鱼 · 防 SIM 卡互换
第二个因素是用户的面部,与他们在注册时登记的肖像进行 1:1 匹配。 活体检测可阻止对同一帧的打印/重放/遮罩/生成对抗网络 (GAN) 攻击。在入门级 Android 设备上, 判断结果不到 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
负载
{
"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..."
}'portrait_image 运行 LIVENESS + FACE_MATCH。文档 →$ 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"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。
它是一个用于您现有一次性密码回调合同的即插即用组件。
workflow_type: "biometric_authentication" 和您在注册时使用的相同 vendor_data 调用 POST /v3/session/。session_url。X-Signature-V2 标头。status 进行分支 — Approved(执行操作)、Declined(阻止)、In Review(排队)、Not Finished(重新提示)。大多数团队在一个周末内将短信替换为面部识别。完整的可供代理粘贴的提示在上方;Model Context Protocol (MCP) 服务器支持两种界面。
人脸匹配 1:1 对适度的外观变化(面部毛发、眼镜、发色、光照)具有鲁棒性。每次认证返回的相似度分数反映了模型的置信度。
对于超出自动批准阈值的用户(典型情况:体重剧烈变化、手术、多年老化),验证结果返回 In Review 并路由到您的操作队列。标准恢复路径是重新注册会话——一次 KYC 调用刷新肖像,下一次认证使用新模板。
是的,对于固有性类别。欧洲银行管理局关于强客户认证的监管技术标准承认生物识别属性(您是什么)作为有效的第二因素,当与另外两个类别(知识或拥有)之一配对时。
对于完整的 PSD2 强客户认证流程,将生物识别双因素认证与用户的密码(知识)或设备绑定的会话(拥有)配对。签名的 Didit 验证结果是固有性因素的审计证据。