跳到主要内容
Didit 融资 750 万美元,打造身份与欺诈基础设施
Didit
电话验证

验证任何电话
在他们接听的任何渠道。

通过短信、WhatsApp、Telegram、RCS 或语音发送一次性验证码, 无论用户实际使用哪个渠道。渠道间自动回退,每次呼叫均进行运营商风险评分。起价 $0.03 加运营商费用。

投资方
Y CombinatorRobinhood Ventures
Firecrawl
Slash
Crnogorski Telekom
UCSF Neuroscape
Bit2Me
Shiply

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

Didit 电话验证, 短信 / WhatsApp / Telegram / RCS 一次性验证码流程。

五种渠道

短信。WhatsApp。Telegram。
RCS。语音。

一个模块,五种投递方式。我们会跨渠道重试,直到验证码送达, 对每次呼叫进行 SIM 卡互换和运营商风险评分,并按 $0.03 加 运营商费用计费, 无论哪种方式,工作流程都相同。

工作原理

从注册到验证用户,仅需四步。

  1. 步骤 01

    创建工作流程

    选择您需要的验证项, 身份、活体、人脸匹配、制裁名单、地址、年龄、电话、邮箱、自定义问题。在控制台中将它们拖入流程,或通过我们的 API 发布相同的流程。支持条件分支、A/B 测试,无需编写代码。

  2. 步骤 02

    集成

    通过我们的 Web、iOS、Android、React Native 或 Flutter SDK 进行原生嵌入。重定向到托管页面。或者直接通过电子邮件、短信、WhatsApp 等任何方式向用户发送链接。选择最适合您技术栈的方式。

  3. 步骤 03

    用户完成流程

    Didit 负责托管摄像头、灯光提示、移动端切换和辅助功能。在用户进行流程时,我们实时评估 200 多个欺诈信号,并根据权威数据源验证每个字段。两秒内即可获得结果。

  4. 步骤 04

    接收结果

    实时签名 Webhook 可确保用户通过、拒绝或发送审核后,您的数据库立即同步。按需轮询 API。或者打开控制台检查每个会话、每个信号,并按您的方式管理案例。

专为开发者打造 · 致力于防欺诈 · 开放式设计

六大功能。一个功能标志。PHONE

所有功能都在同一个模块中切换。没有升级套餐,没有单独计划,没有附加调用。您可以在控制台中按工作流启用它们,或在 API 调用中内联传递。
01 · 渠道

五种交付渠道。一个功能标志。

短信、WhatsApp、Telegram、RCS 和语音, 所有这些都在同一个模块和工作流中。当政策要求时(监管强制短信、巴西和印度等 WhatsApp 优先市场)固定渠道,或者让我们选择最便宜的交付方式。
一个功能标志 · 五个通道功能:PHONE
  • SMS默认
  • WhatsApp巴西 / 印度 / 墨西哥
  • Telegram欧盟
  • RCS安卓
  • 语音回退
02 · 路由

当一个渠道失败时,自动回退到其他渠道。

运营商短信拦截、高费率国家和静默失败都会自动绕过。我们会在下一个可交付渠道重试,无需您修改代码,并告知您实际交付的渠道。
自动通道路由POST /v3/phone/send/
1SMS运营商拦截
2WhatsApp已送达
verification_methodwhatsapp
03 · 覆盖

全球电信覆盖。运营商感知交付。

每个国家/地区都有多运营商集成,路由根据当地习惯进行调整, WhatsApp 在巴西、印度和墨西哥领先,Telegram 和 RCS 在欧盟领先,短信在美国领先。国家、运营商和号码类型自动检测。
04 · 欺诈信号

不仅仅是一次性验证码。每次调用都包含运营商风险。

每次验证都会返回运营商名称和类型(移动、固话、VoIP),标记一次性号码和虚拟号码,并明确警告高风险、重复或黑名单号码。根据风险类别决定、审核或批准。
05 · 转化率

仅短信会流失用户。多渠道可留住他们。

