> ## 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 शुरू करें - Travel Rule विजेट

> Didit: विजेट सेशन टोकन से वॉलेट स्वामित्व प्रमाण शुरू करें। मैसेज साइनिंग, Satoshi test, स्क्रीनशॉट या स्व-घोषणा; तरीका दोबारा चुनने पर फिर शुरू।

Widget Proof API प्रॉम्प्ट शुरू करें
प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें

<pre>
  \`Start a wallet-ownership proof for a widget session. This is the call the hosted widget makes when the end user picks a proof method; use it only if I build my own widget UI.

  Endpoint:
  POST [https://verification.didit.me/v3/travel-rule/widget/\{token}/proofs/](https://verification.didit.me/v3/travel-rule/widget/\{token}/proofs/)

  Authentication:
  None - the widget token in the URL path is the credential. Treat the token as a secret.

  Body:

  * method - one of the context's allowed\_methods: MESSAGE\_SIGNING, SATOSHI\_TEST, SCREENSHOT or SELF\_DECLARATION.
  * wallet\_address, chain - optional, default to the session's.

  Behavior:

  * 201 with a new PENDING proof. MESSAGE\_SIGNING returns the challenge to sign; SATOSHI\_TEST returns deposit\_address, expected\_amount and expires\_at; SELF\_DECLARATION is verified at once.
  * 200 with the proof already open when the same method is picked again (same challenge or amount): resume it, do not treat it as an error.
  * Picking another method closes the unfinished proof as METHOD\_SWITCHED, except a submitted screenshot or a test deposit still being checked.
  * After a REJECTED proof, picking a method starts a new one (201). A session takes a limited number of rejected proofs: the context reports max\_attempts, attempts\_used and attempts\_remaining.
  * Message signing works on EVM chains (Ethereum, BNB Chain, Polygon, Arbitrum, Base, Optimism, Avalanche, Linea and others), Bitcoin (BIP-137 and BIP-322 simple), Solana and Tron.

  Failure modes (errors carry a code to translate):

  * 400 - code CHAIN\_UNSUPPORTED when the method is not available on the chain; also an invalid body or a wallet that does not match the transfer.
  * 403 - SELF\_DECLARATION not allowed for the application.
  * 409 - code OWNERSHIP\_CHANGED: mint a new session for the current holder.
  * 409 - no attempts left (no code; the body carries attempts\_remaining 0): mint a new session.
  * 404 - unknown token. 410 - the session expired.

  Full guide: /transaction-monitoring/wallet-ownership-widget#what-it-proves.\`
</pre>

यहाँ पेस्ट करें


## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/widget/{token}/proofs/
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/travel-rule/widget/{token}/proofs/:
    post:
      tags:
        - Travel Rule
      summary: वॉलेट-स्वामित्व प्रमाण शुरू करें
      description: >-
        विजेट सत्र token-आधारित सार्वजनिक endpoint, किसी API कुंजी की आवश्यकता
        नहीं है: जब अंतिम उपयोगकर्ता कोई प्रमाण विधि चुनता है, तो होस्टेड विजेट
        इसे कॉल करता है। कोई प्रमाण केवल इसी कॉल से मौजूद होता है और आपके प्रमाण
        फ़नल में गिना जाता है। वही विधि फिर से चुनने पर दूसरा शुरू करने के बजाय
        पहले से खुला प्रमाण (200, वही चैलेंज या डिपॉज़िट राशि) वापस आ जाता है;
        दूसरी विधि चुनने पर अधूरा प्रमाण METHOD_SWITCHED के रूप में बंद हो जाता
        है, सिवाय सबमिट किए गए स्क्रीनशॉट या परीक्षण डिपॉज़िट के जिसकी अभी भी
        जांच की जा रही हो। MESSAGE_SIGNING साइन करने के लिए चैलेंज लौटाता है;
        SATOSHI_TEST डिपॉज़िट पता, सटीक राशि और विंडो लौटाता है;
        SELF_DECLARATION तुरंत सत्यापित हो जाता है (status VERIFIED)। चेन
        फ़ैमिली के अनुसार सत्यापित हस्ताक्षर प्रारूप: EVM चेन personal_sign
        (EIP-191) हस्ताक्षर लेते हैं, hex एन्कोडेड; Bitcoin एक BIP-137
        signmessage हस्ताक्षर (P2PKH, P2SH-P2WPKH और P2WPKH पते) या एक BIP-322
        सरल हस्ताक्षर (P2WPKH और P2TR पते) लेता है, base64 एन्कोडेड; Solana
        चैलेंज पर एक Ed25519 हस्ताक्षर लेता है, base58 एन्कोडेड; Tron एक
        signMessageV2 (TIP-191) हस्ताक्षर लेता है, hex एन्कोडेड। एक BIP-322
        पूर्ण या धन का प्रमाण हस्ताक्षर, या एक मल्टीसिग पता,
        SIGNATURE_UNSUPPORTED_SCHEME के साथ विफल हो जाता है।
      operationId: createTravelRuleWidgetProof
      parameters:
        - name: token
          in: path
          required: true
          description: विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleWidgetProofCreate'
      responses:
        '200':
          description: इस विधि के लिए पहले से खुला प्रमाण, पुनः शुरू किया गया।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofSummary'
        '201':
          description: एक नया PENDING प्रमाण (SELF_DECLARATION के लिए VERIFIED)।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofSummary'
        '400':
          description: >-
            अमान्य body, एक ऐसा वॉलेट जो ट्रांसफ़र से मेल नहीं खाता, SCREENSHOT
            की अनुमति नहीं है, या जब विधि चेन पर उपलब्ध न हो तो
            CHAIN_UNSUPPORTED कोड।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
        '403':
          description: इस एप्लिकेशन के लिए SELF_DECLARATION की अनुमति नहीं है।
        '404':
          description: अज्ञात token।
        '409':
          description: >-
            कोड OWNERSHIP_CHANGED: सत्र मिंट होने के बाद वॉलेट का धारक बदल गया
            या वॉलेट हटा दिया गया था; वर्तमान धारक के लिए एक नया सत्र मिंट करें।
            SATOSHI_TEST के लिए भी लौटाया जाता है जब सत्र में कोई
            satoshi_deposit_address नहीं होता है, और जब सत्र में कोई प्रयास शेष
            नहीं रहता है (कोई कोड नहीं; मुख्य भाग में max_attempts,
            attempts_used और attempts_remaining 0 होता है): एक नया सत्र मिंट
            करें।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
        '410':
          description: सत्र समाप्त हो गया।
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/
            \
              -H 'Content-Type: application/json' \
              -d '{"method": "MESSAGE_SIGNING"}'
components:
  schemas:
    TravelRuleWidgetProofCreate:
      type: object
      required:
        - method
      properties:
        method:
          type: string
          enum:
            - MESSAGE_SIGNING
            - SATOSHI_TEST
            - SCREENSHOT
            - SELF_DECLARATION
          description: >-
            अंतिम उपयोगकर्ता द्वारा चुनी गई प्रमाण विधि। यह संदर्भ के
            allowed_methods में से एक होनी चाहिए।
        wallet_address:
          type: string
          maxLength: 128
          description: >-
            सत्र के wallet_address पर डिफ़ॉल्ट होता है। सत्र के ट्रांसफ़र से
            लिंक होने पर ट्रांसफ़र के वॉलेट से मेल खाना चाहिए।
        chain:
          type: string
          maxLength: 32
          description: सत्र की चेन पर डिफ़ॉल्ट होता है।
    TravelRuleWidgetProofSummary:
      type: object
      properties:
        proof_id:
          type: string
          format: uuid
        method:
          type: string
          enum:
            - MESSAGE_SIGNING
            - SATOSHI_TEST
            - SCREENSHOT
            - SELF_DECLARATION
        status:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
          description: >-
            PENDING: अंतिम उपयोगकर्ता ने इस विधि को चुना है और प्रमाण पर अभी
            निर्णय नहीं हुआ है। एक विफल हस्ताक्षर या परीक्षण जमा जो अभी पढ़ने
            योग्य या पुष्ट नहीं है, वह failure_reason के साथ प्रमाण को PENDING
            रखता है, ताकि अंतिम उपयोगकर्ता फिर से प्रयास कर सके; सबमिट किए गए
            SATOSHI_TEST जमा की उसकी विंडो बंद होने तक स्वचालित रूप से पुनः जांच
            की जाती है, और सबमिट किया गया SCREENSHOT आपकी समीक्षा की प्रतीक्षा
            करता है। VERIFIED: स्वामित्व सिद्ध हो गया है। REJECTED: परीक्षण जमा
            वास्तव में गलत है (अन्य प्रेषक, जमा पते पर अपेक्षित राशि नहीं,
            चुनौती से पुराना, या ऐसा लेन-देन जिसने पहले ही किसी अन्य वॉलेट को
            सिद्ध कर दिया है) या आपके समीक्षक ने स्क्रीनशॉट अस्वीकार कर दिया है;
            failure_reason बताता है कि कौन सा कारण है। एक अस्वीकृत प्रमाण अंतिम
            होता है और सत्र के प्रयासों में से एक का उपयोग करता है। EXPIRED:
            प्रमाण पर अब निर्णय नहीं लिया जा सकता (इसकी विंडो बंद हो गई, अंतिम
            उपयोगकर्ता ने विधि बदल दी, विजेट सत्र समाप्त हो गया, या वॉलेट धारक
            बदल गया); failure_reason बताता है कि कौन सा कारण है।
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            उस एड्रेस बुक प्रविष्टि का कैनोनिकल चेन पहचानकर्ता जिसके लिए यह
            प्रमाण है, उदा. ETH, BTC, SOL, TRX।
        deposit_address:
          type: string
          nullable: true
          description: >-
            डिपॉज़िट पता जिस पर ग्राहक को Satoshi परीक्षण राशि भेजनी होगी। केवल
            SATOSHI_TEST प्रमाण पर मौजूद होता है।
        expected_amount:
          type: string
          nullable: true
          description: >-
            डिपॉज़िट की मूल मुद्रा में सटीक ऑन-चेन राशि, जिससे सातोशी परीक्षण
            डिपॉज़िट का मिलान होना चाहिए। केवल SATOSHI_TEST प्रमाण में मौजूद।
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            इस प्रमाण की अपनी Satoshi टेस्ट विंडो की समय-सीमा। केवल SATOSHI_TEST
            प्रमाण पर मौजूद होता है; जब SATOSHI_TEST की पेशकश की जाती है, तो
            विजेट सत्र का अपना expires_at इसे कवर करने के लिए बढ़ा दिया जाता है।
        challenge:
          type: string
          nullable: true
          description: >-
            Didit द्वारा जारी किया गया संदेश जिस पर ग्राहक अपने वॉलेट से
            हस्ताक्षर करता है। केवल MESSAGE_SIGNING प्रमाण पर मौजूद होता है।
        rejection_reason:
          type: string
          description: >-
            अंतिम उपयोगकर्ता के लिए अंग्रेज़ी वाक्य के रूप में, प्रमाण क्यों
            अस्वीकार किया गया। केवल तब मौजूद होता है जब `status`, REJECTED हो;
            जब आपके समीक्षक ने स्क्रीनशॉट अस्वीकार किया हो तो रिक्त (आपका नोट
            आपके पास ही रहता है)।
        created_at:
          type: string
          format: date-time
        attempts:
          type: integer
          description: >-
            इस प्रमाण के लिए साक्ष्य कितनी बार सबमिट किए गए (हस्ताक्षर, लेन-देन
            आईडी, अपलोड)।
        failure_reason:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: >-
            पिछला प्रयास क्यों विफल रहा, या प्रमाण क्यों बंद हुआ। कुछ भी विफल न
            होने पर रिक्त।
    TravelRuleWidgetProofError:
      type: object
      properties:
        detail:
          type: string
          description: अंग्रेज़ी में मानव-पठनीय संदेश।
        code:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: मशीन-पठनीय कारण, ताकि क्लाइंट अपना स्वयं का अनुवादित संदेश दिखा सके।
        status:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
          description: >-
            प्रमाण बंद होने पर मौजूद: अभी सबमिट किए गए जमा द्वारा REJECTED
            (400), या पहले से बंद प्रमाण के लिए साक्ष्य भेजे जाने पर REJECTED या
            EXPIRED (409)।
        proof_id:
          type: string
          format: uuid
          description: 'स्थिति के साथ मौजूद: बंद प्रमाण।'
        method:
          type: string
          enum:
            - MESSAGE_SIGNING
            - SATOSHI_TEST
            - SCREENSHOT
            - SELF_DECLARATION
          description: 'स्थिति के साथ मौजूद: बंद प्रमाण की विधि।'
        max_attempts:
          type: integer
          description: >-
            स्थिति के साथ मौजूद: अस्वीकृत वॉलेट प्रमाण जिन्हें यह सत्र अनुमति
            देता है।
        attempts_used:
          type: integer
          description: 'स्थिति के साथ मौजूद: अब तक अस्वीकृत प्रमाण।'
        attempts_remaining:
          type: integer
          description: >-
            स्थिति के साथ मौजूद: 0 होने पर, दूसरा प्रमाण शुरू करने पर 409 का
            उत्तर मिलता है और आप एक नया विजेट सत्र बनाते हैं।
    TravelRuleWalletProofFailureReason:
      type: string
      enum:
        - ''
        - SIGNATURE_INVALID
        - SIGNATURE_UNSUPPORTED_SCHEME
        - DEPOSIT_NOT_FOUND
        - DEPOSIT_UNCONFIRMED
        - DEPOSIT_LOOKUP_FAILED
        - DEPOSIT_MISMATCH
        - DEPOSIT_STALE
        - TXID_REUSED
        - CHAIN_UNSUPPORTED
        - WINDOW_EXPIRED
        - OWNERSHIP_CHANGED
        - METHOD_SWITCHED
        - REVIEW_REJECTED
        - ABANDONED
      description: >-
        वॉलेट-स्वामित्व प्रमाण, या उसका अंतिम प्रयास, VERIFIED से कम क्यों रह
        गया। कुछ भी विफल न होने पर खाली। PENDING प्रमाण में यह हो सकता है: अंतिम
        प्रयास विफल रहा और अंतिम उपयोगकर्ता पुनः प्रयास कर सकता है।
        DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED और REVIEW_REJECTED प्रमाण
        को REJECTED के रूप में बंद कर देते हैं। SIGNATURE_INVALID: हस्ताक्षर
        वॉलेट और चैलेंज से मेल नहीं खाता है। SIGNATURE_UNSUPPORTED_SCHEME: वॉलेट
        ने ऐसे प्रारूप में हस्ताक्षर किए हैं जिसे Didit सत्यापित नहीं करता है।
        DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED, DEPOSIT_LOOKUP_FAILED: परीक्षण
        डिपॉज़िट पठनीय नहीं है या अभी तक कन्फ़र्म नहीं हुआ है; टेस्ट विंडो बंद
        होने तक Didit इसकी जाँच करता रहता है। DEPOSIT_MISMATCH: लेन-देन वॉलेट से
        डिपॉज़िट पते पर अपेक्षित राशि नहीं भेजता है। DEPOSIT_STALE: लेन-देन
        चैलेंज से पहले का है। TXID_REUSED: लेन-देन ने पहले ही किसी अन्य वॉलेट को
        साबित कर दिया है। CHAIN_UNSUPPORTED: यह विधि इस चेन पर उपलब्ध नहीं है।
        WINDOW_EXPIRED: टेस्ट विंडो बंद हो गई। OWNERSHIP_CHANGED: विजेट सत्र
        मिंट होने के बाद वॉलेट धारक बदल गया, या वॉलेट आपकी पता पुस्तिका से हटा
        दिया गया। METHOD_SWITCHED: अंतिम उपयोगकर्ता ने इसे पूरा करने से पहले कोई
        अन्य विधि चुनी। REVIEW_REJECTED: आपके समीक्षक ने स्क्रीनशॉट को अस्वीकार
        कर दिया। ABANDONED: अंतिम उपयोगकर्ता के समाप्त करने से पहले विजेट सत्र
        समाप्त हो गया।

````

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