> ## 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.

# ईमेल वन-टाइम कोड जाँच API: ईमेल कोड सत्यापित करें

> Didit का POST /v3/email/check/ वन-टाइम ईमेल कोड सत्यापित करता है, साथ में ब्रीच और डिलीवरेबिलिटी जाँच। प्रति उपयोग मूल्य, कोई अनुबंध नहीं।

## इंटेलिजेंस ऐड-ऑन

ईमेल पते पर इंटेलिजेंस भी चलाने के लिए `enable_enrichment` को `true` पर सेट करें। इससे आपको एक जोखिम स्कोर और उसका डेटा उल्लंघन इतिहास मिलेगा।
यह ऐड-ऑन जाँच की कीमत के अलावा, सूचीबद्ध कीमत के अनुसार प्रति अनुरोध \$0.05 पर बिल किया जाता है।
जब आपका बैलेंस इसे कवर नहीं कर पाता, तो अनुरोध `403` लौटाता है।

तीन फ़ील्ड तय करते हैं कि सिग्नल क्या करेंगे।
इनमें से हर एक `NO_ACTION` (डिफ़ॉल्ट) या `DECLINE` हो सकता है, और हर एक तभी लागू होता है जब `enable_enrichment` `true` हो।

| फ़ील्ड | कब अस्वीकार करता है |
| - | - |
| `email_intelligence_score_action` | जब जोखिम स्कोर थ्रेशोल्ड से ऊपर हो। |
| `recent_email_breach_action` | जब पता हाल के किसी ज्ञात डेटा उल्लंघन में दिखाई दे। |
| `frequent_email_breach_action` | जब पता कई ज्ञात डेटा उल्लंघनों में दिखाई दे। |

`NO_ACTION` के साथ भी सिग्नल `email.email_intelligence` में लौटाया जाता है, ताकि आप अपना नियम खुद लागू कर सकें।


## OpenAPI