当短信失败时, 运营商过滤、漫游、盲区、交付率下降, 单渠道提供商会让用户盯着一个永远收不到的验证码。我们会在下一个环节恢复他们,并报告哪个渠道交付了,以便您可以使用真实数据调整路由。
完成率 · 30 天滚动越高越好
仅限短信58%
+ WhatsApp79%
+ 语音回退93%
示意性, 仅供参考,非研究数据。
06 · 定价

按消息付费。起价 $0.03 加运营商费用。

每次验证 $0.03,加上国家和渠道运营商费用,无加价。您只需在消息发送成功时付费, 交付前的放弃不收取任何费用。
按消息计费低至 $0.03
  • 美国SMS$0.03
  • 巴西WhatsApp$0.04
  • 印度WhatsApp$0.05
仅按发送消息量付费。
集成

两个端点。相同的 JSON。相同的价格。

当您希望我们处理号码输入、验证码 UX 和重发时,选择托管流程。当您拥有 UX 控制权时,选择独立 API。两者都返回相同的报告。
POST /v3/session/托管 UI
$ 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_phone_otp",
    "vendor_data": "user-42"
  }'
201已创建{ "session_url": "verify.didit.me/..." }
我们提供电话号码输入、OTP 用户体验、重发和渠道路由。文档 →
POST /v3/phone/send/服务器到服务器
$ curl -X POST https://verification.didit.me/v3/phone/send/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+14155552671"
  }'
200OK{ "status": "sent", "channel": "sms" }
然后使用 OTP POST /v3/phone/check/ 以获取完整报告。文档 →
代理就绪集成

一键部署电话验证。

将以下代码块粘贴到 Claude Code、Cursor、Codex、Devin、Aider 或 Replit Agent 中。填写您的技术栈。代理将配置 Didit,创建电话验证工作流,连接 webhook,并完成部署。
didit-integration-prompt.md
# Didit Phone Verification — integrate in 5 minutes

You are integrating Didit's Phone Verification module into <my_stack>.
Follow these steps exactly. Every URL, header, and enum value below is
canonical — do not paraphrase or "improve" them.

## 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)
Best when you want Didit to handle phone collection, country prefix UX,
channel routing, OTP entry, resend buttons, mobile/desktop handoff, and
accessibility for you.

1. Create a workflow that contains the PHONE feature:
   POST https://verification.didit.me/v3/workflows/
   Authorization header:  x-api-key: <your-api-key>
   Body: workflow_label, features array with the single entry
         { feature: "PHONE" }   (UPPERCASE — strict enum)
   Optional config: preferred_channel ("SMS" | "WHATSAPP" | "TELEGRAM" |
   "RCS" | "VIBER" | "CALL"), code_validity_seconds, max_code_attempts
   (default 2), max_resend_requests_per_24h (default 2).

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),
         optional contact_details.phone in E.164 format
         (e.g. "+14155552671") to pre-fill and lock the number.
   Response: session_url — redirect the user to it.

3. Listen for webhook callbacks (see "Webhooks" below).

### Path B — Standalone server-to-server API
Best when you already own the phone-entry UX (mobile SDK, native
onboarding app, reseller pipeline) and want Didit to handle OTP delivery
+ risk scoring only. Two endpoints, called in sequence:

Step 1 — Send the code:
POST https://verification.didit.me/v3/phone/send/
Content-Type: application/json
Body fields:
  - phone_number  (required, string, E.164 format e.g. "+14155552671")
  - channel       (optional — "SMS" | "WHATSAPP" | "TELEGRAM" | "RCS" |
                   "VIBER" | "CALL". Omit to let Didit pick the best
                   available channel for the destination country and
                   carrier — automatic fallback routing.)
  - vendor_data   (optional, your user id for cross-session linkage)

Step 2 — Check the code:
POST https://verification.didit.me/v3/phone/check/
Content-Type: application/json
Body fields:
  - phone_number  (required, same E.164 number)
  - code          (required, the OTP the user typed)
  - vendor_data   (optional, same user id used in Step 1)

Response: JSON report — status, verification_method (the channel that
actually delivered), carrier object, is_disposable, is_virtual, warnings
array.

