किसी भी फ़ोन को वेरिफाई करें। किसी भी चैनल पर वे जवाब दें।
SMS, WhatsApp, Telegram, RCS या वॉइस पर वन-टाइम कोड भेजें, जिस भी चैनल पर यूज़र जवाब देता है। चैनलों के बीच ऑटो-फ़ॉलबैक, हर कॉल पर कैरियर-रिस्क स्कोरिंग के साथ। $0.03 प्लस कैरियर से शुरू।
एक मॉड्यूल, पांच डिलीवरी रेल। हम कोड के लैंड होने तक चैनलों पर फिर से कोशिश करते हैं,
हर कॉल पर SIM-स्वैप और कैरियर रिस्क को स्कोर करते हैं, और $0.03 प्लस
कैरियर से बिल करते हैं, वर्कफ़्लो वही रहता है।
यह कैसे काम करता है
साइन-अप से लेकर वेरिफाइड यूज़र तक, चार स्टेप्स में।
चरण 01
वर्कफ़्लो बनाएं
अपनी ज़रूरत के चेक चुनें, ID, लाइवनेस, फ़ेस मैच, सैंक्शन, एड्रेस, उम्र, फ़ोन, ईमेल, कस्टम सवाल. उन्हें डैशबोर्ड में एक फ़्लो में ड्रैग करें, या उसी फ़्लो को हमारी API पर पोस्ट करें. कंडीशन के हिसाब से ब्रांच करें, A/B टेस्ट चलाएं, किसी कोड की ज़रूरत नहीं.
चरण 02
इंटीग्रेट करें
हमारे वेब, iOS, Android, React Native, या Flutter SDK के साथ नेटिवली एम्बेड करें. एक होस्टेड पेज पर रीडायरेक्ट करें. या बस अपने यूज़र को एक लिंक भेजें, ईमेल, SMS, WhatsApp, कहीं भी. चुनें कि आपके स्टैक के लिए क्या सही है.
चरण 03
यूज़र फ़्लो से गुज़रता है
Didit कैमरा, लाइटिंग क्यू, मोबाइल हैंड-ऑफ़, और एक्सेसिबिलिटी को होस्ट करता है. जब यूज़र फ़्लो में होता है, तो हम रियल टाइम में 200+ फ़्रॉड सिग्नल स्कोर करते हैं और हर फ़ील्ड को आधिकारिक डेटा सोर्स के ख़िलाफ़ वेरिफ़ाई करते हैं. दो सेकंड से भी कम समय में नतीजे मिलते हैं.
चरण 04
आपको नतीजे मिलते हैं
रियल-टाइम साइंड वेबहुक आपके डेटाबेस को सिंक में रखते हैं, जैसे ही कोई यूज़र अप्रूव होता है, डिक्लाइन होता है, या रिव्यू के लिए भेजा जाता है. ज़रूरत पड़ने पर API को पोल करें. या हर सेशन, हर सिग्नल को जांचने के लिए कंसोल खोलें, और अपने तरीक़े से केस मैनेज करें.
डेवलपर्स के लिए बना · फ़्रॉड के ख़िलाफ़ बना · डिज़ाइन से ओपन
छह क्षमताएं. एक फ़ीचर फ़्लैग. फ़ोन.
हर क्षमता एक ही मॉड्यूल पर एक टॉगल है. कोई अपसेल टियर नहीं, कोई अलग प्लान नहीं, कोई ऐड-ऑन कॉल नहीं. उन्हें कंसोल में प्रति वर्कफ़्लो चालू करें या API कॉल पर इनलाइन पास करें.
SMS, WhatsApp, Telegram, RCS, और वॉइस, सभी एक ही मॉड्यूल और वर्कफ़्लो पर. जब पॉलिसी की मांग हो (रेगुलेटर-अनिवार्य SMS, ब्राज़ील और भारत जैसे WhatsApp-फ़र्स्ट बाज़ार), तो एक चैनल पिन करें, या हमें सबसे सस्ता डिलीवरेबल हॉप चुनने दें.
एक फीचर फ्लैग · पांच चैनलफीचर: फ़ोन
SMSडिफ़ॉल्ट
WhatsAppBR / IN / MX
टेलीग्रामEU
RCSएंड्रॉइड
वॉइसफ़ॉलबैक
02 · राउटिंग
एक के फ़ेल होने पर ऑटोमैटिक चैनल फ़ॉलबैक.
कैरियर SMS ब्लॉक, प्रीमियम-रेट वाले देश, और साइलेंट फ़ेलियर अपने आप रूट हो जाते हैं. हम आपके कोड को कुछ भी छुए बिना अगले डिलीवरेबल चैनल पर फिर से कोशिश करते हैं, और आपको बताते हैं कि किस चैनल ने वास्तव में डिलीवर किया.
ऑटो चैनल राउटिंगPOST /v3/phone/send/
1SMSकैरियर द्वारा ब्लॉक किया गया
2WhatsAppडिलीवर किया गया
verification_methodwhatsapp
03 · कवरेज
ग्लोबल टेलको रीच. कैरियर-अवेयर डिलीवरी.
प्रति देश मल्टी-कैरियर इंटीग्रेशन, स्थानीय आदतों के हिसाब से ट्यून की गई राउटिंग के साथ, ब्राज़ील, भारत और मेक्सिको में WhatsApp आगे है, EU में Telegram और RCS आगे हैं, US में SMS आगे है. देश, कैरियर, और नंबर टाइप अपने आप डिटेक्ट हो जाते हैं.
04 · फ़्रॉड सिग्नल
एक बार के कोड से ज़्यादा. हर कॉल पर कैरियर रिस्क.
हर वेरिफ़िकेशन कैरियर का नाम और टाइप (मोबाइल, लैंडलाइन, वॉइस ओवर IP) देता है, डिस्पोज़ेबल और वर्चुअल नंबरों के लिए फ़्लैग, और हाई-रिस्क, डुप्लिकेट, या ब्लॉकलिस्टेड नंबरों के लिए स्पष्ट चेतावनी. हर रिस्क कैटेगरी के हिसाब से तय करें, रिव्यू करें या अप्रूव करें.
05 · कन्वर्ज़न
केवल SMS यूज़र्स को लीक करता है. मल्टी-चैनल उन्हें बनाए रखता है.
जब SMS फ़ेल हो जाता है, कैरियर फ़िल्टर, रोमिंग, डेड ज़ोन, डिलीवरेबिलिटी में गिरावट, सिंगल-चैनल प्रोवाइडर यूज़र्स को कभी न आने वाले कोड को देखते हुए छोड़ देते हैं. हम उन्हें अगले हॉप पर रिकवर करते हैं, और रिपोर्ट करते हैं कि किस चैनल ने डिलीवर किया ताकि आप रियल डेटा के साथ राउटिंग को ट्यून कर सकें.
प्रति मैसेज भुगतान करें. $0.03 प्लस कैरियर से शुरू.
प्रति वेरिफ़िकेशन $0.03, साथ ही एक देश और चैनल कैरियर फ़ीस बिना किसी मार्कअप के पास की जाती है. आप केवल तभी भुगतान करते हैं जब कोई मैसेज भेजा जाता है, डिलीवरी से पहले छोड़े गए मैसेज का कोई शुल्क नहीं लगता.
प्रति-संदेश दरें$0.03 से शुरू
संयुक्त राज्य अमेरिकाSMS$0.03
ब्राजीलWhatsApp$0.04
भारतWhatsApp$0.05
मैसेज भेजने पर ही भुगतान करें।
इंटीग्रेट करें
दो एंडपॉइंट. एक ही JSON. एक ही क़ीमत.
जब आप चाहते हैं कि हम नंबर एंट्री, कोड UX, और रीसेंड को हैंडल करें, तो होस्टेड फ़्लो चुनें. जब आप UX के मालिक हों, तो स्टैंडअलोन API चुनें. दोनों एक ही रिपोर्ट देते हैं.
नीचे दिए गए ब्लॉक को Claude Code, Cursor, Codex, Devin, Aider, या Replit Agent में पेस्ट करें। अपनी स्टैक भरें। एजेंट Didit को प्रोविज़न करता है, फ़ोन वेरिफिकेशन वर्कफ़्लो बनाता है, वेबहुक को वायर करता है, और शिप करता है।
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+ देश लाइव, हर तिमाही ऑडिट और पेन-टेस्टेड, एकमात्र आइडेंटिटी प्रोवाइडर जिसे EU सदस्य-राज्य सरकार ने औपचारिक रूप से इन-पर्सन वेरिफिकेशन से ज़्यादा सुरक्षित बताया है।
चैनल राउटिंग, हम सबसे सस्ता डिलीवरेबल हॉप चुनते हैं।
$0.03 से
प्रति वेरिफिकेशन, साथ ही पास-थ्रू कैरियर, कोई मार्कअप नहीं।
तीन टियर, एक मूल्य सूची
मुफ़्त में शुरू करें। उपयोग के अनुसार भुगतान करें। एंटरप्राइज़ तक स्केल करें।
हर महीने 500 मुफ़्त वेरिफिकेशन, हमेशा के लिए। प्रोडक्शन के लिए पे-एज़-यू-गो। एंटरप्राइज़ पर कस्टम कॉन्ट्रैक्ट, डेटा रेज़िडेंसी, और SLA (सर्विस लेवल एग्रीमेंट)।
मुफ़्त
मुफ़्त
$0 / महीना। क्रेडिट कार्ड की ज़रूरत नहीं।
मुफ़्त KYC बंडल (ID वेरिफिकेशन + पैसिव लाइवनेस + फेस मैच + डिवाइस और IP एनालिसिस), 500 / महीना, हर महीने