> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# ईमेल सत्यापन रिपोर्ट: ब्रीच और OTP JSON

> Didit की ईमेल सत्यापन रिपोर्ट से OTP स्थिति, डेटा ब्रीच एक्सपोज़र, डिस्पोज़ेबल ईमेल और जोखिम चेतावनियों का विश्लेषण करें।

ईमेल सत्यापन रिपोर्ट ईमेल OTP चैलेंज का पूरा परिणाम कैप्चर करती है: संदेश किसे भेजा गया था, क्या पता डिस्पोज़ेबल या अनडिलीवरेबल है, क्या यह ज्ञात डेटा ब्रीच में दिखाई देता है, उपयोगकर्ता ने कितने प्रयास किए, और आपकी ब्लॉकलिस्ट या अन्य स्वीकृत उपयोगकर्ताओं के साथ कोई क्रॉस-सत्र मिलान।

यह पेज निर्णय endpoint द्वारा लौटाए गए JSON प्रारूप का दस्तावेज़ीकरण करता है ताकि आप प्रत्येक सत्यापित पते के लिए OTP परिणाम, ब्रीच एक्सपोज़र और जोखिम फ़्लैग को पार्स कर सकें।

![OTP परिणाम, ब्रीच डेटा और जोखिम फ़्लैग दिखाने वाली Didit ईमेल सत्यापन रिपोर्ट](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/email-verification-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=4d153b7d3d9d4c88bc3932466af7ed29)

## अवलोकन

हर बार जब कोई वर्कफ़्लो नोड ईमेल सत्यापन सुविधा चलाता है, तो एक ईमेल रिपोर्ट जनरेट होती है। प्रत्येक रिपोर्ट एक पते के विरुद्ध एक OTP चैलेंज का प्रतिनिधित्व करती है और इसमें शामिल हैं:

* सत्यापित `email` पता।
* बूलियन जोखिम फ़्लैग (`is_breached`, `is_disposable`, `is_undeliverable`) और ब्रीच-इंटेलिजेंस डेटाबेस से प्राप्त सहायक `breaches[]` ऐरे।
* OTP भेजने के प्रयासों की संख्या (`verification_attempts`) और स्वीकृति टाइमस्टैम्प।
* हर बार भेजने, पुनः प्रयास करने और कोड जाँचने का एक कालानुक्रमिक `lifecycle[]` लॉग।
* अन्य स्वीकृत ईमेल सत्यापनों या आपकी ब्लॉकलिस्ट पर समान पते को सामने लाने वाला एक `matches[]` ऐरे।
* एक `warnings[]` ऐरे — सत्यापन के दौरान उत्पन्न जोखिम इवेंट (देखें [ईमेल सत्यापन चेतावनियाँ](https://docs.didit.me/hi/core-technology/email-verification/warnings-email-verification.md))।
* एक `node_id` जो पहचानता है कि किस वर्कफ़्लो ग्राफ़ नोड ने रिपोर्ट जनरेट की (केवल V3 सत्र)।

होस्टेड वर्कफ़्लो सत्रों में OTP चैलेंज Didit सत्यापन UI के अंदर चलता है — आप केवल निर्णय payload से परिणाम पढ़ते हैं। बिना होस्टेड फ़्लो के सर्वर-टू-सर्वर OTP के लिए, स्टैंडअलोन Email API का उपयोग करें: [`POST /v3/email/send/`](https://docs.didit.me/hi/standalone-apis/email-send) कोड डिलीवर करता है और [`POST /v3/email/check/`](https://docs.didit.me/hi/standalone-apis/email-check) उपयोगकर्ता की प्रविष्टि को मान्य करता है; फ़ाइनलाइज़ किए गए स्टैंडअलोन सत्यापन उसी रिपोर्ट प्रारूप के माध्यम से सामने आते हैं।

होस्टेड सत्र डिफ़ॉल्ट रूप से उपयोगकर्ता को **2 गलत कोड प्रविष्टियों** (`email_max_check_attempts`) और **2 OTP भेजने — प्रारंभिक भेजने के साथ एक पुनः भेजने** (`email_max_retries`) तक सीमित करते हैं, जिसे प्रति वर्कफ़्लो नोड ट्यून किया जा सकता है। किसी भी सीमा को पार करने पर चरण को `EMAIL_CODE_ATTEMPTS_EXCEEDED` के साथ `Declined` के रूप में फ़ाइनलाइज़ किया जाता है।

## यह API रिस्पॉन्स में कहाँ दिखाई देता है

निर्णय endpoint (`GET /v3/session/{sessionId}/decision/`) बहुवचन ऐरे कुंजी **`email_verifications`** के तहत ईमेल रिपोर्ट लौटाता है। ऐरे में वर्कफ़्लो ग्राफ़ में प्रति ईमेल सत्यापन नोड एक प्रविष्टि होती है — आमतौर पर एक, लेकिन स्टेप-अप फ़्लो कई प्रविष्टियाँ उत्पन्न कर सकते हैं।

```json theme={null}
{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "status": "Approved",
  "email_verifications": [
    { "node_id": "feature_email_1", "status": "Approved", "...": "..." }
  ]
}
```

`null` मान का अर्थ है कि अभी तक कोई ईमेल सत्यापन चरण नहीं चला है। जब आपका वर्कफ़्लो एक से अधिक ईमेल पते एकत्र कर सकता है, तो ऐरे पर पुनरावृति करें (`email_verifications[0]` पढ़ने के बजाय)।

## स्कीमा

फ़ील्ड-दर-फ़ील्ड कैनोनिकल स्कीमा [डेटा मॉडल](https://docs.didit.me/hi/reference/data-models.md#ईमेल-सत्यापन) पेज पर मौजूद है।

```typescript theme={null}
interface EmailVerification {
  node_id: string | null;
  status: "Not Finished" | "Approved" | "Declined" | "In Review" | "Expired";
  email: string;
  is_breached: boolean;
  breaches: Breach[];                // Up to the 5 most recent known breaches
  is_disposable: boolean;            // Disposable / throwaway provider
  is_undeliverable: boolean;         // Failed syntax / DNS (MX) validation or OTP delivery
  verification_attempts: number;     // OTP send attempts
  verified_at: string | null;        // ISO 8601, null until a valid code is entered
  lifecycle: EmailLifecycleEvent[];  // OTP send/retry/check timeline
  warnings: Warning[];               // Risk events (see Data models → Warning object)
  matches: EmailMatch[];             // Cross-session / blocklist matches
}

interface Breach {
  name: string;                      // Breached service name
  domain: string;                    // Affected domain
  breach_date: string;               // YYYY-MM-DD
  breach_emails_count: number;       // Total affected accounts
  description: string;               // HTML description of the breach
  logo_path: string;                 // Breached-service logo URL
  data_classes: string[];            // Exposed data categories (snake_case)
  is_verified: boolean;              // true when the breach is a verified incident
}
```

एक ऐसा पता जिस पर डिलीवरी संभव न हो — अमान्य सिंटैक्स, अस्तित्वहीन डोमेन, अनुपलब्ध MX रिकॉर्ड, या विफल OTP डिलीवरी — चरण को ऑटो-डिक्लाइन चेतावनी `UNDELIVERABLE_EMAIL_DETECTED` के साथ **`Declined`** के रूप में फ़ाइनलाइज़ करता है। एकमात्र अपवाद: जब उपयोगकर्ता ने स्वयं पता टाइप किया हो (यह सत्र निर्माण के समय प्री-फ़िल नहीं किया गया था), तो डिलीवरी न हो पाने वाला सेंड एक इनलाइन त्रुटि लौटाता है ताकि वे तुरंत अस्वीकृत होने के बजाय किसी भिन्न पते के साथ पुनः प्रयास कर सकें।

### स्थिति मान

| स्थिति | अर्थ |
| - | - |
| `Not Finished` | OTP भेजना शुरू कर दिया गया है लेकिन सत्यापन अभी तक फ़ाइनलाइज़ नहीं हुआ है। |
| `Approved` | उपयोगकर्ता ने एक मान्य OTP दर्ज किया और कोई भी अस्वीकृत करने वाला जोखिम मेल नहीं खाया। |
| `Declined` | एक ऑटो-डिक्लाइन चेतावनी ट्रिगर हुई (ब्लॉकलिस्ट, डिलीवरी न होने योग्य पता, प्रयास सीमा पार) या `DECLINE` पर कॉन्फ़िगर की गई जोखिम कार्रवाई मेल खा गई। |
| `In Review` | `REVIEW` पर कॉन्फ़िगर की गई एक जोखिम कार्रवाई ने चरण को मैन्युअल समीक्षा के लिए रूट कर दिया। |
| `Expired` | बिना किसी मान्य कोड के 5 मिनट की OTP विंडो समाप्त हो गई — यह स्टैंडअलोन ईमेल API के माध्यम से बनाए गए सत्यापनों पर लागू होता है। |

### लाइफ़साइकिल इवेंट प्रकार

`lifecycle[]` को कालक्रमानुसार क्रमबद्ध किया गया है। प्रत्येक इवेंट में `type`, `timestamp`, `details` और एक बिल योग्य `fee` (लागू होने पर) शामिल होता है:

| इवेंट प्रकार | कब जारी किया जाता है |
| - | - |
| `EMAIL_VERIFICATION_MESSAGE_SENT` | पहला OTP भेजने का प्रयास — जिसमें वे सेंड भी शामिल हैं जो अनडिलीवरेबल लौटते हैं। |
| `EMAIL_VERIFICATION_RETRY_MESSAGE_SENT` | उपयोगकर्ता द्वारा दोबारा भेजने का अनुरोध करने के बाद अगला OTP सेंड। |
| `VALID_CODE_ENTERED` | उपयोगकर्ता ने सही OTP कोड सबमिट किया। |
| `INVALID_CODE_ENTERED` | उपयोगकर्ता ने गलत या समय-सीमा समाप्त OTP कोड सबमिट किया (कैप में गिना जाता है)। |
| `EMAIL_VERIFICATION_APPROVED` | सुविधा-स्तरीय स्थिति `Approved` पर सेट की गई। |
| `EMAIL_VERIFICATION_DECLINED` | सुविधा-स्तरीय स्थिति `Declined` पर सेट की गई। |
| `EMAIL_VERIFICATION_IN_REVIEW` | सुविधा-स्तरीय स्थिति `In Review` पर सेट की गई। |
| `EMAIL_VERIFICATION_EXPIRED` | बिना किसी मान्य कोड के OTP विंडो समाप्त हो गई (स्टैंडअलोन ईमेल API)। |

`details` payload इवेंट फ़ैमिली पर निर्भर करता है:

* **सेंड इवेंट्स** (`EMAIL_VERIFICATION_MESSAGE_SENT`, `EMAIL_VERIFICATION_RETRY_MESSAGE_SENT`) — `{ status, reason }`। `status` `Success`, `Retry` या `Undeliverable` होता है; `reason` `null` होता है जब तक कि सेंड विफल न हुआ हो (`email_can_not_be_delivered`, या अपरिचित लेगसी मानों के लिए `unknown`)।
* **चेक इवेंट्स** (`VALID_CODE_ENTERED`, `INVALID_CODE_ENTERED`) — `{ code_tried, status }` जिसमें `status` `Approved`, `Failed`, `Expired or Not Found` या `Declined` होता है।
* **अंतिम स्थिति इवेंट्स** — `null`, सिवाय `EMAIL_VERIFICATION_DECLINED` / `EMAIL_VERIFICATION_IN_REVIEW` के, जिनमें `{ "reason": "<risk code>" }` (उदाहरण के लिए `UNDELIVERABLE_EMAIL_DETECTED`) शामिल होता है।

`status` `Success` या `Undeliverable` वाले सेंड में \$0.02 ईमेल सत्यापन शुल्क रिकॉर्ड किया जाता है; `Retry` सेंड, चेक इवेंट्स और स्थिति इवेंट्स में हमेशा `fee: 0` होता है।

### क्रॉस-सत्र मिलान

`matches[]` उसी एप्लिकेशन में — KYC, KYB और स्टैंडअलोन API सत्रों में — **पहले स्वीकृत** ईमेल सत्यापनों में समान पते को रिकॉर्ड करता है, साथ ही [प्रबंधन API सूचियाँ](https://docs.didit.me/hi/management-api/lists/overview.md) में कॉन्फ़िगर किए गए ब्लॉकलिस्ट हिट्स को भी। वर्तमान सत्र के `vendor_data` को साझा करने वाले सत्यापनों को बाहर रखा जाता है (वही अंतिम उपयोगकर्ता खुद से मेल नहीं खाता है), यह ऐरे अधिकतम **5** प्रविष्टियों तक सीमित है, जो सबसे पुरानी से शुरू होकर क्रमबद्ध होती है। जब पता आपकी ब्लॉकलिस्ट में होता है लेकिन मेल खाने वाले सत्रों में से कोई भी ब्लॉकलिस्टेड नहीं होता है, तो `source: "list_entry"` (सभी सत्र फ़ील्ड `null`) के साथ एक सिंथेटिक प्रविष्टि ऐरे के प्रारंभ में जोड़ दी जाती है।

```typescript theme={null}
interface EmailMatch {
  session_id: string | null;         // null when source = "list_entry"
  session_number: number | null;
  vendor_data: string | null;
  verification_date: string | null;  // ISO 8601, creation date of the matched session
  email: string;
  status: string | null;             // Status of the matched session
  is_blocklisted: boolean;
  api_service: string | null;        // Set when the matched session came from a standalone API
  source: "session" | "list_entry";  // "list_entry" = manual blocklist hit
}
```

## उदाहरण

### स्वीकृत — एक सूचनात्मक उल्लंघन के साथ क्लीन OTP

```json theme={null}
{
  "node_id": "feature_email_1",
  "status": "Approved",
  "email": "alex.sample@example.com",
  "is_breached": true,
  "breaches": [
    {
      "name": "ExampleAir",
      "domain": "example-air.com",
      "breach_date": "2022-08-25",
      "breach_emails_count": 6083479,
      "description": "In August 2022, the airline ExampleAir suffered a data breach that exposed customers' personal information.",
      "logo_path": "https://<media-host>/logos/ExampleAir.png",
      "data_classes": [
        "dates_of_birth", "email_addresses", "genders", "names",
        "nationalities", "phone_numbers", "physical_addresses",
        "salutations", "spoken_languages"
      ],
      "is_verified": true
    }
  ],
  "is_disposable": false,
  "is_undeliverable": false,
  "verification_attempts": 1,
  "verified_at": "2025-09-15T17:36:19.963451Z",
  "lifecycle": [
    {
      "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
      "timestamp": "2025-09-15T17:35:50.000000+00:00",
      "details": { "status": "Success", "reason": null },
      "fee": 0.02
    },
    {
      "type": "VALID_CODE_ENTERED",
      "timestamp": "2025-09-15T17:36:19.000000+00:00",
      "details": { "code_tried": "123456", "status": "Approved" },
      "fee": 0
    },
    {
      "type": "EMAIL_VERIFICATION_APPROVED",
      "timestamp": "2025-09-15T17:36:19.963451+00:00",
      "details": null,
      "fee": 0
    }
  ],
  "warnings": [
    {
      "feature": "EMAIL",
      "risk": "BREACHED_EMAIL_DETECTED",
      "additional_data": null,
      "log_type": "information",
      "short_description": "Breached email detected",
      "long_description": "This email address was found in one or more known data breaches.",
      "node_id": "feature_email_1"
    }
  ],
  "matches": []
}
```

### अस्वीकृत — डिलीवरी न होने योग्य पता

एक प्री-फ़िल्ड पता जो सिंटैक्स या DNS (MX) सत्यापन में विफल रहता है — या जिसका OTP ईमेल डिलीवर नहीं किया जा सकता — तुरंत `Declined` के रूप में फ़ाइनलाइज़ हो जाता है। कोई कोड-चेक इवेंट दिखाई नहीं देते क्योंकि कोई भी कोड कभी उपयोगकर्ता तक नहीं पहुंचा।

```json theme={null}
{
  "node_id": "feature_email_1",
  "status": "Declined",
  "email": "user@nonexistent-domain.example",
  "is_breached": false,
  "breaches": [],
  "is_disposable": false,
  "is_undeliverable": true,
  "verification_attempts": 1,
  "verified_at": null,
  "lifecycle": [
    {
      "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
      "timestamp": "2025-09-15T18:00:00.000000+00:00",
      "details": { "status": "Undeliverable", "reason": "email_can_not_be_delivered" },
      "fee": 0.02
    },
    {
      "type": "EMAIL_VERIFICATION_DECLINED",
      "timestamp": "2025-09-15T18:00:01.500000+00:00",
      "details": { "reason": "UNDELIVERABLE_EMAIL_DETECTED" },
      "fee": 0
    }
  ],
  "warnings": [
    {
      "feature": "EMAIL",
      "risk": "UNDELIVERABLE_EMAIL_DETECTED",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Undeliverable email detected",
      "long_description": "The system detected that the email is undeliverable, which is not allowed.",
      "node_id": "feature_email_1"
    }
  ],
  "matches": []
}
```

### अस्वीकृत — ब्लॉकलिस्टेड डिस्पोज़ेबल मेलबॉक्स

उपयोगकर्ता ने OTP पूरा कर लिया, लेकिन पता आपकी ईमेल ब्लॉकलिस्ट से मेल खा गया (ऑटो-डिक्लाइन)। डिस्पोज़ेबल फ़्लैग भी उठाया गया है — यहाँ `information` स्तर पर क्योंकि `disposable_email_action` को उसके डिफ़ॉल्ट `NO_ACTION` पर छोड़ दिया गया है।

```json theme={null}
{
  "node_id": "feature_email_1",
  "status": "Declined",
  "email": "user@mailinator.com",
  "is_breached": false,
  "breaches": [],
  "is_disposable": true,
  "is_undeliverable": false,
  "verification_attempts": 1,
  "verified_at": "2025-09-15T18:05:42.201734Z",
  "lifecycle": [
    {
      "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
      "timestamp": "2025-09-15T18:05:01.000000+00:00",
      "details": { "status": "Success", "reason": null },
      "fee": 0.02
    },
    {
      "type": "VALID_CODE_ENTERED",
      "timestamp": "2025-09-15T18:05:42.000000+00:00",
      "details": { "code_tried": "654321", "status": "Approved" },
      "fee": 0
    },
    {
      "type": "EMAIL_VERIFICATION_DECLINED",
      "timestamp": "2025-09-15T18:05:42.201734+00:00",
      "details": { "reason": "EMAIL_IN_BLOCKLIST" },
      "fee": 0
    }
  ],
  "warnings": [
    {
      "feature": "EMAIL",
      "risk": "EMAIL_IN_BLOCKLIST",
      "additional_data": {
        "blocklisted_session_id": null,
        "blocklisted_session_number": null,
        "api_service": null
      },
      "log_type": "error",
      "short_description": "Email in blocklist",
      "long_description": "The system detected that the email is in the blocklist, which is not allowed.",
      "node_id": "feature_email_1"
    },
    {
      "feature": "EMAIL",
      "risk": "DISPOSABLE_EMAIL_DETECTED",
      "additional_data": null,
      "log_type": "information",
      "short_description": "Disposable email detected",
      "long_description": "The system detected that the email is disposable, which is not allowed.",
      "node_id": "feature_email_1"
    }
  ],
  "matches": [
    {
      "session_id": null,
      "session_number": null,
      "vendor_data": null,
      "verification_date": null,
      "email": "user@mailinator.com",
      "status": null,
      "is_blocklisted": true,
      "api_service": null,
      "source": "list_entry"
    }
  ]
}
```

## संबंधित

* [ईमेल सत्यापन अवलोकन](https://docs.didit.me/hi/core-technology/email-verification/overview.md) — सुविधा का व्यवहार और मूल्य निर्धारण।
* [ईमेल सत्यापन चेतावनियाँ](https://docs.didit.me/hi/core-technology/email-verification/warnings-email-verification.md) — प्रत्येक जोखिम कोड, अस्वीकृति ट्रिगर और कॉन्फ़िगर करने योग्य कार्रवाइयाँ।
* [डेटा मॉडल — ईमेल सत्यापन](https://docs.didit.me/hi/reference/data-models.md#ईमेल-सत्यापन) — फ़ील्ड-दर-फ़ील्ड कैनोनिकल स्कीमा।
* [ईमेल API — OTP भेजना](https://docs.didit.me/hi/standalone-apis/email-send.md) और [OTP जाँचना](https://docs.didit.me/hi/standalone-apis/email-check.md) — स्टैंडअलोन सर्वर-टू-सर्वर endpoint।
* [प्रबंधन API — सूचियाँ](https://docs.didit.me/hi/management-api/lists/overview.md) — उस ईमेल ब्लॉकलिस्ट को प्रबंधित करें जो `source: list_entry` के साथ `matches[]` को फ़ीड करती है।


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.