## 3. Channel routing — how the automatic fallback works
When channel is omitted on /v3/phone/send/, Didit picks the cheapest
+ most-deliverable channel for the destination:
  - SMS where deliverable and lowest cost (most countries)
  - WhatsApp in BR / IN / MX and other WhatsApp-dense markets
  - Telegram / RCS / Viber where carrier-side SMS is blocked or premium
  - CALL (voice OTP) as last-resort fallback when text channels fail
Each retry attempt may switch channels — the final delivery channel is
returned as verification_method in the report.

## 4. Webhooks (Path A only — Path B returns synchronously)
- 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"]
- 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.

## 5. Reading the report (both paths return the same phone object)
- status: "Approved" | "Declined" | "In Review" | "Not Finished"
- phone_number_prefix: country prefix in international format ("+34")
- phone_number: subscriber number without the prefix
- full_number: full E.164 string ("+34600600600")
- country_code: ISO 3166-1 alpha-2 ("ES")
- country_name: full country name
- carrier: { name, type: "mobile" | "landline" | "voip" | "unknown" }
- is_disposable: boolean — temporary or throwaway number
- is_virtual: boolean — VoIP or virtual provider
- verification_method: the channel that actually delivered the code
  ("sms" | "whatsapp" | "viber" | "telegram" | "call")
- verification_attempts: number of code-entry tries
- verified_at: ISO 8601 timestamp
- warnings: Array<{ risk, log_type, short_description, long_description }>

Auto-decline risks (always enforced by Didit, not configurable):
- VERIFICATION_CODE_ATTEMPTS_EXCEEDED
- HIGH_RISK_PHONE_NUMBER
- PHONE_NUMBER_IN_BLOCKLIST

Configurable risks (action per workflow — Decline, Review, or Approve):
- DISPOSABLE_NUMBER_DETECTED
- VOIP_NUMBER_DETECTED
- DUPLICATED_PHONE_NUMBER

## 6. Attempt limits (defaults — overridable per workflow)
- Max code-entry attempts: 2 per session
- Max resend requests: 2 per phone number per 24 hours
- Code validity: 5 minutes from send
Hitting either limit fires VERIFICATION_CODE_ATTEMPTS_EXCEEDED and
auto-declines the session.

## 7. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: PHONE, ID_VERIFICATION, LIVENESS, FACE_MATCH,
  AML, IP_ANALYSIS.
- Channel enum is UPPERCASE on input ("SMS", "WHATSAPP", "TELEGRAM",
  "RCS", "VIBER", "CALL") and lowercase on output ("sms", "whatsapp",
  "telegram", "rcs", "viber", "call").
- All phone numbers go in and come out as E.164 strings — including
  the leading "+" and country prefix.
- 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", "Declined", "In Review",
  "Not Finished" (title-cased, space-separated).

## 8. Pricing reference (public)
- Didit fee: $0.03 per verification (the cheapest channel; some
  channels and countries cost more — see didit.me/pricing for the
  per-country, per-channel table).
- Carrier fee: variable by country and channel, billed as a
  pass-through with no Didit markup.
- You only pay when a message is SENT. If the user abandons before
  delivery, you are not charged.

## 9. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Sandbox numbers: deterministic E.164 numbers return Approved by default;
  trigger Declined with the canonical "high-risk" sandbox number.
- Switch to live: flip the application's environment toggle in console.

When in doubt: https://docs.didit.me/core-technology/phone-verification/overview
合规性设计

一键开启新国家/地区业务。 我们为您解决难题。

我们负责设立当地子公司、获取许可证、进行渗透测试、获得认证,并与所有新法规保持一致。要在新国家/地区发布验证服务,只需轻点开关。已覆盖220多个国家/地区,每个季度进行审计和渗透测试, 是唯一一个被欧盟成员国政府正式认定比线下验证更安全的身份提供商。
阅读安全与合规性档案
欧盟金融沙盒
Tesoro · SEPBLAC · BdE
Jugendschutz geprüft
FSM · JMStV §4(2) · 2026
ISO/IEC 27001
信息安全 · 2026
SOC 2 · Type I
AICPA · 2026
iBeta Level 1 PAD
NIST / NIAP · 2026
GDPR
EU 2016/679
DORA
EU 2022/2554
MiCA
EU 2023/1114
AMLD6 · eIDAS 2.0
原生符合欧盟标准

