> ## 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 में अपना वॉलेट Travel Rule एड्रेस बुक में जोड़ें, ताकि आने वाले INTERNAL-rail ट्रांसफ़र उससे मेल खाएँ। स्व-घोषणा से पूर्व-सत्यापन भी संभव।



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



      
      

\<pre>

\`Register a wallet address in the application's Travel Rule address book so inbound INTERNAL-rail transfers can resolve against it.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/wallet-addresses/

Authentication:
Use the x-api-key header with my Didit API key.

Request body (application/json):
\{
"address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72",   // required; one entry per address (case-insensitive) and chain (exact text) in the application, a duplicate returns 400
"chain": "ETH",                        // optional; use the same chain token your transfers carry (ETH, BTC), or leave blank to match any chain
"memo": "",                            // optional destination tag or memo on XRP, XLM, EOS, ATOM, HBAR (alias: destinationTag); part of the wallet's identity there
"holder_name": "Ana Diaz",             // used for the beneficiary name match
"holder_vendor_data": "user-042",      // your internal id for the holder
"entity_type": "individual",           // free text, defaults to "individual"
"travel_address": "taiwwrTeRpaRbqpQXB9A1JiLtdE686XtYRC316kPuQzbJSTgv7ndnF4ceHM7CReVGuzqcCCu5RfUHdL1FffHhdf3dzQDEgKAUMtAuD6uteY",   // optional: the counterparty VASP's travel address for this wallet, so outbound BTC, ETH and USDC transfers to it can route over TRP
"self_declared": true                  // write-only, POST only: create the entry already verified via a SELF_DECLARATION proof
}

Behavior:
\- self_declared: true creates the entry already ownership-verified - inbound transfers to it skip UNCONFIRMED_OWNERSHIP entirely and go straight to the name match.
It requires allow_self_declaration: true in Travel Rule settings, otherwise 400.
\- Without it, verify ownership later via the wallet-ownership widget (POST /v3/travel-rule/widget-session/).
\- Matching is scoped by chain.
When a transfer carries a chain, an entry matches only if its chain equals that chain (case-insensitive) or the entry's chain is blank.
Chain names are not translated: an entry with chain "ethereum" does not match a transfer with chain "ETH".
A transfer takes its chain from beneficiary_data.chain, else transaction_details.crypto_params.crypto_chain, else custom_properties.crypto_chain, else the currency, uppercased and used only when it is a chain Didit recognises (for example ETH or BTC).
Register entries with the same token your transfers carry (ETH, BTC), or leave chain blank to match any chain.
Inbound TRP inquiries ignore the chain: they match by address, or by the holder_name of a verified entry when the inquiry carries no address.
Confirming ownership with POST /v3/transactions/{transaction_id}/travel-rule/ownership/ also matches by address only.
\- On a memo network the memo is part of the wallet: an entry with a memo matches only transfers naming that memo, an entry without one matches the whole address. A transfer that names no memo never reaches an entry that has one.
\- An XRP X-address is stored as its classic address and its tag. A Lightning payee (node id or Lightning Address) registered on bitcoin is stored lowercased on the LIGHTNING chain, where Lightning transfers are matched.
\- The response carries address_hash (SHA-256 of the lowercased address, hex). To register many wallets at once, or by hash only, use POST /v3/travel-rule/wallet-addresses/import/.

Failure modes:
\- 400 - an entry with this address, chain and memo already exists: {"address": ["A wallet address entry with this address and chain already exists."]}.
\- 400 - a memo or X-address the chain cannot carry, missing address, an invalid travel_address ("Invalid travel address."), or self_declared: true while allow_self_declaration is off.
\- 403 - missing x-api-key (a wrong, revoked or expired key gets 401).

Full guide: /transaction-monitoring/travel-rule#wallet-address-book.`

\</pre>



      
      

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



## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/wallet-addresses/
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/wallet-addresses/:
    post:
      tags:
        - Travel Rule
      summary: वॉलेट का पता पंजीकृत करें
      description: >-
        अपनी Travel Rule वॉलेट पता पुस्तिका में एक प्रविष्टि जोड़ें ताकि इनबाउंड
        INTERNAL-rail ट्रांसफ़र इसके आधार पर हल किए जा सकें।
      operationId: createTravelRuleWalletAddress
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WalletAddressEntryCreate'
            example:
              address: 0xBeneficiaryWallet01
              chain: ETH
              holder_name: Ana Diaz
              holder_vendor_data: user-042
              self_declared: true
      responses:
        '201':
          description: बनाई गई प्रविष्टि।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletAddressEntry'
        '400':
          description: >-
            इस एप्लिकेशन के लिए डुप्लिकेट वॉलेट (पता, चेन और मेमो), एक मेमो या
            X-address जिसे चेन नहीं ले जा सकती, अनुपलब्ध `address`, एक अमान्य
            `travel_address`, जब `allow_self_declaration` बंद हो तब
            `self_declared: true`, या जब `ownership_validation_mode` `FULL` हो
            तब `self_declared: true`।
          content:
            application/json:
              schema:
                type: object
              examples:
                Duplicate entry:
                  value:
                    address:
                      - >-
                        A wallet address entry with this address and chain
                        already exists.
                Invalid travel address:
                  value:
                    travel_address:
                      - Invalid travel address.
                Self-declaration disabled:
                  value:
                    self_declared:
                      - >-
                        Self-declared ownership is disabled for this
                        application.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/wallet-addresses/ \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"address": "0xBeneficiaryWallet01", "chain": "ETH", "holder_name": "Ana Diaz", "self_declared": true}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.wallet_addresses.create(
                address="0xBeneficiaryWallet01",
                chain="ETH",
                holder_vendor_data="user-042",
                holder_name="Ana Diaz",
                self_declared=True,
            )
            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.travelRule.walletAddresses.create({
              address: "0xBeneficiaryWallet01",
              chain: "ETH",
              holder_vendor_data: "user-042",
              holder_name: "Ana Diaz",
              self_declared: true,
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.WalletAddresses.Create(ctx, didit.WalletAddressEntryCreate{\n\tAddress:          \"0xBeneficiaryWallet01\",\n\tChain:            didit.String(\"ETH\"),\n\tHolderVendorData: didit.String(\"user-042\"),\n\tHolderName:       didit.String(\"Ana Diaz\"),\n\tSelfDeclared:     didit.Bool(true),\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.WalletAddressEntryCreate;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().walletAddresses().create(WalletAddressEntryCreate.builder()
                    .address("0xBeneficiaryWallet01")
                    .chain("ETH")
                    .holderVendorData("user-042")
                    .holderName("Ana Diaz")
                    .selfDeclared(true)
                    .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->travelRule->walletAddresses->create([
                'address' => '0xBeneficiaryWallet01',
                'chain' => 'ETH',
                'holder_vendor_data' => 'user-042',
                'holder_name' => 'Ana Diaz',
                'self_declared' => true,
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.travel_rule.wallet_addresses.create(
              address: "0xBeneficiaryWallet01",
              chain: "ETH",
              holder_vendor_data: "user-042",
              holder_name: "Ana Diaz",
              self_declared: true
            )
            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.TravelRule.WalletAddresses.CreateAsync(new
            WalletAddressEntryCreate

            {
                Address = "0xBeneficiaryWallet01",
                Chain = "ETH",
                HolderVendorData = "user-042",
                HolderName = "Ana Diaz",
                SelfDeclared = true,
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WalletAddressEntryCreate:
      type: object
      required:
        - address
      properties:
        address:
          type: string
          maxLength: 128
          description: >-
            वॉलेट पता। XRP X-पता उसके क्लासिक पते और उसके टैग के रूप में
            संग्रहीत किया जाता है, इसलिए यह उन ट्रांसफ़र से मेल खाता है जो इनमें
            से किसी भी रूप को निर्दिष्ट करते हैं।
        chain:
          type: string
          maxLength: 32
          description: >-
            पते के लिए चेन token, उदाहरण के लिए `ETH` या `BTC`। जब Didit किसी
            ट्रांसफ़र को रूट या पंजीकृत करता है, तो यह वॉलेट पते पर और, जब
            ट्रांसफ़र में कोई चेन शामिल होती है, तो केस को नज़रअंदाज़ करते हुए
            इस मान पर भी एड्रेस बुक प्रविष्टियों का मिलान करता है। किसी
            ट्रांसफ़र की चेन `beneficiary_data.chain` होती है, जो लेन-देन की
            क्रिप्टो चेन या मुद्रा प्रतीक (उदाहरण के लिए `ETH`) से भरी जाती है
            जब आप इसे नहीं भेजते हैं, या बाद में जमा पंजीकरण की `chain` होती है,
            इसलिए हर जगह एक ही token का उपयोग करें। रिक्त चेन वाली प्रविष्टि
            किसी भी चेन से मेल खाती है। ज्ञात चेन एक कैनोनिकल पहचानकर्ता के तहत
            संग्रहीत की जाती हैं, चाहे आप कोई भी वर्तनी भेजें: "ethereum",
            "Ethereum" और "ERC20" सभी ETH के रूप में संग्रहीत किए जाते हैं, "BNB
            Smart Chain" और "BEP20" BNB के रूप में, "tron" TRX के रूप में। किसी
            अज्ञात चेन नाम को वैसे ही रखा जाता है जैसा दिया गया है।
        holder_vendor_data:
          type: string
          maxLength: 255
        holder_name:
          type: string
          maxLength: 255
        entity_type:
          type: string
          default: individual
          maxLength: 16
        self_declared:
          type: boolean
          default: false
          description: >-
            केवल-राइट। सही होने पर, प्रविष्टि को पहले से ही SELF_DECLARATION
            प्रमाण के माध्यम से स्वामित्व-सत्यापित बनाया जाता है। यदि आपकी
            Travel Rule सेटिंग्स में `allow_self_declaration` बंद है, तो 400
            लौटाता है।
        travel_address:
          type: string
          description: >-
            वैकल्पिक। इस वॉलेट के लिए प्रतिपक्ष VASP का Travel Address, जो TRP
            द्वारा समर्थित संपत्तियों (BTC, ETH, और नामित नेटवर्क पर USDC) के
            लिए TRP रूटिंग को सक्षम करता है। एक अमान्य Travel Address 400 लौटाता
            है।
          maxLength: 512
        memo:
          type: string
          maxLength: 256
          description: >-
            वैकल्पिक। डेस्टिनेशन टैग या मेमो जो वॉलेट का हिस्सा है। XRP: एक
            डेस्टिनेशन टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (एक JSON
            संख्या स्वीकार की जाती है)। XLM: 28 बाइट्स तक का टेक्स्ट मेमो,
            64-बिट id या हेक्स में 32-बाइट हैश। EOS: 256 बाइट्स तक। ATOM: 256
            वर्णों तक। HBAR: 100 बाइट्स तक। Bitcoin, EVM, Solana, Tron,
            Litecoin, Bitcoin Cash, Dogecoin और Lightning वॉलेट कोई मेमो नहीं
            लेते: यदि दिया जाए तो `400` मिलता है। Alias: `destinationTag` या
            `destination_tag`।
    WalletAddressEntry:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        address:
          type: string
          description: >-
            वॉलेट पता; केवल इसके हैश द्वारा इंपोर्ट की गई प्रविष्टि के लिए `""`।
            यह प्रत्येक एप्लिकेशन, चेन और मेमो के लिए अद्वितीय है और केस की
            परवाह किए बिना पते की तुलना करता है। किसी प्रविष्टि को हटाने के बाद,
            आप उसी पते को फिर से पंजीकृत कर सकते हैं।
        chain:
          type: string
          description: >-
            पते के लिए चेन token, उदाहरण के लिए `ETH` या `BTC`। जब Didit किसी
            ट्रांसफ़र को रूट या पंजीकृत करता है, तो यह वॉलेट पते पर और, जब
            ट्रांसफ़र में चेन शामिल होती है, तो केस को नज़रअंदाज़ करते हुए इस
            मान पर भी एड्रेस बुक प्रविष्टियों का मिलान करता है। ट्रांसफ़र की चेन
            `beneficiary_data.chain` होती है, जिसे लेन-देन की क्रिप्टो चेन या
            मुद्रा प्रतीक (उदाहरण के लिए `ETH`) से भरा जाता है जब आप इसे नहीं
            भेजते हैं, या डिपॉज़िट के बाद पंजीकरण की `chain` होती है, इसलिए हर
            जगह एक ही token का उपयोग करें। खाली चेन वाली प्रविष्टि किसी भी चेन
            से मेल खाती है। bitcoin पर पंजीकृत एक Lightning भुगतानकर्ता (नोड id
            या Lightning Address) को `LIGHTNING` पर लोअरकेस में संग्रहीत किया
            जाता है, जहां Lightning ट्रांसफ़र का मिलान किया जाता है। ज्ञात चेन
            एक कैनोनिकल पहचानकर्ता के तहत संग्रहीत की जाती हैं, चाहे आप कोई भी
            वर्तनी भेजें: "ethereum", "Ethereum" और "ERC20" सभी ETH के रूप में
            संग्रहीत होते हैं, "BNB Smart Chain" और "BEP20" BNB के रूप में,
            "tron" TRX के रूप में। एक अज्ञात चेन नाम दिए गए रूप में ही रखा जाता
            है।
        holder_vendor_data:
          type: string
          description: धारक के लिए आपका आंतरिक पहचानकर्ता।
        holder_name:
          type: string
          description: >-
            वॉलेट धारक का नाम, जिसका उपयोग लाभार्थी नाम मिलान के लिए किया जाता
            है।
        entity_type:
          type: string
          description: फ़्री टेक्स्ट, डिफ़ॉल्ट रूप से "individual"।
        is_ownership_verified:
          type: boolean
          description: केवल-पढ़ने योग्य। क्या इस पते का स्वामित्व सिद्ध हो चुका है।
        created_at:
          type: string
          format: date-time
        travel_address:
          type: string
          description: >-
            इस वॉलेट के लिए प्रतिपक्ष VASP का Travel Address, यदि ज्ञात हो।
            Didit को इस लाभार्थी के ट्रांसफ़र TRP द्वारा समर्थित संपत्तियों
            (BTC, ETH, और किसी नामित नेटवर्क पर USDC) के लिए TRP रेल पर रूट करने
            की अनुमति देता है।
        address_hash:
          type: string
          description: >-
            केवल-पढ़ने योग्य। लोअरकेस पते का SHA-256, लोअरकेस हेक्स में। केवल
            इसके हैश द्वारा इंपोर्ट की गई प्रविष्टि का मिलान इसी से किया जाता
            है।
        memo:
          type: string
          description: >-
            मेमो नेटवर्क (XRP, XLM, EOS, ATOM, HBAR) पर वॉलेट का हिस्सा बनने
            वाला डेस्टिनेशन टैग या मेमो; पूरे पते के लिए `""`। मेमो वाली
            प्रविष्टि केवल उस मेमो को निर्दिष्ट करने वाले ट्रांसफ़र से मेल खाती
            है; बिना मेमो वाली प्रविष्टि पूरे पते से मेल खाती है।
        receiving_travel_address:
          type: string
          readOnly: true
          description: >-
            इस वॉलेट के लिए आपका प्रति-वॉलेट Travel Address: इसे भेजने वाले VASP
            को दें ताकि उसकी TRP पूछताछ इस वॉलेट का नाम निर्दिष्ट करे। किसी अन्य
            VASP के रूप में रिकॉर्ड किए गए वॉलेट के लिए, जब Travel Rule बंद हो,
            और आपकी VASP प्रोफ़ाइल सहेजे जाने से पहले यह खाली रहता है।
  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.