> ## 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 से JSON या CSV द्वारा एक बार में 10,000 पते तक Travel Rule पता बुक में इंपोर्ट करें, पते या हैश्ड पते से, आइडेम्पोटेंसी और प्रति-पंक्ति रिपोर्ट के साथ।



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



      
      

\<pre>

\`Import many wallets into the application's Travel Rule address book in one call, as JSON or as a CSV file.

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

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

Request body, one of:
\- application/json: {"entries": [row, ...]} or a bare JSON array of rows.
\- multipart/form-data: a "file" field holding a UTF-8 CSV of at most 5 MB with a header row naming the columns.
At most 10,000 rows either way.

Row fields (every one optional, but each row needs address, address_hash or both):
\{
"address": "0xBeneficiaryWallet01",      // the wallet address (alias: walletAddress)
"address_hash": "4f7d...3f2e",           // SHA-256 of the lowercased address, 64 hex or 44 base64 characters (alias: walletAddressHash)
"chain": "ETH",
"memo": "104729",                        // destination tag or memo on XRP, XLM, EOS, ATOM, HBAR (alias: destinationTag)
"holder_name": "Ana Diaz",
"holder_vendor_data": "user-042",        // your id for the holder (alias: externalUserId)
"entity_type": "individual",             // individual or company
"label": "Main deposit wallet",
"owner_type": "customer",                // customer, internal or vasp
"travel_address": "ta...",
"self_declared": false                   // only when your settings allow self-declaration
}

Behavior:
\- Send address_hash alone to register a wallet without disclosing its address. Sent with address, it must be that address's hash.
\- Idempotent: a wallet already in the book (same address or hash, chain and memo) is reported as "existing" and left untouched, so the same file can be sent again.
\- A row that repeats an earlier row of the same import is "duplicate" and names that row.
\- Each row is validated on its own, so one bad row never fails the others.
\- An entry imported by its hash only matches transfers to that address, and can be proven with the wallet-ownership widget like any other entry.
\- In a CSV, an empty cell counts as not sent and columns the import does not read are ignored.

What to read from the response:
\- 200 when no row failed, 207 when at least one did.
\- total, created, existing, duplicate, failed - the counts.
\- rows[] - one result per row in the order sent: row (from 1), status, entry_id, errors, duplicate_of_row.

Failure modes:
\- 400 - both entries and a file, or neither; more than 10,000 rows; a file over 5 MB, not UTF-8 CSV, or without a header row or rows.
\- 401 - missing or malformed x-api-key.

Full guide: /transaction-monitoring/travel-rule#importing-wallets-in-bulk.`

\</pre>



      
      

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



## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/wallet-addresses/import/
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/import/:
    post:
      tags:
        - Travel Rule
      summary: वॉलेट पते बड़ी मात्रा में इंपोर्ट करें
      description: >-
        एक ही कॉल में JSON या CSV फ़ाइल के रूप में अपनी Travel Rule पता पुस्तिका
        में 10,000 वॉलेट तक जोड़ें। पते को निजी रखने के लिए वॉलेट को उसके पते
        द्वारा, उसके लोअरकेस पते के SHA-256 (`address_hash`) द्वारा, या दोनों
        द्वारा भेजा जा सकता है। यह इंपोर्ट आइडेम्पोटेंट है: पुस्तिका में पहले से
        मौजूद वॉलेट को `existing` के रूप में रिपोर्ट किया जाता है और उसमें कोई
        बदलाव नहीं किया जाता है, इसलिए वही फ़ाइल दोबारा भेजी जा सकती है।
        प्रत्येक पंक्ति को अलग से मान्य किया जाता है, इसलिए एक गलत पंक्ति अन्य
        पंक्तियों को कभी विफल नहीं करती है। केवल अपने हैश द्वारा इंपोर्ट किया
        गया वॉलेट उस पते पर किए गए ट्रांसफ़र से मेल खाता है और किसी भी अन्य
        प्रविष्टि की तरह वॉलेट-स्वामित्व विजेट से सिद्ध किया जा सकता है।
      operationId: importTravelRuleWalletAddresses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  required:
                    - entries
                  properties:
                    entries:
                      type: array
                      minItems: 1
                      maxItems: 10000
                      items:
                        $ref: '#/components/schemas/WalletAddressImportRow'
                - type: array
                  minItems: 1
                  maxItems: 10000
                  items:
                    $ref: '#/components/schemas/WalletAddressImportRow'
            example:
              entries:
                - address: 0xBeneficiaryWallet01
                  chain: ETH
                  holder_name: Ana Diaz
                  holder_vendor_data: user-042
                - address_hash: >-
                    4f7d2e1c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e
                  chain: bitcoin
                  holder_vendor_data: user-043
                - address: rExchangeSharedAddress01
                  chain: XRP
                  memo: '104729'
                  holder_name: Ana Diaz
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: >-
                    अधिकतम 5 MB की एक UTF-8 CSV फ़ाइल जिसमें इसके कॉलम (पंक्ति
                    फ़ील्ड या उनके उपनाम) नाम देने वाली एक हेडर पंक्ति होती है।
                    खाली सेल को नहीं भेजे गए के रूप में गिना जाता है; जिन कॉलमों
                    को इंपोर्ट नहीं पढ़ता है उन्हें अनदेखा कर दिया जाता है।
      responses:
        '200':
          description: >-
            प्रत्येक पंक्ति बनाई गई थी, पहले से ही बहीखाते में थी, या किसी पिछली
            पंक्ति की पुनरावृत्ति थी।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletAddressImportReport'
              example:
                total: 3
                created: 2
                existing: 1
                duplicate: 0
                failed: 0
                rows:
                  - row: 1
                    status: existing
                    entry_id: 11111111-2222-3333-4444-555555555555
                    errors: {}
                    duplicate_of_row: null
                  - row: 2
                    status: created
                    entry_id: 22222222-3333-4444-5555-666666666666
                    errors: {}
                    duplicate_of_row: null
                  - row: 3
                    status: created
                    entry_id: 33333333-4444-5555-6666-777777777777
                    errors: {}
                    duplicate_of_row: null
        '207':
          description: >-
            कम से कम एक पंक्ति विफल रही; अन्य पंक्तियों को इंपोर्ट कर लिया गया
            था। प्रत्येक विफल पंक्ति में उसकी त्रुटियों का उल्लेख है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletAddressImportReport'
              example:
                total: 2
                created: 1
                existing: 0
                duplicate: 0
                failed: 1
                rows:
                  - row: 1
                    status: created
                    entry_id: 44444444-5555-6666-7777-888888888888
                    errors: {}
                    duplicate_of_row: null
                  - row: 2
                    status: failed
                    entry_id: null
                    errors:
                      address:
                        - Send address, address_hash or both.
                    duplicate_of_row: null
        '400':
          description: >-
            अनुरोध को स्वयं नहीं पढ़ा जा सकता: `entries` और `file` दोनों, या
            दोनों में से कोई नहीं; 10,000 से अधिक पंक्तियाँ; 5 MB से अधिक फ़ाइल,
            UTF-8 CSV न होना, हेडर पंक्ति के बिना या पंक्तियों के बिना।
          content:
            application/json:
              schema:
                type: object
              example:
                file:
                  - At most 10000 rows per import.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl (JSON)
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/wallet-addresses/import/
            \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"entries": [{"address": "0xBeneficiaryWallet01", "chain": "ETH", "holder_name": "Ana Diaz"}, {"address": "rExchangeSharedAddress01", "chain": "XRP", "memo": "104729"}]}'
        - lang: curl
          label: curl (CSV)
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/wallet-addresses/import/
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -F 'file=@wallets.csv;type=text/csv'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.wallet_addresses.bulk_import(
                body={
                    "entries": [{
                        "address": "0xBeneficiaryWallet01",
                        "chain": "ETH",
                        "holder_name": "Ana Diaz",
                        "holder_vendor_data": "user-042",
                    }, {
                        "address_hash": "4f7d2e1c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e",
                        "chain": "bitcoin",
                        "holder_vendor_data": "user-043",
                    }, {
                        "address": "rExchangeSharedAddress01",
                        "chain": "XRP",
                        "memo": "104729",
                        "holder_name": "Ana Diaz",
                    }],
                },
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit, { fileFromPath } from "@didit-protocol/sdk-node";

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

            const result = await didit.travelRule.walletAddresses.bulkImport({
              file: await fileFromPath("wallet-addresses.csv"),
            });
            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.BulkImport(ctx, didit.TravelRuleWalletAddressesBulkImportParams{\n\tFile: didit.Some(didit.FileFromPath(\"wallet-addresses.csv\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.nio.file.Path;

            import me.didit.Didit;

            import me.didit.types.TravelRuleWalletAddressesBulkImportParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().walletAddresses().bulkImport(TravelRuleWalletAddressesBulkImportParams.builder()
                    .file(Path.of("wallet-addresses.csv"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;
            use Didit\File;

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

            $result = $didit->travelRule->walletAddresses->bulkImport([
                'file' => File::fromPath('wallet-addresses.csv'),
            ]);
            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.bulk_import(
              body: {
                entries: [{
                  address: "0xBeneficiaryWallet01",
                  chain: "ETH",
                  holder_name: "Ana Diaz",
                  holder_vendor_data: "user-042",
                }, {
                  address_hash: "4f7d2e1c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e",
                  chain: "bitcoin",
                  holder_vendor_data: "user-043",
                }, {
                  address: "rExchangeSharedAddress01",
                  chain: "XRP",
                  memo: "104729",
                  holder_name: "Ana Diaz",
                }],
              }
            )
            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.BulkImportAsync(new
            TravelRuleWalletAddressesBulkImportParams

            {
                File = FileUpload.FromPath("wallet-addresses.csv"),
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WalletAddressImportRow:
      type: object
      description: >-
        इंपोर्ट करने के लिए एक वॉलेट: इसके `address`, इसके `address_hash`, या
        दोनों द्वारा। इन फ़ील्ड के camelCase रूपों को भी स्वीकार किया जाता है,
        जैसे `walletAddress`, `walletAddressHash`, `destinationTag` और
        `externalUserId`।
      properties:
        address:
          type: string
          maxLength: 128
          description: 'वॉलेट पता। उपनाम: `walletAddress`।'
        address_hash:
          type: string
          description: >-
            लोअरकेस पते का SHA-256, 64 hex वर्णों या 44 base64 वर्णों के रूप
            में। पते का खुलासा किए बिना वॉलेट पंजीकृत करने के लिए इसे अकेले
            भेजें; `address` के साथ भेजे जाने पर, यह उस पते का हैश होना चाहिए।
            उपनाम: `walletAddressHash`।
        chain:
          type: string
          maxLength: 32
        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` मिलता
            है।
        holder_name:
          type: string
          maxLength: 255
        holder_vendor_data:
          type: string
          maxLength: 255
          description: 'धारक के लिए आपका आंतरिक पहचानकर्ता। उपनाम: `externalUserId`।'
        entity_type:
          type: string
          enum:
            - individual
            - company
          default: individual
        label:
          type: string
          maxLength: 255
        owner_type:
          type: string
          enum:
            - customer
            - internal
            - vasp
          default: customer
        travel_address:
          type: string
          maxLength: 512
        self_declared:
          type: boolean
          default: false
          description: >-
            जब आपकी सेटिंग्स इसकी अनुमति दें, तो स्व-घोषणा के माध्यम से पहले से
            सत्यापित प्रविष्टि बनाएं।
    WalletAddressImportReport:
      type: object
      description: इंपोर्ट की प्रत्येक पंक्ति के साथ क्या हुआ, भेजे गए क्रम में।
      properties:
        total:
          type: integer
        created:
          type: integer
        existing:
          type: integer
        duplicate:
          type: integer
        failed:
          type: integer
        rows:
          type: array
          items:
            type: object
            properties:
              row:
                type: integer
                description: पंक्ति संख्या, 1 से शुरू।
              status:
                type: string
                enum:
                  - created
                  - existing
                  - duplicate
                  - failed
                description: >-
                  `created`: बुक में जोड़ा गया। `existing`: वॉलेट पहले से बुक
                  में है और इसे अछूता छोड़ दिया गया था। `duplicate`: इस इंपोर्ट
                  की पिछली पंक्ति को दोहराता है। `failed`: `errors` देखें।
              entry_id:
                type: string
                format: uuid
                nullable: true
                description: पंक्ति द्वारा बनाई गई या पाई गई एड्रेस-बुक प्रविष्टि।
              errors:
                type: object
                description: एक `failed` पंक्ति की फ़ील्ड त्रुटियाँ; अन्यथा खाली।
              duplicate_of_row:
                type: integer
                nullable: true
                description: एक `duplicate` पंक्ति पर, वह पंक्ति जिसे यह दोहराती है।
  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.