数据证明

数据证明
  • 0
    交付渠道, 短信、WhatsApp、Telegram、RCS、语音。
  • 自动
    渠道路由, 我们选择成本最低的可用路径。
  • 起价 $0.03
    每次验证,加上直通运营商费用, 无加价。
三个层级,一份价目表

免费开始。按使用量付费。可扩展至企业级。

每月 500 次免费验证,永久有效。生产环境按量付费。企业版提供定制合约、数据驻留和 SLA (Service Level Agreements)。
免费

免费

每月 $0。无需信用卡。

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

按用量计费

按实际用量付费。25+模块。公开的模块定价,无每月最低费用。

  • 完整KYC $0.33(身份+生物识别+IP/设备)
  • 10,000+ AML数据集, 制裁、PEP、负面媒体
  • 1,000+ 政府数据源用于数据库验证
  • 交易监控 $0.02/笔交易
  • 实时KYB $2.00/家企业
  • 钱包筛选 $0.15/次检查
  • 白标验证流程, 您的品牌,我们的基础设施
企业版

企业版

定制MSA和SLA。适用于大批量和受监管项目。

  • 年度合同
  • 定制MSA、DPA和SLA
  • 专属Slack和WhatsApp频道
  • 按需人工审核员
  • 经销商和白标条款
  • 独家功能和合作伙伴集成
  • 指定CSM、安全审查、合规支持

免费开始 → 仅在检查运行时付费 → 解锁企业版以获取定制合约、SLA 或数据驻留。

FAQ

常见问题

Didit 是什么?

Didit 身份和欺诈基础设施, 一个我们自己在构建产品时梦寐以求的平台:开放、灵活、对开发者友好,因此它能真正融入您的技术栈,而不是一个需要您围绕其进行集成的黑盒。

一个 API 即可覆盖个人验证(KYC了解您的客户)、企业验证(KYB了解您的业务)、加密钱包筛选(KYT了解您的交易)以及实时交易监控, 所有这些都构建在以下技术栈之上:

  • 快速, 每次会话的 p99 响应时间低于 2
  • 可靠, 已在 220 多个国家/地区 1,500 多家公司中投入生产
  • 安全, 获得 SOC 2 Type 1、ISO 27001 认证,原生支持 GDPR,并经西班牙金融监管机构正式证明比线下人工验证更安全

底层支持:14,000 多种文档类型,支持 48 种以上语言1,000 多个数据源,以及每次会话的 200 多个欺诈信号。Didit 基础设施通过每次会话动态学习,并日益完善。

Didit 支持哪些交付渠道?
五种渠道,全部在同一个 PHONE 功能标志下。短信是大多数国家/地区的默认和成本最低的渠道。在巴西、印度和墨西哥等 WhatsApp 普及的市场使用 WhatsApp。在运营商短信被阻止或价格昂贵的地方使用 Telegram 富媒体通信服务 (RCS)。当文本渠道失败时,语音(电话)作为最后的备用方案。当政策要求时,可以为每个工作流指定一个渠道,或者在 POST /v3/phone/send/ 中省略 channel,让 Didit 选择最便宜的可交付路径。实际交付的渠道将作为 verification_method 在报告中返回。每个国家/地区的完整可用性请查阅 docs.didit.me/core-technology/phone-verification/overview
响应格式是怎样的?
会话决策端点上的单个 phone JSON 对象,或从 POST /v3/phone/check/ 内联返回。顶级 status ApprovedDeclinedIn Review Not Finished 之一。该对象还包括 phone_number_prefixphone_numberfull_number (E.164)、country_code (ISO 3166-1 alpha-2)、country_name、一个 carrier 块(nametype mobilelandlinevoip unknown)、用于临时或一次性号码的 is_disposable 标志、用于 VoIP 和虚拟提供商的 is_virtual 标志、verification_method(交付渠道, smswhatsapptelegramrcsvibercall)、verification_attemptsverified_at(ISO 8601 时间戳)和一个 warnings 数组。完整参考请查阅 docs.didit.me/core-technology/phone-verification/report-phone-verification
我的终端用户验证速度有多快?

