> ## 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 API: SMS सत्यापन कोड भेजें

> Didit का POST /v3/phone/send/ SMS वन-टाइम कोड भेजता है। ब्लॉक नंबरों पर स्वतः पुनः प्रयास, 5-min वैधता, प्रति सत्यापन भुगतान, कोई मासिक न्यूनतम नहीं।

## अपने ब्रांड का नाम SMS में रखें

आपके एप्लिकेशन का SMS सेंडर नाम, जिसे Business Console में सेट किया जाता है, SMS कोड के साथ बिना अतिरिक्त शुल्क के जाता है:

> 123456 आपका **Acme Bank** के लिए सत्यापन कोड है

किसी एक कोड पर अलग नाम दिखाने के लिए `options.sms_sender_name` पास करें (1 से 30 अक्षर: केवल अक्षर, अंक, स्पेस और ' & - ! की अनुमति है, और यह केवल अंक नहीं हो सकता):

```json theme={null}
{
  "phone_number": "+14155552671",
  "options": {
    "preferred_channel": "sms",
    "sms_sender_name": "Acme Bank"
  }
}
```

इन नियमों से बाहर का नाम `400` लौटाता है और कोई कोड नहीं भेजा जाता।
WhatsApp कोड एक निश्चित संदेश का उपयोग करते हैं और उन पर ब्रांड का नाम नहीं होता। अपने व्यवसाय के नाम से भेजने के लिए Business Console में अपना WhatsApp Business नंबर जोड़ें। देखें [अपने नंबर से WhatsApp कोड भेजें](https://docs.didit.me/hi/core-technology/phone-verification/overview.md#अपने-स्वयं-के-नंबर-से-whatsapp-कोड-भेजें)।
देखें [ब्रांडेड सत्यापन संदेश](https://docs.didit.me/hi/core-technology/phone-verification/overview.md#ब्रांडेड-सत्यापन-संदेश) कि किसी कोड पर कौन सा नाम जाता है और नए नामों की दैनिक सीमा क्या है।

## प्रदाता की सेवा में रुकावट संभालें

यदि फ़ोन प्रदाता अस्थायी रूप से उपलब्ध नहीं है, तो यह endpoint `502` और एक स्थिर, मशीन-पठनीय कोड लौटाता है:

```json theme={null}
{
  "detail": "The phone verification provider is temporarily unavailable.",
  "code": "phone_provider_unavailable"
}
```

इस प्रतिक्रिया को पुनः प्रयास योग्य मानें। छोटा बैकऑफ़ लगाएँ और उपयोगकर्ता को अस्थायी सेवा का संदेश दिखाएँ, न कि उससे किसी वैध फ़ोन नंबर या कोड को बदलने के लिए कहें।


## OpenAPI

````yaml hi/openapi-25.json POST /v3/phone/send/
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/phone/send/:
    post:
      tags:
        - Standalone APIs
      summary: फ़ोन कोड भेजें
      description: >-
        WhatsApp, SMS या किसी अन्य समर्थित चैनल के माध्यम से किसी फ़ोन नंबर पर
        वन-टाइम पासकोड (OTP) भेजें, फिर [`POST
        /v3/phone/check/`](/hi/standalone-apis/phone-check) के साथ इसे सत्यापित
        करें。


        **send और check एक साथ कैसे काम करते हैं।** सत्यापन स्थिति आपके
        एप्लिकेशन और E.164 `phone_number` द्वारा निर्धारित होती है — check कॉल
        में `request_id` नहीं लिया जाता है। प्रत्येक नया send एक लंबित सत्यापन
        बनाता है जो **5 मिनट** तक मान्य रहता है: विंडो बंद होने से पहले उसी नंबर
        और उपयोगकर्ता द्वारा प्राप्त कोड के साथ check को कॉल करें। सत्यापन लंबित
        रहने के दौरान उसी नंबर के लिए फिर से send कॉल करने पर उसी सत्यापन के लिए
        कोड पुनः भेजा जाता है (`status: "Retry"`, वही `request_id`)। इस तरह से
        अधिकतम एक पुनः प्रयास जोड़ा जाता है (कुल दो send); इसके बाद किया गया
        send एक नए `request_id` के साथ एक नया सत्यापन शुरू करता है। 5 मिनट की
        विंडो पहले send से मापी जाती है और पुनः प्रयासों द्वारा बढ़ाई नहीं जाती
        है。


        **डिलीवरी चैनल।** `options.preferred_channel` चैनल का चयन करता है
        (डिफ़ॉल्ट रूप से `whatsapp`; `sms`, `telegram`, `voice`, `rcs`, `viber`,
        और `zalo` भी समर्थित हैं)। जब गंतव्य देश या नंबर के लिए पसंदीदा चैनल
        अनुपलब्ध होता है, तो डिलीवरी अपने आप SMS पर फ़ालबैक हो जाती है — send
        अभी भी `Success` रिपोर्ट करता है, और वास्तव में उपयोग किए गए चैनल की
        रिपोर्ट check रिस्पॉन्स (`phone.verification_method` और `lifecycle`
        इवेंट) द्वारा दी जाती है。


        **ब्रांडिंग।** SMS कोड बिना किसी अतिरिक्त लागत के Business Console में
        सेट किए गए आपके एप्लिकेशन के SMS सेंडर नाम के साथ जाते हैं। किसी कोड को
        दूसरे नाम से भेजने के लिए `options.sms_sender_name` पास करें, या कोई
        सेंडर नाम सेट न होने पर अपने व्हाइट लेबल सार्वजनिक नाम पर फ़ालबैक करने
        के लिए `options.use_white_label_customization: true` पास करें। WhatsApp
        कोड एक निश्चित संदेश का उपयोग करते हैं; उन्हें अपने व्यवसाय के नाम और
        नंबर से भेजने के लिए Business Console में अपना स्वयं का WhatsApp
        Business नंबर कनेक्ट करें, जिस पर केवल Didit शुल्क लिया जाएगा。


        **Send स्थितियां।** `Success` — नए सत्यापन के लिए OTP भेजा गया; `Retry`
        — लंबित सत्यापन के लिए OTP पुनः भेजा गया; `Blocked` — धोखाधड़ी-रोधी परत
        ने भेजने से मना कर दिया (`reason` देखें, जैसे `repeated_attempts`,
        `suspicious`, `spam`)। एक `Blocked` send सत्यापन को तुरंत उच्च-जोखिम
        चेतावनी के साथ `Declined` के रूप में अंतिम रूप देता है, इसलिए अनुवर्ती
        check `Expired or Not Found` लौटाता है。


        **बिलिंग।** कीमत गंतव्य देश और संदेश को वास्तव में डिलीवर करने वाले चैनल
        पर निर्भर करती है — [फ़ोन सत्यापन मूल्य
        निर्धारण](/hi/getting-started/phone-verification-pricing) देखें। केवल
        `Blocked` send ही निःशुल्क होने की गारंटी है: किसी भी अन्य अनबिल किए गए
        send प्रयास का शुल्क सत्यापन पूरा होने या समाप्त होने पर लिया जाता है,
        भले ही डिलीवरी की पुष्टि कभी न हुई हो या डिलीवरी प्रदाता ने संदेश को
        डिलीवर न किए जाने योग्य बताया हो। Checks हमेशा निःशुल्क होते हैं।
        दुरुपयोग-रोधी उपाय के रूप में, आपके संगठन के पहले टॉप अप (`403`) तक फ़ोन
        सत्यापन अक्षम रहता है。


        **सत्र निरंतरता।** प्रत्येक नया सत्यापन एक API-प्रकार के सत्र के रूप में
        सुरक्षित रहता है: `request_id` एक वास्तविक सत्र ID है जिसे आप `GET
        /v3/session/{sessionId}/decision/` पर पास कर सकते हैं, सत्यापन Business
        Console में दिखाई देता है, और इसके आगे बढ़ने पर `status.updated` webhook
        इवेंट ट्रिगर होते हैं。


        **सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ डिलीवरी और बिलिंग को छोड़ देती
        हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint
        एक यादृच्छिक `request_id` के साथ एक स्थिर `Success` payload लौटाता है;
        कोई संदेश नहीं भेजा जाता है और कुछ भी सहेजा नहीं जाता है। सैंडबॉक्स
        check पर कोड `123456` का उपयोग करें。


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


        **रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300
        अनुरोध/मिनट का साझा राइट बजट, साथ ही प्रति फ़ोन नंबर प्रति घंटे 4 send
        प्रयासों की दुरुपयोग-रोधी सीमा; किसी भी सीमा से अधिक होने पर `429` लौटता
        है।
      operationId: post_v3phone_send
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_number:
                  type: string
                  maxLength: 20
                  description: >-
                    E.164 प्रारूप में प्राप्तकर्ता का फ़ोन नंबर — शुरुआती `+` और
                    देश कोड (उदा., `+14155552671`)। नंबरों को मान्य और E.164 में
                    सामान्यीकृत किया जाता है; पार्स न होने योग्य या अमान्य नंबर
                    `phone_number` फ़ील्ड त्रुटि के साथ `400` लौटाते हैं।
                  example: '+14155552671'
                options:
                  type: object
                  description: OTP डिलीवरी विकल्प। सभी फ़ील्ड वैकल्पिक हैं।
                  properties:
                    code_size:
                      type: integer
                      minimum: 4
                      maximum: 8
                      default: 6
                      description: OTP में अंकों की संख्या।
                    locale:
                      type: string
                      maxLength: 5
                      pattern: ^[a-z]{2,3}(-[A-Z]{2,3})?$
                      description: >-
                        सत्यापन संदेश को स्थानीयकृत करने के लिए उपयोग किया जाने
                        वाला BCP-47 लोकेल (उदा. `en-US`, `fr`, `es`)। अमान्य
                        प्रारूप `400` लौटाते हैं।
                      example: en-US
                    preferred_channel:
                      type: string
                      enum:
                        - whatsapp
                        - sms
                        - telegram
                        - voice
                        - rcs
                        - viber
                        - zalo
                      default: whatsapp
                      description: >-
                        पसंदीदा डिलीवरी चैनल। यदि गंतव्य देश या नंबर के लिए चैनल
                        अनुपलब्ध है, तो संदेश स्वचालित रूप से SMS पर फ़ॉलबैक हो
                        जाता है — भेजने का परिणाम फिर भी `Success` रिपोर्ट होता
                        है।
                    use_white_label_customization:
                      type: boolean
                      default: false
                      description: >-
                        जब `true` होता है, तो भेजना व्हाइट-लेबल होता है: यदि
                        आपके एप्लिकेशन का कोई SMS प्रेषक नाम नहीं है, तो SMS
                        इसके बजाय आपके व्हाइट लेबल सार्वजनिक नाम का उल्लेख करता
                        है ("123456 Acme Bank के लिए आपका सत्यापन कोड है")। आपका
                        SMS प्रेषक नाम, जब सेट होता है, इस ध्वज के साथ या उसके
                        बिना उपयोग किया जाता है। अन्य चैनल से SMS फ़ॉलबैक सहित
                        SMS संदेशों पर लागू होता है; WhatsApp कोड एक निश्चित
                        संदेश के साथ भेजे जाते हैं और ब्रांडेड नहीं होते हैं।
                        डिफ़ॉल्ट रूप से `false` होता है।
                    sms_sender_name:
                      type: string
                      nullable: true
                      maxLength: 30
                      example: Acme Bank
                      description: >-
                        वह नाम जो इस कोड के SMS में होता है ("123456 is your
                        verification code for Acme Bank"), आपके एप्लिकेशन के SMS
                        सेंडर नाम के बजाय। निःशुल्क। 1 से 30 वर्ण: केवल अक्षर,
                        अंक, स्पेस और ' & - !, केवल अंक नहीं, शब्दों के बीच
                        सिंगल स्पेस के साथ; कोई अन्य मान `400` लौटाता है और कोई
                        कोड नहीं भेजा जाता है। छोड़े जाने, `null` या रिक्त होने
                        पर, आपके एप्लिकेशन के SMS सेंडर नाम का उपयोग किया जाता
                        है। प्रत्येक एप्लिकेशन प्रति दिन (UTC) अधिकतम दो नए
                        नामों का उपयोग शुरू कर सकता है; इसके बाद, कोड आपके
                        एप्लिकेशन के नाम के साथ भेजा जाता है। SMS संदेशों पर
                        लागू होता है, जिसमें किसी अन्य चैनल से SMS फ़ॉलबैक शामिल
                        है; WhatsApp कोड ब्रांडेड नहीं होते हैं।
                      pattern: ^$|^(?![\d ]+$)[\p{L}\p{N}'&!-]+( [\p{L}\p{N}'&!-]+)*$
                signals:
                  type: object
                  description: >-
                    अंतिम उपयोगकर्ता के बारे में वैकल्पिक डिवाइस और नेटवर्क
                    सिग्नल, जो धोखाधड़ी-रोधी परत को अग्रेषित किए जाते हैं ताकि
                    दुरुपयोगी या स्वचालित ट्रैफ़िक का बेहतर पता लगाया जा सके।
                    सभी फ़ील्ड वैकल्पिक हैं।
                  properties:
                    ip:
                      type: string
                      description: अंतिम उपयोगकर्ता के डिवाइस का IP पता। IPv4 या IPv6।
                      example: 192.0.2.1
                    device_id:
                      type: string
                      maxLength: 255
                      description: >-
                        अंतिम उपयोगकर्ता के डिवाइस का विशिष्ट पहचानकर्ता।
                        Android: `ANDROID_ID`; iOS: `identifierForVendor`।
                      example: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform:
                      type: string
                      enum:
                        - android
                        - ios
                        - ipados
                        - tvos
                        - web
                      description: अंतिम उपयोगकर्ता के डिवाइस का प्लेटफ़ॉर्म।
                    device_model:
                      type: string
                      maxLength: 255
                      description: अंतिम उपयोगकर्ता के डिवाइस का मॉडल।
                      example: iPhone17,2
                    os_version:
                      type: string
                      maxLength: 64
                      description: अंतिम उपयोगकर्ता के डिवाइस का ऑपरेटिंग-सिस्टम संस्करण।
                      example: 18.0.1
                    app_version:
                      type: string
                      maxLength: 64
                      description: आपके एप्लिकेशन का संस्करण।
                      example: 1.2.34
                    user_agent:
                      type: string
                      maxLength: 512
                      description: अंतिम उपयोगकर्ता के ब्राउज़र या ऐप का यूज़र एजेंट।
                      example: >-
                        Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X)
                        AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3
                        Mobile/15E148 Safari/604.1
                vendor_data:
                  type: string
                  description: >-
                    वैकल्पिक कॉलर-नियंत्रित पहचानकर्ता (आपकी आंतरिक उपयोगकर्ता
                    id, एक ईमेल, एक UUID, आदि) जो सत्र में सुरक्षित रहता है और
                    भेजने के रिस्पॉन्स, मिलान जांच रिस्पॉन्स, webhook और
                    Business Console में वापस लौटाया जाता है। Didit के
                    `request_id` को अपने उपयोगकर्ता रिकॉर्ड के साथ सहसंबंधित
                    करने के लिए इसका उपयोग करें।
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    वैकल्पिक फ़्री-फ़ॉर्म JSON ऑब्जेक्ट जो सत्र पर बना रहता है
                    और सेंड रिस्पॉन्स, मिलान जांच रिस्पॉन्स, webhooks और
                    Business Console में वापस प्रदर्शित होता है।
              required:
                - phone_number
            examples:
              WhatsApp (default):
                summary: >-
                  WhatsApp के माध्यम से 6-अंकीय OTP, जो स्वचालित रूप से SMS पर
                  फ़ॉलबैक करता है
                value:
                  phone_number: '+14155552671'
                  options:
                    preferred_channel: whatsapp
                    locale: en-US
                  vendor_data: user-1234
              SMS with custom code length:
                summary: 4-अंकीय कोड के साथ SMS डिलीवरी बाध्य करें
                value:
                  phone_number: '+34699999999'
                  options:
                    preferred_channel: sms
                    code_size: 4
                    locale: es
              With fraud signals:
                summary: >-
                  एंटी-फ़्रॉड स्क्रीनिंग को मजबूत करने के लिए डिवाइस सिग्नल
                  फ़ॉरवर्ड करें
                value:
                  phone_number: '+14155552671'
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: ios
                    device_model: iPhone17,2
                    os_version: 18.0.1
                    app_version: 1.2.34
                  vendor_data: user-1234
      responses:
        '200':
          description: >-
            भेजने की पुष्टि की गई। `status` की जांच करें: `Success` और `Retry`
            का अर्थ है कि एक कोड रास्ते में है; `Blocked` का अर्थ है कि
            धोखाधड़ी-रोधी लेयर ने अस्वीकार कर दिया और सत्यापन पहले ही `Declined`
            के रूप में अंतिम रूप ले चुका है। `request_id` संग्रहीत सत्र आईडी है
            (`Retry` पर वही आईडी)।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneVerificationSendResponse'
              examples:
                Success:
                  summary: एक नए सत्यापन के लिए भेजा गया OTP
                  value:
                    request_id: e39cb057-92fc-4b59-b84e-02fec29a0f24
                    status: Success
                    reason: null
                    vendor_data: user-1234
                    metadata: null
                Retry:
                  summary: >-
                    5 मिनट की समय-सीमा के भीतर उसी नंबर पर दूसरा प्रेषण — समान
                    request_id
                  value:
                    request_id: e39cb057-92fc-4b59-b84e-02fec29a0f24
                    status: Retry
                    reason: null
                    vendor_data: user-1234
                    metadata: null
                Blocked:
                  summary: >-
                    धोखाधड़ी-रोधी अस्वीकृति — सत्यापन को अस्वीकृत के रूप में
                    अंतिम रूप दिया गया, कोई बिलिंग नहीं की गई
                  value:
                    request_id: 0d8af1f4-0c43-46d7-b75c-6e4e22c0a7b3
                    status: Blocked
                    reason: repeated_attempts
                    vendor_data: user-1234
                    metadata: null
        '400':
          description: >-
            सत्यापन त्रुटि। विकृत इनपुट DRF का फ़ील्ड-त्रुटि एनवेलप लौटाता है
            (प्रति आपत्तिजनक फ़ील्ड संदेशों की एक सरणी, विकल्प त्रुटियों के लिए
            `options` के अंतर्गत नेस्टेड)। ऐसा नंबर जो पार्स तो हो जाता है लेकिन
            भेजने के समय अस्वीकृत हो जाता है (पहुंच से बाहर, या कोई अयोग्य लाइन
            प्रकार जैसे शॉर्ट कोड), इसके बजाय `{"detail": ...}` एनवेलप लौटाता
            है।
          content:
            application/json:
              examples:
                Invalid phone number (field error):
                  summary: नंबर मान्य E.164 नहीं है
                  value:
                    phone_number:
                      - Invalid phone number provided.
                Missing phone number:
                  summary: '`phone_number` बॉडी में शामिल नहीं है'
                  value:
                    phone_number:
                      - This field is required.
                Invalid options:
                  summary: >-
                    सीमा से बाहर `code_size`, विकृत `locale`, अज्ञात
                    `preferred_channel`
                  value:
                    options:
                      code_size:
                        - Ensure this value is less than or equal to 8.
                      locale:
                        - Ensure this field has no more than 5 characters.
                      preferred_channel:
                        - '"carrier_pigeon" is not a valid choice.'
                Number rejected at send time:
                  summary: मान्य E.164 प्रारूप लेकिन नंबर OTP प्राप्त नहीं कर सकता
                  value:
                    detail: Invalid phone number provided.
                Ineligible line type:
                  summary: लाइन प्रकार OTP प्राप्त नहीं कर सकता (उदा., शॉर्ट कोड)
                  value:
                    detail: Invalid phone line type provided.
        '403':
          description: >-
            अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो
            (`{"detail": ...}`); गलत, निरस्त या समय-सीमा समाप्त कुंजी `401`
            लौटाती है। किसी भी सेंड से पहले तब भी लौटाया जाता है जब संगठन ने कभी
            टॉप अप न किया हो (दुरुपयोग-रोधी द्वार) या जब उसका बैलेंस गंतव्य की
            भेजने की कीमत को कवर नहीं कर सकता (`{"error": ...}`).
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है
                  value:
                    detail: You do not have permission to perform this action.
                Top-up required:
                  summary: संगठन के पहले टॉप अप तक फ़ोन सत्यापन अक्षम रहता है
                  value:
                    detail: >-
                      To protect against abuse, phone verification is disabled
                      until your first top-up.
                Not enough credits:
                  summary: संगठन का बैलेंस भेजने की कीमत को कवर नहीं कर सकता
                  value:
                    error: You don't have enough credits to perform this request.
        '429':
          description: >-
            रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति
            API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और
            इवेंट इनजेशन का 600 का एक अलग बजट है)। इसके अतिरिक्त, अपस्ट्रीम में
            प्रति फ़ोन नंबर प्रति घंटे 4 सत्यापन प्रयासों की एक दुरुपयोग-विरोधी
            सीमा लागू होती है। रिस्पॉन्स में `X-RateLimit-Limit`,
            `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर
            शामिल होते हैं। ध्यान दें: `X-RateLimit-*`/`Retry-After` हेडर केवल
            300/मिनट राइट-लिमिट 429 के साथ आते हैं; प्रति-नंबर कैप 429 में कोई
            दर-सीमा हेडर नहीं होता है।
          content:
            application/json:
              examples:
                Per-number cap:
                  summary: पिछले एक घंटे में उसी नंबर के लिए 4 से अधिक सत्यापन प्रयास
                  value:
                    detail: >-
                      Maximum verification attempts reached for this phone
                      number. Only 4 authentication attempts are allowed per
                      hour. Try again later or use a different number.
                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
        '500':
          description: >-
            सत्यापन बनाते समय अप्रत्याशित विफलता जो किसी ज्ञात प्रदाता आउटेज के
            कारण नहीं है। पुनः प्रयास करना सुरक्षित है।
          content:
            application/json:
              examples:
                Provider error:
                  summary: OTP डिलीवरी शुरू नहीं की जा सकी
                  value:
                    detail: Error creating phone verification
              schema:
                type: object
                properties:
                  detail:
                    type: string
        '502':
          description: >-
            फ़ोन सत्यापन प्रदाता अस्थायी रूप से अनुपलब्ध है - एक 5xx रिस्पॉन्स,
            टाइमआउट, या कनेक्शन विफलता जो इन-बिल्ट पुनः प्रयासों के बाद भी बनी
            रही। पुनः प्रयास करना सुरक्षित है; कोई शुल्क नहीं लिया जाता है और
            कोई प्रयास खर्च नहीं होता है।
          content:
            application/json:
              examples:
                Provider outage:
                  summary: प्रदाता ने भेजने के अनुरोध का उत्तर नहीं दिया
                  value:
                    detail: >-
                      Phone verification is temporarily unavailable. Please try
                      again shortly.
                    code: phone_provider_unavailable
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/phone/send/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "phone_number": "+14155552671",
                "options": {
                  "code_size": 6,
                  "preferred_channel": "whatsapp",
                  "locale": "en-US"
                },
                "vendor_data": "user-1234"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.phone.send_code(
                phone_number="+14155552671",
                options={
                    "locale": "en-US",
                    "preferred_channel": "whatsapp",
                },
                vendor_data="user-1234",
            )
            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.phone.sendCode({
              phone_number: "+14155552671",
              options: {
                locale: "en-US",
                preferred_channel: "whatsapp",
              },
              vendor_data: "user-1234",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.SendCode(ctx, didit.PhoneSendCodeParams{\n\tPhoneNumber: \"+14155552671\",\n\tOptions: didit.Some(didit.PhoneSendCodeParamsOptions{\n\t\tLocale:           didit.String(\"en-US\"),\n\t\tPreferredChannel: didit.Some(didit.PhoneSendCodeParamsOptionsPreferredChannel(\"whatsapp\")),\n\t}),\n\tVendorData: didit.String(\"user-1234\"),\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.PhoneSendCodeParams;

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

            var result = client.phone().sendCode(PhoneSendCodeParams.builder()
                    .phoneNumber("+14155552671")
                    .options(PhoneSendCodeParams.Options.builder()
                            .locale("en-US")
                            .preferredChannel(PhoneSendCodeParams.Options.PreferredChannel.of("whatsapp"))
                            .build())
                    .vendorData("user-1234")
                    .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->phone->sendCode([
                'phone_number' => '+14155552671',
                'options' => [
                    'locale' => 'en-US',
                    'preferred_channel' => 'whatsapp',
                ],
                'vendor_data' => 'user-1234',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.phone.send_code(
              phone_number: "+14155552671",
              options: {
                locale: "en-US",
                preferred_channel: "whatsapp",
              },
              vendor_data: "user-1234"
            )
            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.Phone.SendCodeAsync(new
            PhoneSendCodeParams

            {
                PhoneNumber = "+14155552671",
                Options = new PhoneSendCodeParamsOptions
                {
                    Locale = "en-US",
                    PreferredChannel = new PhoneSendCodeParamsOptionsPreferredChannel("whatsapp"),
                },
                VendorData = "user-1234",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    PhoneVerificationSendResponse:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            सत्यापन का सत्र id। `Retry` भेजने पर मूल भेजने के समान `request_id`
            लौटता है। यह id Business Console में दिखाई देता है, एक फ़ाइनलाइज़
            किए गए `POST /v3/phone/check/` द्वारा फिर से लौटाया जाता है, और इसे
            `GET /v3/session/{sessionId}/decision/` पर पास किया जा सकता है।
        status:
          type: string
          enum:
            - Success
            - Retry
            - Blocked
          description: >-
            `Success` — OTP एक नए सत्यापन पर भेजा गया। `Retry` — पिछले प्रेषण
            द्वारा बनाए गए लंबित सत्यापन के लिए OTP पुनः भेजा गया। `Blocked` —
            धोखाधड़ी-रोधी परत ने भेजने से मना कर दिया; सत्यापन तुरंत `Declined`
            के रूप में फ़ाइनलाइज़ कर दिया जाता है और कुछ भी बिल नहीं किया जाता
            है।
        reason:
          type: string
          nullable: true
          description: >-
            कोई संदेश भेजना `Blocked` क्यों था (उदा., `repeated_attempts`,
            `suspicious`, `spam`)। `Success` और `Retry` पर `null`।
        vendor_data:
          type: string
          nullable: true
          description: सत्र पर संग्रहीत `vendor_data` का इको (पहली बार भेजे गए डेटा से)।
        metadata:
          type: object
          nullable: true
          description: सत्र पर संग्रहीत `metadata` का इको (पहली बार भेजे गए डेटा से)।
  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.