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

# Travel Rule वॉलेट स्वामित्व प्रमाण साक्ष्य सबमिट करें API

> Didit पर वॉलेट स्वामित्व प्रमाण हेतु हस्ताक्षर, टेस्ट लेन-देन ID या स्क्रीनशॉट सबमिट करें। विफल प्रयास पर कोड, गलत डिपॉज़िट पर अस्वीकृति।



विजेट प्रमाण साक्ष्य जमा करने का API प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Submit the evidence for a wallet-ownership proof started from a widget session. The hosted widget makes this call; use it only if I build my own widget UI.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/

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

Body, by method:
\- MESSAGE_SIGNING - JSON {"signature": "..."}: the wallet's signature over the proof's challenge.
\- SATOSHI_TEST - JSON {"txid": "..."}: the test deposit's transaction id.
\- SCREENSHOT - multipart form with a file field.

Behavior:
\- 200 with status VERIFIED, is_ownership_verified and transfer_status once ownership is proven.
\- 200 with status PENDING for a screenshot (it waits for the customer's review) or a deposit not indexed or confirmed yet, with code DEPOSIT_NOT_FOUND or DEPOSIT_UNCONFIRMED (Didit rechecks it until the window closes; no resubmission needed).
\- Every submission counts in attempts.

Failure modes (errors carry a code to translate):
\- 400 - SIGNATURE_INVALID, SIGNATURE_UNSUPPORTED_SCHEME or DEPOSIT_LOOKUP_FAILED. The proof stays PENDING: let the end user try again.
\- 400 - DEPOSIT_MISMATCH, DEPOSIT_STALE or TXID_REUSED with status REJECTED: the deposit is genuinely wrong (another sender, not the expected amount to the deposit address, older than the challenge, or already used to prove another wallet). The proof is closed and uses one of the session's attempts; the body carries max_attempts, attempts_used and attempts_remaining. Pick a method again to start a new proof.
\- 409 - code OWNERSHIP_CHANGED, or a closed proof (REJECTED or EXPIRED; the body carries status, the code it closed with and the attempt counts): start a new proof.
\- 410 - the session expired, or code WINDOW_EXPIRED when the Satoshi test window closed.
\- 404 - unknown token or proof.

Full guide: /transaction-monitoring/wallet-ownership-widget#satoshi-test-verify-contract.`

\</pre>



      
      

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



## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/
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/{proof_id}/verify/:
    post:
      tags:
        - Travel Rule
      summary: वॉलेट-स्वामित्व के प्रमाण का साक्ष्य सबमिट करें
      description: >-
        विजेट सत्र token-आधारित सार्वजनिक endpoint, किसी API कुंजी की आवश्यकता
        नहीं है। प्रमाण की विधि के अनुसार आवश्यक साक्ष्य भेजें: MESSAGE_SIGNING
        के लिए हस्ताक्षर, SATOSHI_TEST के लिए txid (JSON), या SCREENSHOT के लिए
        एक फ़ाइल (मल्टीपार्ट)। प्रत्येक सबमिशन को एक प्रयास के रूप में गिना जाता
        है। ऐसा हस्ताक्षर जो सत्यापित नहीं होता है, या ऐसा डिपॉज़िट जो मेल नहीं
        खाता है, एक कोड के साथ 400 रिस्पॉन्स देता है और प्रमाण को PENDING छोड़
        देता है ताकि अंतिम उपयोगकर्ता पुनः प्रयास कर सके। ऐसा डिपॉज़िट जो देखा
        गया है लेकिन अभी तक कन्फ़र्म नहीं हुआ है, status PENDING के साथ 200
        रिस्पॉन्स देता है और विंडो बंद होने तक स्वचालित रूप से फिर से जांचा जाता
        है। एक स्क्रीनशॉट status PENDING के साथ 200 रिस्पॉन्स देता है और आपकी
        समीक्षा कतार (GET /v3/travel-rule/wallet-proofs/) में प्रतीक्षा करता है।
        एक EXPIRED या REJECTED प्रमाण बाद में कभी भी सत्यापित नहीं होता है: एक
        नया प्रमाण शुरू करें। चेन फ़ैमिली के अनुसार सत्यापित हस्ताक्षर प्रारूप:
        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: verifyTravelRuleWidgetProof
      parameters:
        - name: token
          in: path
          required: true
          description: विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।
          schema:
            type: string
        - name: proof_id
          in: path
          required: true
          description: प्रूफ़ शुरू होने पर लौटाया गया proof_id।
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                signature:
                  type: string
                  description: 'MESSAGE_SIGNING: प्रमाण के चैलेंज पर वॉलेट का हस्ताक्षर।'
                txid:
                  type: string
                  description: 'SATOSHI_TEST: परीक्षण डिपॉज़िट की लेन-देन ID।'
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: >-
                    SCREENSHOT: अंतिम उपयोगकर्ता के वॉलेट ऐप में वॉलेट को दिखाने
                    वाली एक छवि।
      responses:
        '200':
          description: >-
            VERIFIED, या अभी भी PENDING (समीक्षा की प्रतीक्षा में एक स्क्रीनशॉट,
            एक डिपॉज़िट जो अभी इंडेक्स नहीं हुआ है या अभी कन्फ़र्म नहीं हुआ है,
            कोड DEPOSIT_NOT_FOUND या DEPOSIT_UNCONFIRMED के साथ)।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofVerifyResult'
        '400':
          description: >-
            साक्ष्य मौजूद नहीं है; एक असफल प्रयास जो प्रमाण को PENDING रखता है
            ताकि अंतिम उपयोगकर्ता पुनः प्रयास कर सके (कोड SIGNATURE_INVALID,
            SIGNATURE_UNSUPPORTED_SCHEME या DEPOSIT_LOOKUP_FAILED); या एक
            परीक्षण डिपॉज़िट जो प्रमाण को अस्वीकार करता है (कोड
            DEPOSIT_MISMATCH, DEPOSIT_STALE या TXID_REUSED, स्थिति REJECTED,
            सत्र की प्रयास-गणनाओं सहित): किसी विधि को दोबारा चुनने से एक नया
            प्रमाण शुरू होता है जब तक attempts_remaining 0 से अधिक है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
        '404':
          description: अज्ञात token, या इस सत्र पर ऐसा कोई प्रमाण नहीं है।
        '409':
          description: >-
            कोड OWNERSHIP_CHANGED (प्रमाण इसके साथ बंद हो जाता है); एक बंद
            प्रमाण (REJECTED या EXPIRED), इसकी स्थिति के साथ, जिस कोड के साथ यह
            बंद हुआ और सत्र के प्रयासों की गणना: नया प्रमाण शुरू करने के लिए फिर
            से एक विधि चुनें; या एक SELF_DECLARATION प्रमाण, जो शुरू होने पर
            सत्यापित हो जाता है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
        '410':
          description: >-
            सत्र समाप्त हो गया, या सतोशी परीक्षण विंडो बंद होने पर कोड
            WINDOW_EXPIRED।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/
            \
              -H 'Content-Type: application/json' \
              -d '{"signature": "0x..."}'
components:
  schemas:
    TravelRuleWidgetProofVerifyResult:
      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
        is_ownership_verified:
          type: boolean
          description: >-
            तब मौजूद होता है जब प्रमाण VERIFIED होता है: पता पुस्तिका प्रविष्टि
            अब स्वामित्व-सत्यापित है।
        transfer_status:
          type: string
          nullable: true
          description: >-
            प्रमाण VERIFIED होने पर मौजूद: लिंक किए गए ट्रांसफ़र की स्थिति; ऐसा
            ट्रांसफ़र न होने पर null।
        detail:
          type: string
          description: >-
            प्रमाण के PENDING रहने के दौरान मौजूद: समीक्षा की प्रतीक्षा में
            सबमिट किया गया स्क्रीनशॉट, या एक परीक्षण जमा जिसकी अभी पुष्टि नहीं
            हुई है।
        code:
          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.