整个流程通常在30秒内完成, 拿起身份证件,拍摄证件,自拍,搞定。这是市场上最快的速度。传统的KYC提供商完成同样流程通常需要90秒以上

在后端,从用户完成自拍到您的webhook触发,Didit在p99下两秒内返回结果。移动端捕获针对慢速手机和慢速网络进行了优化:渐进式图像压缩、延迟加载SDK,以及如果用户从网页端开始,可通过二维码一键从桌面端切换到手机端。

Didit如何防范电话欺诈?
三层防护,每层默认启用。(1) OTP有效期窗口 + 尝试次数限制, 验证码5分钟后过期,每会话验证码输入尝试次数上限为2次,每24小时内每个电话号码的重发请求上限为2次。超出任一限制将触发VERIFICATION_CODE_ATTEMPTS_EXCEEDED并自动拒绝。(2) 电话号码风险信号, HIGH_RISK_PHONE_NUMBER用于已知不良信誉号码,PHONE_NUMBER_IN_BLOCKLIST用于您自己的黑名单,DISPOSABLE_NUMBER_DETECTED用于一次性号码提供商,VOIP_NUMBER_DETECTED用于VoIP号码,DUPLICATED_PHONE_NUMBER用于不同vendor_data用户使用相同号码。(3) 跨会话匹配, matches数组中会显示不同用户使用相同电话号码的情况,以便您发现团伙欺诈和合成身份。完整目录请访问docs.didit.me/core-technology/phone-verification/warnings-phone-verification
如果用户失败、放弃或过期,会发生什么?

每个会话都会落入七种明确状态之一,因此您的代码始终知道如何处理:

  • 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:2022iBeta Level 1 PAD,以及西班牙Tesoro / SEPBLAC / CNMV的公开证明,表明Didit的远程身份验证比亲自验证更安全。完整报告请访问/security-compliance

Didit是否符合我所在行业的规定?

Didit默认符合对身份基础设施至关重要的监管机构要求:

  • GDPR + UK GDPR, 控制器/处理者分离,发布完整的《数据处理协议》,指定主要监管机构(西班牙AEPD)。
  • AMLD6 + 欧盟AML单一规则手册, 实时筛选1,300多个制裁、政治公众人物和负面媒体名单。
  • eIDAS 2.0, 符合欧盟数字身份钱包标准;支持可复用身份。
  • MiCA (Markets in Crypto-Assets), 适用于加密货币入口、交易所和托管机构。
  • DORA, 数字运营韧性法案,欧盟金融服务运营韧性。
  • BIPA, CUBI, Washington HB 1493, CCPA / CPRA, 美国生物识别隐私(伊利诺伊州、德克萨斯州、华盛顿州)和加州消费者隐私。
  • UK Online Safety Act, 年龄门槛和儿童安全义务。
  • FATF Travel Rule, 加密货币转账的发起方和受益方数据,与IVMS-101互操作。

详细备忘录、所有证书、所有监管机构函件:/security-compliance

我能多快集成并开始验证用户?
  • business.didit.me60秒即可获得沙盒账户, 无需信用卡。
  • 通过Claude Code、Cursor或任何编码代理,使用我们的模型上下文协议(MCP)服务器,5分钟即可完成工作验证。
  • 一个周末即可完成生产就绪的集成,包括签名webhook验证、重试以及用户被拒绝时的补救流程。

三种集成路径, 选择最适合您技术栈的方式:

  • 使用我们的Web、iOS、Android、React Native或Flutter SDK原生嵌入
  • 将用户重定向到托管验证页面, 无需SDK。
  • 通过电子邮件、短信、WhatsApp或任何渠道发送链接, 无需前端工作。

所有三种方式都使用相同的仪表板、相同的计费、相同的按成功付费价格。分步指南请访问docs.didit.me/integration/integration-prompt

身份与欺诈基础设施。

一个 API 即可实现 KYC、KYB、交易监控和钱包筛选。5 分钟即可集成。

让 AI 总结此页面