````yaml hi/openapi-25.json POST /v3/email/check/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: पहचान सत्यापन API। x-api-key हेडर के साथ प्रमाणीकृत करें।
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/email/check/:
    post:
      tags:
        - Standalone APIs
      summary: ईमेल कोड जांचें
      description: >-
        [`POST /v3/email/send/`](/hi/standalone-apis/email-send) द्वारा डिलीवर
        किए गए OTP को सत्यापित करें और अंतिम सत्यापन परिणाम के साथ-साथ ईमेल
        इंटेलिजेंस प्राप्त करें: डिलीवरी योग्यता, ब्रीच एक्सपोज़र (`is_breached`
        और ब्रीच-इंटेलिजेंस डेटाबेस से `breaches` सूची), डिस्पोज़ेबल-प्रदाता
        डिटेक्शन, और आपके सत्रों में पते का डुप्लिकेट उपयोग।


        **जाँच सत्यापन कैसे ढूँढती है।** मिलान आपके एप्लिकेशन और `email` पते
        द्वारा होता है — `request_id` इनपुट नहीं है। पिछले **5 मिनट** के भीतर
        बनाए गए नवीनतम लंबित सत्यापन की जाँच की जाती है। यदि कोई नहीं है (कभी
        नहीं भेजा गया, पहले ही अंतिम रूप दे दिया गया, भेजते समय डिलीवर न होने
        योग्य था, या 5 मिनट से अधिक पुराना है), तो endpoint `status: "Expired or
        Not Found"` के साथ `200` लौटाता है।


        **प्रयास बजट।** प्रत्येक सत्यापन **3 कोड प्रयासों** की अनुमति देता है।
        पहले दो गलत कोड शेष प्रयासों और `email: null` के साथ `status: "Failed"`
        लौटाते हैं; तीसरा गलत कोड सत्यापन को `EMAIL_CODE_ATTEMPTS_EXCEEDED`
        चेतावनी के साथ `Declined` के रूप में अंतिम रूप देता है और पूरी ईमेल
        रिपोर्ट लौटाता है। कोड की तुलना केस-असंवेदनशील रूप से की जाती है
        (`alphanumeric_code` भेजने के लिए प्रासंगिक); केवल सबसे हाल ही में भेजा
        गया कोड ही मान्य होता है।


        **परिणाम।** `Approved` — सही कोड और कोई अस्वीकार करने वाला जोखिम नहीं।
        `Declined` — टर्मिनल: कोड सही था लेकिन एक अस्वीकार करने वाला जोखिम मेल
        खाता है (नीचे दी गई `DECLINE` कार्रवाई, एक ब्लॉकलिस्ट किया गया पता, या
        फ़ाइनलाइज़ेशन पर पता डिलीवर न होने योग्य पाया गया), या प्रयास बजट समाप्त
        हो गया था। `Failed` — गलत कोड, प्रयास शेष। `Expired or Not Found` —
        जाँचने के लिए कुछ नहीं है। `Approved`/`Declined` पर `request_id` भेजे गए
        `request_id` (सत्र id) के बराबर होता है और `email` पूरी रिपोर्ट रखता है
        (`is_breached`, `breaches`, `is_disposable`, `is_undeliverable`,
        `warnings`, `lifecycle`, `matches`); `Failed` और `Expired or Not Found`
        पर `request_id` एक बार का रैंडम UUID होता है।


        **जोखिम कार्रवाइयां।** `duplicated_email_action`,
        `breached_email_action`, और `disposable_email_action` तय करते हैं कि सही
        कोड पर संबंधित जोखिम का पता चलने पर क्या होता है: `DECLINE` अंतिम स्थिति
        को `Declined` में बदल देता है; `NO_ACTION` (डिफ़ॉल्ट) स्थिति को प्रभावित
        किए बिना `email.warnings` में जोखिम रिकॉर्ड करता है।


        **बिलिंग।** जाँचें निःशुल्क हैं — क्रेडिट की खपत सफल सेंड द्वारा होती
        है।


        **सत्र निरंतरता।** अंतिम रूप दी गई जाँच सेंड द्वारा बनाए गए सत्र को
        अपडेट करती है (Business Console में दृश्यमान, `GET
        /v3/session/{sessionId}/decision/` के माध्यम से क्वेरी करने योग्य) और एक
        `status.updated` webhook ट्रिगर करती है।


        **सैंडबॉक्स।** सैंडबॉक्स API कुंजियां सभी प्रोसेसिंग छोड़ देती हैं: कोई
        भी सही ढंग से फ़ॉर्मेट किया गया कोड (`123456` सहित) एक सरलीकृत `email`
        ऑब्जेक्ट (`status`, `email`, `is_breached`, `is_disposable`,
        `is_undeliverable`) के साथ एक स्थिर `Approved` payload लौटाता है; अमान्य
        इनपुट अभी भी `400` लौटाता है। कुछ भी सहेजा नहीं जाता है।


        **प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें।
        अनुपस्थित या अमान्य क्रेडेंशियल्स `403` लौटाते हैं (`{"detail": "You do
        not have permission to perform this action."}`) — यह API कभी भी `401`
        नहीं लौटाता है।


        **रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300
        अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` लौटता है।


        **सोशल फ़ुटप्रिंट।** `email_social` ब्लॉक जोड़ने के लिए `enable_social`
        को `true` पर सेट करें: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह पता पंजीकृत है,
        प्रति-श्रेणी गणना और उपलब्ध प्रोफ़ाइल विवरण के साथ।
        `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जाँच की गई थी और
        उनमें से किसी पर भी पता नहीं मिला - एक मान्य, बिल करने योग्य उत्तर। जब
        ऐड-ऑन का अनुरोध नहीं किया गया था या जाँच पूरी नहीं की जा सकी, तो यह
        ब्लॉक अनुपस्थित रहता है, और उस मामले में इसका बिल नहीं लिया जाता है।
        बिलिंग इस endpoint की अपनी कीमत के अलावा प्रति अनुरोध एक `email_social`
        यूनिट जोड़ती है।
      operationId: post_v3email_check
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  description: >-
                    वही ईमेल पता जो संबंधित [`POST
                    /v3/email/send/`](/hi/standalone-apis/email-send) कॉल में
                    उपयोग किया गया था। यह चेक को सेंड से लिंक करता है।
                  example: alice@example.com
                code:
                  type: string
                  maxLength: 10
                  description: >-
                    अंतिम उपयोगकर्ता को प्राप्त OTP: 4–8 अंक, या 4–8 अक्षर/अंक
                    जब भेजते समय `alphanumeric_code: true` का उपयोग किया गया था।
                    तुलना केस-असंवेदनशील है।
                  example: '123456'
                duplicated_email_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    आपके एप्लिकेशन के किसी भिन्न उपयोगकर्ता (भिन्न
                    `vendor_data`) द्वारा समान पते का पहले ही उपयोग और स्वीकृत
                    किए जाने पर क्या कार्रवाई की जाए (केवल पहले स्वीकृत सत्यापन
                    ही गिने जाते हैं)। `DECLINE` अंतिम `status` को `Declined`
                    में बदल देता है; `NO_ACTION` जोखिम को `email.warnings` में
                    रिकॉर्ड करता है और `email.matches` को भरता है।
                breached_email_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    जब पता ज्ञात डेटा उल्लंघनों में दिखाई देता है
                    (`email.is_breached`) तो क्या कार्रवाई करें। `DECLINE` अंतिम
                    `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को
                    `email.warnings` में रिकॉर्ड करता है।
                disposable_email_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    डोमेन के डिस्पोज़ेबल/अस्थायी-मेल प्रदाता
                    (`email.is_disposable`) से संबंधित होने पर क्या कार्रवाई की
                    जाए। `DECLINE` अंतिम `status` को `Declined` में बदल देता है;
                    `NO_ACTION` जोखिम को `email.warnings` में रिकॉर्ड करता है।
                enable_enrichment:
                  type: boolean
                  default: false
                  description: >-
                    जब `true` होता है, तो पते पर ईमेल इंटेलिजेंस भी चलाएं: एक
                    जोखिम स्कोर और इसका ब्रीच इतिहास। इस endpoint की अपनी कीमत
                    के अतिरिक्त प्रति अनुरोध एक `email_intelligence_api` यूनिट
                    ($0.05 सूची मूल्य पर) के रूप में बिल किया जाता है। जब आपका
                    बैलेंस इसे कवर नहीं कर पाता है, तो अनुरोध `403` लौटाता है।
                  example: false
                email_intelligence_score_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    जब ईमेल इंटेलिजेंस जोखिम स्कोर थ्रेशोल्ड से अधिक हो, तब की
                    जाने वाली कार्रवाई। `DECLINE` अंतिम `status` को `Declined`
                    में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल
                    रिकॉर्ड करता है। केवल तभी प्रभावी होता है जब
                    `enable_enrichment` का मान `true` हो।
                recent_email_breach_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    कार्रवाई जब पता हाल ही में ज्ञात डेटा ब्रीच में दिखाई देता
                    है। `DECLINE` अंतिम `status` को `Declined` में बदल देता है;
                    `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल
                    तब प्रभावी होता है जब `enable_enrichment` का मान `true` हो।
                frequent_email_breach_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    कार्रवाई जब पता कई ज्ञात डेटा ब्रीच में दिखाई देता है।
                    `DECLINE` अंतिम `status` को `Declined` में बदल देता है;
                    `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल
                    तब प्रभावी होता है जब `enable_enrichment` का मान `true` हो।
                enable_social:
                  type: boolean
                  default: false
                  description: >-
                    true होने पर, पते के सोशल फ़ुटप्रिंट की भी खोज करें - ईमेल,
                    सोशल, व्यावसायिक, ई-कॉमर्स और मनोरंजन प्लेटफ़ॉर्म जिन पर यह
                    पंजीकृत है। इस endpoint की अपनी कीमत के अतिरिक्त प्रति
                    अनुरोध एक `email_social` इकाई के रूप में बिल किया जाता है।
                  example: true
                email_no_social_presence_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    जब सोशल फ़ुटप्रिंट जाँच में पता चलता है कि पता इसके द्वारा
                    कवर किए गए किसी भी प्लेटफ़ॉर्म पर पंजीकृत नहीं है, तब की
                    जाने वाली कार्रवाई। इस endpoint पर केवल NO_ACTION और DECLINE
                    स्वीकार किए जाते हैं; REVIEW इसी नाम की वर्कफ़्लो
                    कॉन्फ़िगरेशन कुंजी पर उपलब्ध है।
              required:
                - email
                - code
            examples:
              Default:
                summary: >-
                  किसी भी जोखिम को रिकॉर्ड करें लेकिन कभी भी स्वतः अस्वीकृत न
                  करें
                value:
                  email: alice@example.com
                  code: '123456'
              Strict risk policy:
                summary: डिस्पोज़ेबल और ब्रीच हुए इनबॉक्स को स्वतः अस्वीकृत करें
                value:
                  email: alice@example.com
                  code: '123456'
                  disposable_email_action: DECLINE
                  breached_email_action: DECLINE
      responses:
        '200':
          description: >-
            जांच पूरी हुई — गलत कोड और छूटे हुए सत्यापन भी `200` लौटाते हैं;
            HTTP कोड नहीं, `status` का निरीक्षण करें। `email` केवल अंतिम
            परिणामों (`Approved`/`Declined`) पर पॉप्युलेट होता है, `Failed` पर
            `null`, और `Expired or Not Found` पर अनुपस्थित होता है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailVerificationCheckResponse'
              examples:
                Approved:
                  summary: सही कोड — स्वच्छ पता, पूर्ण ईमेल रिपोर्ट
                  value:
                    request_id: e39cb057-92fc-4b59-b84e-02fec29a0f24
                    status: Approved
                    message: The verification code is correct.
                    email:
                      status: Approved
                      email: alice@example.com
                      is_breached: false
                      breaches: []
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 1
                      verified_at: '2026-06-12T01:24:47.311323Z'
                      warnings: []
                      lifecycle:
                        - type: EMAIL_VERIFICATION_MESSAGE_SENT
                          timestamp: '2026-06-12T01:23:39.580554+00:00'
                          details:
                            status: Success
                            reason: null
                          fee: 0.02
                        - type: VALID_CODE_ENTERED
                          timestamp: '2026-06-12T01:24:47.311201+00:00'
                          details:
                            code_tried: '123456'
                            status: Approved
                          fee: 0
                        - type: EMAIL_VERIFICATION_APPROVED
                          timestamp: '2026-06-12T01:24:47.384292+00:00'
                          details: null
                          fee: 0
                      matches: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-12T01:24:47.401719+00:00'
                Approved with breach exposure:
                  summary: >-
                    सही कोड; डेटा उल्लंघन एक्सपोज़र चेतावनी के रूप में दर्ज किया
                    गया (breached_email_action=NO_ACTION)
                  value:
                    request_id: 3a1f2b6c-9d4e-4f7a-8b2c-1e5d6f7a8b9c
                    status: Approved
                    message: The verification code is correct.
                    email:
                      status: Approved
                      email: bob@example.com
                      is_breached: true
                      breaches:
                        - name: ExampleApp
                          domain: exampleapp.com
                          breach_date: '2019-03-21'
                          breach_emails_count: 763117
                          description: >-
                            In March 2019, the social platform ExampleApp
                            suffered a data breach that exposed email addresses
                            and passwords.
                          logo_path: https://<media-host>/logos/ExampleApp.png
                          data_classes:
                            - email_addresses
                            - passwords
                          is_verified: true
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 1
                      verified_at: '2026-06-12T01:24:47.311323Z'
                      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.
                      lifecycle:
                        - type: EMAIL_VERIFICATION_MESSAGE_SENT
                          timestamp: '2026-06-12T01:23:39.580554+00:00'
                          details:
                            status: Success
                            reason: null
                          fee: 0.02
                        - type: VALID_CODE_ENTERED
                          timestamp: '2026-06-12T01:24:47.311201+00:00'
                          details:
                            code_tried: '835126'
                            status: Approved
                          fee: 0
                        - type: EMAIL_VERIFICATION_APPROVED
                          timestamp: '2026-06-12T01:24:47.384292+00:00'
                          details: null
                          fee: 0
                      matches: []
                    vendor_data: user-5678
                    metadata: null
                    created_at: '2026-06-12T01:24:47.401719+00:00'
                Failed (attempts remaining):
                  summary: >-
                    गलत कोड — उपयोगकर्ता पुनः प्रयास कर सकता है; यहाँ request_id
                    एक वन-टाइम UUID है
                  value:
                    request_id: 11111111-2222-3333-4444-555555555555
                    status: Failed
                    message: 'The verification code is incorrect. Attempts remaining: 2'
                    email: null
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-12T01:24:21.512340+00:00'
                Declined (risk policy):
                  summary: >-
                    सही कोड, लेकिन पता डिस्पोज़ेबल है और
                    disposable_email_action=DECLINE है
                  value:
                    request_id: 8c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                    status: Declined
                    message: The verification code is correct.
                    email:
                      status: Declined
                      email: tempuser42@mailinator.com
                      is_breached: false
                      breaches: []
                      is_disposable: true
                      is_undeliverable: false
                      verification_attempts: 1
                      verified_at: '2026-06-12T01:24:47.311323Z'
                      warnings:
                        - feature: EMAIL
                          risk: DISPOSABLE_EMAIL_DETECTED
                          additional_data: null
                          log_type: error
                          short_description: Disposable email detected
                          long_description: >-
                            The system detected that the email is disposable,
                            which is not allowed.
                      lifecycle:
                        - type: EMAIL_VERIFICATION_MESSAGE_SENT
                          timestamp: '2026-06-12T01:23:39.580554+00:00'
                          details:
                            status: Success
                            reason: null
                          fee: 0.02
                        - type: VALID_CODE_ENTERED
                          timestamp: '2026-06-12T01:24:47.311201+00:00'
                          details:
                            code_tried: '123456'
                            status: Approved
                          fee: 0
                        - type: EMAIL_VERIFICATION_DECLINED
                          timestamp: '2026-06-12T01:24:47.384292+00:00'
                          details:
                            reason: DISPOSABLE_EMAIL_DETECTED
                          fee: 0
                      matches: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-12T01:24:47.401719+00:00'
                Expired or Not Found:
                  summary: पिछले 5 मिनट में इस पते के लिए कोई लंबित सत्यापन नहीं है
                  value:
                    request_id: 88808a77-06e9-4cb0-85f5-9c052ddfd987
                    status: Expired or Not Found
                    message: No pending email verification found in the last 5 minutes.
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-12T01:24:59.887904+00:00'
        '400':
          description: >-
            सत्यापन त्रुटि — DRF का फ़ील्ड-त्रुटि एनवलप: प्रति त्रुटियुक्त
            फ़ील्ड संदेशों का एक ऐरे।
          content:
            application/json:
              examples:
                Invalid email:
                  summary: गलत स्वरूपित ईमेल पता
                  value:
                    email:
                      - Enter a valid email address.
                Missing code:
                  summary: बॉडी में `code` शामिल नहीं है
                  value:
                    code:
                      - This field is required.
        '403':
          description: >-
            अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो;
            गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। जाँच निःशुल्क
            हैं, इसलिए यहाँ कोई क्रेडिट जाँच नहीं है।
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति
            API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और
            इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में
            `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और
            `Retry-After` हेडर होते हैं।
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: वर्तमान मिनट में 300 से अधिक राइट अनुरोध
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/email/check/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "alice@example.com",
                "code": "123456",
                "disposable_email_action": "DECLINE"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.email.check_code(
                email="alice@example.com",
                code="123456",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.email.checkCode({
              email: "alice@example.com",
              code: "123456",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.CheckCode(ctx, didit.EmailCheckCodeParams{\n\tEmail: \"alice@example.com\",\n\tCode:  \"123456\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.EmailCheckCodeParams;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.email().checkCode(EmailCheckCodeParams.builder()
                    .email("alice@example.com")
                    .code("123456")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->email->checkCode([
                'email' => 'alice@example.com',
                'code' => '123456',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.email.check_code(
              email: "alice@example.com",
              code: "123456"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Email.CheckCodeAsync(new
            EmailCheckCodeParams

            {
                Email = "alice@example.com",
                Code = "123456",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    EmailVerificationCheckResponse:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            `Approved`/`Declined` पर: मिलान किए गए सत्यापन की सत्र id — `POST
            /v3/email/send/` द्वारा लौटाए गए `request_id` के समान। `Failed` और
            `Expired or Not Found` पर: एक यादृच्छिक वन-ऑफ़ UUID जिसे बाद में
            देखा नहीं जा सकता।
        status:
          type: string
          enum:
            - Approved
            - Declined
            - Failed
            - Expired or Not Found
          description: >-
            `Approved` — सही कोड, अस्वीकृति का कोई जोखिम नहीं। `Declined` —
            अंतिम: अस्वीकृति का कोई जोखिम मेल खा गया या प्रयास सीमा (3) समाप्त
            हो गई। `Failed` — गलत कोड, प्रयास शेष हैं। `Expired or Not Found` —
            पिछले 5 मिनट में इस पते के लिए कोई लंबित सत्यापन नहीं।
        message:
          type: string
          description: >-
            गलत कोड के बाद शेष प्रयासों की संख्या सहित परिणाम का मानव-पठनीय
            स्पष्टीकरण।
        email:
          type: object
          nullable: true
          description: >-
            पूर्ण ईमेल रिपोर्ट। केवल अंतिम परिणामों (`Approved`/`Declined`) पर
            मौजूद (null नहीं); `Failed` पर `null` और `Expired or Not Found` पर
            अनुपस्थित।
          properties:
            status:
              type: string
              enum:
                - Approved
                - Declined
                - In Review
                - Not Finished
                - Expired
              description: >-
                ईमेल सत्यापन की अंतिम स्थिति। अंतिम रूप दी गई जाँचों के लिए
                शीर्ष-स्तरीय `status` से मेल खाती है।
            email:
              type: string
              format: email
              description: सत्यापित ईमेल पता।
              example: alice@example.com
            is_breached:
              type: boolean
              description: >-
                `true` जब पता ज्ञात डेटा ब्रीच में दिखाई देता है (अंतिम रूप दिए
                जाने पर ब्रीच इंटेलिजेंस लुकअप चलाया गया)।
            breaches:
              type: array
              description: >-
                इस पते वाले अधिकतम 5 सबसे हालिया ज्ञात डेटा उल्लंघन। जब
                `is_breached` मान `false` हो तो खाली ऐरे (या छोड़ा गया)।
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: उल्लंघन पहचानकर्ता।
                  domain:
                    type: string
                    description: उल्लंघन से प्रभावित सेवा का डोमेन।
                  breach_date:
                    type: string
                    format: date
                    description: उल्लंघन होने की तारीख।
                  breach_emails_count:
                    type: integer
                    description: उल्लंघन में उजागर हुए खातों की कुल संख्या।
                  description:
                    type: string
                    description: उल्लंघन का मानव-पठनीय विवरण (HTML मार्कअप हो सकता है)।
                  logo_path:
                    type: string
                    description: उल्लंघित सेवा के लोगो का URL।
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      उजागर किए गए डेटा की श्रेणियां, snake_case में (उदा.,
                      `email_addresses`, `passwords`)।
                  is_verified:
                    type: boolean
                    description: क्या उल्लंघन को वैध के रूप में सत्यापित किया गया है।
            is_disposable:
              type: boolean
              description: >-
                `true` जब डोमेन किसी ज्ञात डिस्पोज़ेबल/अस्थायी-मेल प्रदाता से
                संबंधित हो।
            is_undeliverable:
              type: boolean
              description: >-
                `true` जब पता मेल प्राप्त नहीं कर सकता (विफल सिंटैक्स या DNS/MX
                सत्यापन, या संदेश बाउंस हो गया)।
            verification_attempts:
              type: integer
              description: >-
                इस सत्यापन के लिए OTP भेजे जाने की संख्या (1, या पुनः प्रयास के
                बाद 2)।
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                जब सही कोड दर्ज किया गया था। `null` यदि सत्यापन कभी स्वीकृत नहीं
                हुआ था।
            warnings:
              type: array
              description: >-
                सत्यापन के दौरान रिकॉर्ड की गई जोखिम चेतावनियां (डुप्लिकेट,
                ब्रीच, डिस्पोजेबल, अनडिलीवरेबल, प्रयास सीमा पार, ब्लॉकलिस्ट,
                आदि)। कोई न होने पर खाली ऐरे।
              items:
                type: object
                properties:
                  feature:
                    type: string
                    description: सुविधा जिसने चेतावनी उत्पन्न की। यहाँ हमेशा `EMAIL`।
                  risk:
                    type: string
                    description: मशीन-पठनीय जोखिम कोड।
                  additional_data:
                    type: object
                    nullable: true
                    description: >-
                      जोखिम-विशिष्ट संदर्भ (उदा., डुप्लिकेट जोखिमों के लिए
                      डुप्लिकेट सत्र id)। जब जोखिम में कोई अतिरिक्त डेटा नहीं
                      होता है तो `null`।
                  log_type:
                    type: string
                    enum:
                      - error
                      - warning
                      - information
                    description: >-
                      गंभीरता। `error` जोखिम सत्यापन को अस्वीकृत करते हैं,
                      `warning` इसे समीक्षा के लिए फ़्लैग करती है, `information`
                      स्टेटस को प्रभावित किए बिना रिकॉर्ड की जाती है।
                  short_description:
                    type: string
                    description: जोखिम का मानव-पठनीय एक पंक्ति का सारांश।
                  long_description:
                    type: string
                    description: जोखिम का मानव-पठनीय स्पष्टीकरण।
            lifecycle:
              type: array
              description: >-
                सत्यापन का कालानुक्रमिक ऑडिट ट्रेल। इवेंट `type` इनमें से एक है:
                `EMAIL_VERIFICATION_MESSAGE_SENT`,
                `EMAIL_VERIFICATION_RETRY_MESSAGE_SENT`, `VALID_CODE_ENTERED`,
                `INVALID_CODE_ENTERED`, `EMAIL_VERIFICATION_APPROVED`,
                `EMAIL_VERIFICATION_DECLINED`, `EMAIL_VERIFICATION_IN_REVIEW`,
                `EMAIL_VERIFICATION_EXPIRED`।
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: इवेंट प्रकार।
                  timestamp:
                    type: string
                    format: date-time
                    description: जब इवेंट हुआ था।
                  details:
                    type: object
                    nullable: true
                    description: >-
                      इवेंट-विशिष्ट payload। भेजने वाले इवेंट्स: `{status,
                      reason}`। कोड-प्रविष्टि इवेंट्स: `{code_tried, status}`।
                      अंतिम-स्थिति इवेंट्स: `null`, या अस्वीकृत अथवा समीक्षाधीन
                      होने पर `{reason}`।
                  fee:
                    type: number
                    description: >-
                      इस इवेंट के लिए बिल की गई USD राशि। केवल पहली बार
                      सफलतापूर्वक भेजे जाने पर गैर-शून्य; पुनः प्रयासों, कोड
                      प्रविष्टियों और स्थिति इवेंट्स के लिए 0।
            matches:
              type: array
              description: >-
                आपके एप्लिकेशन (KYC, KYB, या API) के अन्य सत्र जहाँ एक ही ईमेल
                पते का उपयोग किसी भिन्न उपयोगकर्ता (भिन्न `vendor_data`) द्वारा
                किया गया था। 5 प्रविष्टियों तक; उपस्थित होने पर एक सिंथेटिक
                सूची-प्रविष्टि ब्लॉकलिस्ट मिलान पहले जोड़ा जाता है (और केवल तब
                जब कोई सत्र-व्युत्पन्न ब्लॉकलिस्टेड ईमेल मौजूद न हो) —
                सत्र-व्युत्पन्न मिलान created_at क्रम बनाए रखते हैं। कोई मिलान न
                होने पर खाली ऐरे।
              items:
                type: object
                properties:
                  session_id:
                    type: string
                    format: uuid
                    description: >-
                      उस अन्य सत्यापन का सत्र id जिसने इस ईमेल पते का उपयोग किया
                      था।
                  session_number:
                    type: integer
                    description: उस सत्र की मानव-पठनीय अनुक्रमिक संख्या।
                  vendor_data:
                    type: string
                    nullable: true
                    description: उस सत्र का `vendor_data`।
                  verification_date:
                    type: string
                    description: जब वह सत्र बनाया गया था (`YYYY-MM-DDTHH:MM:SSZ`)।
                  email:
                    type: string
                    description: मिलान किया गया ईमेल पता।
                  status:
                    type: string
                    description: >-
                      उस सत्र की स्थिति (उदा., `Approved`, `Declined`, `In
                      Progress`)।
                  is_blocklisted:
                    type: boolean
                    description: क्या ईमेल पता आपके एप्लिकेशन की ब्लॉकलिस्ट में है।
                  api_service:
                    type: string
                    nullable: true
                    description: >-
                      API-प्रकार के सत्रों के लिए, स्टैंडअलोन API जिसने इसे
                      बनाया (उदा. `PHONE_VERIFICATION`); नियमित सत्यापन सत्रों
                      के लिए `null`।
                  source:
                    type: string
                    description: >-
                      मिलान कहाँ पाया गया था। आमतौर पर `session`; किसी संगठन
                      सूची प्रविष्टि के माध्यम से ब्लॉकलिस्ट हिट होने पर
                      `source: "list_entry"` और null
                      `session_id`/`session_number` के साथ एक सिंथेटिक मिलान
                      पहले जोड़ा जाता है।
            email_social:
              $ref: '#/components/schemas/EmailSocialFootprint'
            email_intelligence:
              allOf:
                - $ref: '#/components/schemas/EmailIntelligence'
              description: >-
                ईमेल इंटेलिजेंस संकेत। केवल तभी मौजूद होते हैं जब जांच में
                `enable_enrichment` का मान `true` था।
        vendor_data:
          type: string
          nullable: true
          description: >-
            मिलान किए गए सत्यापन के सत्र का `vendor_data`। `Expired or Not
            Found` पर `null`।
        metadata:
          type: object
          nullable: true
          description: >-
            मेल खाने वाले सत्यापन के सत्र का `metadata`। `Expired or Not Found`
            पर `null`।
        created_at:
          type: string
          format: date-time
          description: इस जांच के रिस्पॉन्स का टाइमस्टैम्प।
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        ईमेल पते का सोशल फ़ुटप्रिंट: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह पंजीकृत है।
        केवल तभी मौजूद होता है जब `enable_social` सेट किया गया था और जांच पूरी
        हो गई थी। प्रत्येक संख्या शून्य हो सकती है यदि इसके लिए कोई डेटा वापस
        नहीं आया। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जांच की
        गई थी और उनमें से किसी पर भी ईमेल पता नहीं मिला - एक मान्य, बिल योग्य
        उत्तर और एक सामान्य सिंथेटिक-पहचान संकेत।
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: वे प्लेटफ़ॉर्म जहाँ ईमेल पते के पंजीकृत होने की पुष्टि हुई है।
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: पंजीकरण के लिए मूल्यांकन किए गए प्लेटफ़ॉर्म।
          example: 14
        names_found:
          type: integer
          nullable: true
          description: वे प्लेटफ़ॉर्म जिन्होंने संबद्ध नाम लौटाया।
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: वे प्लेटफ़ॉर्म जिन्होंने प्रोफ़ाइल फ़ोटो लौटाई।
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: संचार प्लेटफ़ॉर्म जिनमें उपस्थिति का पता चला है।
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: संसूचित उपस्थिति वाली विशिष्ट प्लेटफ़ॉर्म श्रेणियां।
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: कंपोजिट डिजिटल-परिपक्वता संकेतक, 0-10।
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: प्रोफ़ाइल-समृद्धि संकेतक, 0-10।
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: निःशुल्क बनाम सशुल्क प्लेटफ़ॉर्म मिक्स, 0-10।
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: निःशुल्क प्लेटफ़ॉर्म पर पंजीकरण।
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: पूरी तरह से भुगतान वाले प्लेटफ़ॉर्म पर पंजीकरण।
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: फ़्रीमियम प्लेटफ़ॉर्म पर पंजीकरण।
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: WhatsApp प्रोफ़ाइल की पूर्णता। केवल फ़ोन; ईमेल के लिए null।
          example: Partial
        registered_platforms:
          type: array
          description: वे प्लेटफ़ॉर्म जहाँ पंजीकरण की पुष्टि हुई है।
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: नकारात्मक परिणाम के साथ जाँचे गए प्लेटफ़ॉर्म।
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: प्रति प्लेटफ़ॉर्म श्रेणी पंजीकृत संख्या और अनुपात।
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            प्रति-प्लेटफ़ॉर्म प्रोफ़ाइल विवरण, प्लेटफ़ॉर्म द्वारा की-बद्ध, जब
            प्लेटफ़ॉर्म उन्हें प्रदर्शित करता है।
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        सामान्यीकृत ईमेल-इंटेलिजेंस ब्लॉक। केवल तभी मौजूद होता है जब इस ईमेल के
        लिए इंटेलिजेंस ऐड-ऑन चला हो; मौजूद होने पर इसे समान मानों के साथ
        `enrichment` उपनाम के रूप में भी दिखाया जाता है।
      properties:
        score:
          type: number
          nullable: true
          description: सामान्यीकृत 0-100 जोखिम स्कोर। उच्च मान अधिक जोखिम भरा होता है।
        deliverable:
          type: string
          nullable: true
          description: डिलीवरी क्षमता बैंड (उदा., `high`)।
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium` या `High`।'
        breach_risk_index:
          type: number
          nullable: true
          description: संख्यात्मक उल्लंघन-जोखिम सूचकांक।
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` जब पता किसी हालिया ब्रीच में दिखाई देता है।'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` जब पता कई ब्रीच में दिखाई देता है।'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` जब डोमेन एक थ्रोअवे प्रदाता हो।'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` जब डोमेन एक मुफ़्त मेल प्रदाता हो।'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` जब पता ज्ञात ब्रीच में दिखाई देता है।'
        no_of_breaches:
          type: number
          nullable: true
          description: इस पते को शामिल करने वाले ज्ञात डेटा उल्लंघनों की संख्या।
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  सिग्नल का स्थिर Didit पहचानकर्ता, उदाहरण के लिए `IR-5AC67A32`।
                  अपारदर्शी: इसके आधार पर समूह बनाएँ और फ़िल्टर करें, इसे पार्स
                  न करें।
              value:
                nullable: true
                description: >-
                  जोखिम फ़्लैग के लिए (उदाहरण के लिए `voip`, `leaked`,
                  `disposable`, `spam_trap`), इसका मान: एक बूलियन, एक स्तर या एक
                  तिथि। स्कोर्ड कारण कोड के लिए नल।
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: क्या सिग्नल ने जोखिम बढ़ाया या विश्वास जोड़ा।
              message:
                type: string
                description: सिग्नल का मानव-पठनीय स्पष्टीकरण, अंग्रेज़ी में।
              impact_level:
                type: string
                nullable: true
                description: >-
                  सिग्नल ने स्कोर को कितनी दृढ़ता से प्रभावित किया, उदाहरण के
                  लिए `low`, `medium` या `high`।
          description: >-
            स्कोर की व्याख्या करने वाले सिग्नल, प्रत्येक एक स्थिर Didit कोड, एक
            दिशा, एक संदेश और एक प्रभाव स्तर के साथ। समय के साथ नए कोड दिखाई दे
            सकते हैं, इसलिए अज्ञात कोड को अस्वीकार न करें।
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: प्लेटफ़ॉर्म पहचानकर्ता।
          example: whatsapp
        category:
          type: string
          description: >-
            प्लेटफ़ॉर्म श्रेणी, उदाहरण के लिए MESSAGING, SOCIAL_MEDIA,
            ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER।
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            विश्वव्यापी प्लेटफ़ॉर्म के लिए `global`, क्षेत्र-विशिष्ट प्लेटफ़ॉर्म
            के लिए `local`।
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: इस श्रेणी के वे प्लेटफ़ॉर्म जहाँ पंजीकरण की पुष्टि हो गई है।
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: श्रेणी के जाँचे गए प्लेटफ़ॉर्म का पंजीकरण सहित हिस्सा, 0.0-1.0।
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: प्रोफ़ाइल का नाम, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।
        photo:
          type: string
          nullable: true
          description: प्रोफ़ाइल फ़ोटो URL, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।
        about:
          type: string
          nullable: true
          description: >-
            प्रोफ़ाइल का अबाउट/बायो टेक्स्ट, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता
            है।
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: प्रोफ़ाइल दृश्यता, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।
        business_account:
          type: boolean
          nullable: true
          description: >-
            क्या प्रोफ़ाइल एक व्यावसायिक खाता है, जब प्लेटफ़ॉर्म इसे प्रदर्शित
            करता है।
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        आपकी एप्लिकेशन की API कुंजी, Business Console में Developers -> API keys
        से। प्राथमिक कुंजी के पास पूर्ण एक्सेस होता है। एक नामित कुंजी को स्कोप
        किया जा सकता है: प्रति संसाधन none, read या write, कुछ वर्कफ़्लो या
        स्वीकृत सत्रों तक सीमित, IP पतों की सूची तक सीमित, और समाप्ति तिथि तक
        सीमित। 401 का अर्थ है कि कुंजी गलत है, निरस्त कर दी गई है या उसकी
        समय-सीमा समाप्त हो गई है; 403 का अर्थ है कि कोई कुंजी नहीं भेजी गई थी,
        कुंजी के पास इस संसाधन या कार्रवाई का एक्सेस नहीं है, या अनुरोध उसकी IP
        सूची से बाहर के पते से आया था; सत्र रूट पर 404 का अर्थ है कि सत्र कुंजी
        के वर्कफ़्लो या स्थितियों से बाहर है। मीडिया एक्सेस के बिना एक कुंजी को
        छवि, वीडियो और PDF URL null के रूप में प्राप्त होते हैं, और सत्र write
        के बिना एक कुंजी को सत्र लिंक और token null के रूप में प्राप्त होते हैं।
        देखें https://docs.didit.me/console/api-keys।

````

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