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

# वॉलेट स्क्रीनिंग PDF रिपोर्ट API

> Didit की ब्रांडेड PDF में वॉलेट स्क्रीनिंग परिणाम बनाएं, स्क्रीनिंग endpoint का JSON दोबारा भेजकर। स्टेटलेस, प्रदाता कॉल नहीं, अतिरिक्त बिलिंग नहीं।



Screen Wallet PDF प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Render a previously returned on-demand wallet-screening result as a Didit-branded PDF, through the Didit Management API.

Endpoint:
POST https://verification.didit.me/v3/wallet-screening/pdf/

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

Goal:
\- Turn a wallet-screening JSON result into a downloadable PDF report. This is stateless: nothing is persisted, no provider is called again, and there is no additional billing.

Prerequisites:
\- You must already have the exact JSON body that POST /v3/wallet-screening/ returned, including its report_signature field. This endpoint does not accept a hand-built or edited payload.

Request body (application/json):
\- The full, unmodified response body from POST /v3/wallet-screening/ (or its console equivalent), including report_signature.

Example call:
curl -X POST "https://verification.didit.me/v3/wallet-screening/pdf/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d "$RESULT" \
-o wallet_screening_report.pdf

Response:
\- Body is binary (application/pdf). DO NOT parse as JSON.
\- Content-Type: application/pdf
\- Content-Disposition: attachment; filename=wallet_screening_<address>.pdf

Failure modes:
\- 400 - the body is not a JSON object matching the wallet-screening result shape, or report_signature is missing or invalid (the result was edited, truncated, or hand-built instead of reposted verbatim).
\- 401 - missing or invalid x-api-key.

For the underlying screening call, see /management-api/transactions/screen-wallet.`

\</pre>



      
      

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

## यह स्टेटलेस क्यों हैस्टैंडअलोन वॉलेट स्क्रीनिंग लेन-देन तालिका में कुछ भी नहीं लिखती, इसलिए इस endpoint के पास रेंडर करने के लिए कोई संग्रहीत रिकॉर्ड नहीं होता। इसके बजाय, आप `POST /v3/wallet-screening/` से मिला बिल्कुल वही JSON दोबारा भेजते हैं, और Didit उस payload को किसी प्रदाता को फिर से कॉल किए बिना PDF में रेंडर करता है।## `report_signature` फ़ील्ड`POST /v3/wallet-screening/` का हर रिस्पॉन्स अब एक `report_signature` फ़ील्ड शामिल करता है, जो आपके एप्लिकेशन तक सीमित एक अपारदर्शी हस्ताक्षर है। यह endpoint रेंडर करने से पहले इसे सत्यापित करता है, ताकि कॉलर `risk_score`, `severity`, `sanctions_hit` या किसी अन्य फ़ील्ड को बदलकर ऐसे परिणाम के लिए साफ़-सुथरा दिखने वाला Didit ब्रांडेड PDF न पा सके, जो Didit ने कभी तैयार ही नहीं किया।हमेशा पूरी रिस्पॉन्स बॉडी **बिना बदले** दोबारा भेजें, `report_signature` सहित। कुंजियों का क्रम बदलना ठीक है; किसी भी हस्ताक्षरित मान को बदलना ठीक नहीं है।```bash theme={null}
# 1. Run the screening and save the full response
RESULT=$(curl -s -X POST https://verification.didit.me/v3/wallet-screening/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet_address": "0x28c6c06298d514db089934071355e5743bf21d60", "blockchain": "ETH"}')

# 2. Repost it verbatim to render the PDF
curl -X POST https://verification.didit.me/v3/wallet-screening/pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$RESULT" \
  -o wallet_screening_report.pdf
```## बिलिंगप्रदाता को कोई कॉल नहीं किया जाता और कोई शुल्क नहीं लिया जाता। यह केवल उस परिणाम को दोबारा रेंडर करता है जिसके लिए आपने `POST /v3/wallet-screening/` कॉल करते समय पहले ही भुगतान कर दिया था।## त्रुटियाँ| स्टेटस | अर्थ |
| - | - |
| `400` | बॉडी वॉलेट-स्क्रीनिंग परिणाम की संरचना से मेल खाने वाला JSON ऑब्जेक्ट नहीं है, या `report_signature` गायब है या दोबारा भेजे गए फ़ील्ड से मेल नहीं खाता। |
| `401` | `x-api-key` गायब है या अमान्य है। |## अगले चरण> [card] [वॉलेट स्क्रीन करें](https://docs.didit.me/hi/management-api/transactions/screen-wallet.md)
>
> अंतर्निहित मांग-आधारित वॉलेट स्क्रीनिंग चलाएँ और यहाँ दोबारा भेजने के लिए JSON परिणाम प्राप्त करें।> [card] [ऑन-डिमांड वॉलेट स्क्रीनिंग](https://docs.didit.me/hi/transaction-monitoring/wallet-screening.md)
>
> स्टैंडअलोन वॉलेट-स्क्रीनिंग endpoint और परिणाम मॉडल का अवलोकन।


## OpenAPI

````yaml hi/openapi-25.json POST /v3/wallet-screening/pdf/
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/wallet-screening/pdf/:
    post:
      tags:
        - Transactions
      summary: वॉलेट स्क्रीनिंग परिणाम को PDF के रूप में रेंडर करें
      description: >-
        `POST /v3/wallet-screening/` का स्टेटलेस साथी: उस endpoint द्वारा लौटाए
        गए सटीक JSON body को — इसमें जोड़े गए `report_signature` सहित — पुनः
        पोस्ट करें और उसी परिणाम की Didit-ब्रांडेड PDF प्राप्त करें। किसी भी
        प्रदाता को कॉल नहीं किया जाता है और न ही किसी चीज़ का बिल लिया जाता है
        और न ही कुछ स्थायी रूप से संग्रहीत किया जाता है; यह केवल उस परिणाम को
        फिर से रेंडर करता है जिसे Didit पहले ही तैयार कर चुका है। हस्ताक्षर PDF
        को एक अपरिवर्तित परिणाम से जोड़ता है: दोबारा पोस्ट करने से पहले
        `risk_score`, `severity`, `sanctions_hit`, या किसी अन्य हस्ताक्षरित
        फ़ील्ड को संपादित करने पर `400` के साथ विफल हो जाता है।
      operationId: screenWalletPdf
      requestBody:
        required: true
        description: >-
          `POST /v3/wallet-screening/` द्वारा लौटाया गया अपरिवर्तित JSON
          ऑब्जेक्ट, जिसमें `report_signature` शामिल है।
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WalletScreeningResult'
              required:
                - report_signature
              description: >-
                `POST /v3/wallet-screening/` रिस्पॉन्स के समान आकार —
                `report_signature` सहित, उस रिस्पॉन्स बॉडी को ठीक वैसे ही वापस
                पास करें।
      responses:
        '200':
          description: >-
            रेंडर किया गया PDF दस्तावेज़, सीधे बाइनरी `application/pdf` के रूप
            में लौटाया गया — कोई JSON रैपर नहीं है।
          headers:
            Content-Disposition:
              description: >-
                `attachment; filename=wallet_screening_{address}.pdf`, पुनः
                पोस्ट किए गए परिणाम में `wallet_address` (या `transaction_hash`)
                से व्युत्पन्न।
              schema:
                type: string
                example: >-
                  attachment;
                  filename=wallet_screening_0x28c6c06298d514db0899.pdf
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            बॉडी वॉलेट स्क्रीनिंग परिणाम आकार से मेल खाने वाला JSON ऑब्जेक्ट
            नहीं है, या `report_signature` गायब है या रीपोस्ट किए गए फ़ील्ड से
            मेल नहीं खाता है (रीपोस्ट से पहले संपादित या छोटा किया गया)।
          content:
            application/json:
              schema:
                type: object
              examples:
                Not an object:
                  value:
                    non_field_errors:
                      - >-
                        Expected a JSON object matching a wallet-screening
                        result.
                Missing or invalid signature:
                  value:
                    report_signature:
                      - >-
                        This wallet-screening result is missing or fails its
                        report signature - repost the exact JSON returned by the
                        wallet-screening endpoint, unmodified.
        '401':
          description: अनुपलब्ध या अमान्य `x-api-key`।
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            # $RESULT is the saved JSON body from POST /v3/wallet-screening/

            curl -X POST
            'https://verification.didit.me/v3/wallet-screening/pdf/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d "$RESULT" \
              -o wallet_screening_report.pdf
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            content = client.wallet_screening.screen_pdf(
                provider="your-provider",
                screening_type="WALLET_SCREENING",
                risk_score=1,
                severity="UNKNOWN",
                status="SCREENED",
                summary="your-summary",
                wallet_address="your-wallet-address",
                blockchain="your-blockchain",
                source_of_funds=[{}],
                destination_of_funds=[{}],
                counterparty_connections=[{}],
                sanctions_hit=True,
                dominant_risk_category="your-dominant-risk-category",
                report_signature="your-report-signature",
            )
            with open("download.pdf", "wb") as file:
                file.write(content)
        - lang: javascript
          label: Node.js
          source: >-
            import { writeFile } from "node:fs/promises";

            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const content = await didit.walletScreening.screenPdf({
              provider: "your-provider",
              screening_type: "WALLET_SCREENING",
              risk_score: 1,
              severity: "UNKNOWN",
              status: "SCREENED",
              summary: "your-summary",
              wallet_address: "your-wallet-address",
              blockchain: "your-blockchain",
              source_of_funds: [{}],
              destination_of_funds: [{}],
              counterparty_connections: [{}],
              sanctions_hit: true,
              dominant_risk_category: "your-dominant-risk-category",
              report_signature: "your-report-signature",
            });

            await writeFile("download.pdf", Buffer.from(await
            content.arrayBuffer()));
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.WalletScreening.ScreenPDF(ctx, didit.WalletScreeningResultParam{\n\tProvider:                \"your-provider\",\n\tScreeningType:           \"WALLET_SCREENING\",\n\tRiskScore:               1,\n\tSeverity:                \"UNKNOWN\",\n\tStatus:                  \"SCREENED\",\n\tSummary:                 \"your-summary\",\n\tWalletAddress:           \"your-wallet-address\",\n\tBlockchain:              \"your-blockchain\",\n\tSourceOfFunds:           []didit.WalletScreeningResultParamSourceOfFunds{{}},\n\tDestinationOfFunds:      []didit.WalletScreeningResultParamDestinationOfFunds{{}},\n\tCounterpartyConnections: []didit.WalletScreeningResultParamCounterpartyConnections{{}},\n\tSanctionsHit:            true,\n\tDominantRiskCategory:    didit.String(\"your-dominant-risk-category\"),\n\tReportSignature:         \"your-report-signature\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import java.nio.file.Path;
            import java.util.List;
            import me.didit.Didit;
            import me.didit.types.WalletScreeningResult;

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

            client.walletScreening().screenPdf(WalletScreeningResult.builder()
                    .provider("your-provider")
                    .screeningType(WalletScreeningResult.ScreeningType.of("WALLET_SCREENING"))
                    .riskScore(1L)
                    .severity(WalletScreeningResult.Severity.of("UNKNOWN"))
                    .status(WalletScreeningResult.Status.of("SCREENED"))
                    .summary("your-summary")
                    .walletAddress("your-wallet-address")
                    .blockchain("your-blockchain")
                    .sourceOfFunds(List.of(WalletScreeningResult.SourceOfFunds.builder()
                            .build()))
                    .destinationOfFunds(List.of(WalletScreeningResult.DestinationOfFunds.builder()
                            .build()))
                    .counterpartyConnections(List.of(WalletScreeningResult.CounterpartyConnections.builder()
                            .build()))
                    .sanctionsHit(true)
                    .dominantRiskCategory("your-dominant-risk-category")
                    .reportSignature("your-report-signature")
                    .build())
                    .writeTo(Path.of("download.pdf"));
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

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

            $content = $didit->walletScreening->screenPdf([
                'provider' => 'your-provider',
                'screening_type' => 'WALLET_SCREENING',
                'risk_score' => 1,
                'severity' => 'UNKNOWN',
                'status' => 'SCREENED',
                'summary' => 'your-summary',
                'wallet_address' => 'your-wallet-address',
                'blockchain' => 'your-blockchain',
                'source_of_funds' => [[]],
                'destination_of_funds' => [[]],
                'counterparty_connections' => [[]],
                'sanctions_hit' => true,
                'dominant_risk_category' => 'your-dominant-risk-category',
                'report_signature' => 'your-report-signature',
            ]);
            $content->saveTo('download.pdf');
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            content = didit.wallet_screening.screen_pdf(
              provider: "your-provider",
              screening_type: "WALLET_SCREENING",
              risk_score: 1,
              severity: "UNKNOWN",
              status: "SCREENED",
              summary: "your-summary",
              wallet_address: "your-wallet-address",
              blockchain: "your-blockchain",
              source_of_funds: [{}],
              destination_of_funds: [{}],
              counterparty_connections: [{}],
              sanctions_hit: true,
              dominant_risk_category: "your-dominant-risk-category",
              report_signature: "your-report-signature"
            )
            File.binwrite("download.pdf", content)
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var content = await client.WalletScreening.ScreenPdfAsync(new
            WalletScreeningResult

            {
                Provider = "your-provider",
                ScreeningType = "WALLET_SCREENING",
                RiskScore = 1,
                Severity = "UNKNOWN",
                Status = "SCREENED",
                Summary = "your-summary",
                WalletAddress = "your-wallet-address",
                Blockchain = "your-blockchain",
                SourceOfFunds = new WalletScreeningResultSourceOfFunds[] { new() },
                DestinationOfFunds = new WalletScreeningResultDestinationOfFunds[] { new() },
                CounterpartyConnections = new WalletScreeningResultCounterpartyConnections[] { new() },
                SanctionsHit = true,
                DominantRiskCategory = "your-dominant-risk-category",
                ReportSignature = "your-report-signature",
            });

            await content.SaveToAsync("download.pdf");
components:
  schemas:
    WalletScreeningResult:
      type: object
      properties:
        provider:
          type: string
          description: वह प्रदाता जिसने स्क्रीनिंग की (उदा. `merklescience`, `crystal`)।
        screening_type:
          type: string
          enum:
            - WALLET_SCREENING
          description: इस endpoint के लिए हमेशा `WALLET_SCREENING`।
        risk_score:
          type: integer
          description: >-
            सामान्यीकृत 0-100 जोखिम स्कोर। उच्च मान का अर्थ है जोखिम भरी
            संस्थाओं के प्रति अधिक जोखिम। Merkle Science किसी पते को 0-5 तक
            ग्रेड करता है, जो 0, 15, 35, 55, 75 या 95 पर मैप होता है।
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            `risk_score` से प्राप्त जोखिम बकेट: `0-9` UNKNOWN, `10-39` LOW,
            `40-69` MEDIUM, `70-89` HIGH, `90-100` CRITICAL। `UNKNOWN` सबसे
            निचला बैंड है, कोई अलग नो-डेटा स्थिति नहीं: `risk_score` 0 (सामान्य
            साफ़-पते का मामला) का अर्थ कोई प्रतिकूल आकलन नहीं है, जबकि 1-9 रेंज
            में एक गैर-शून्य स्कोर एक वास्तविक लेकिन उप-LOW सिग्नल है - केवल
            बैंड ही नहीं, बल्कि `risk_score` पढ़ें। `UNKNOWN` को कभी भी
            सकारात्मक कम-जोखिम या स्पष्ट रेटिंग के रूप में न मानें; इसे पास के
            रूप में प्रदर्शित न करें।
        status:
          type: string
          enum:
            - SCREENED
            - PENDING
            - ERROR
          description: स्क्रीनिंग परिणाम की स्थिति।
        summary:
          type: string
          description: स्क्रीनिंग परिणाम का मानव-पठनीय सारांश।
        wallet_address:
          type: string
          description: स्क्रीन किया गया पता, वापस दोहराया गया।
        transaction_hash:
          type: string
          nullable: true
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा `null`।
        blockchain:
          type: string
          description: वह ब्लॉकचेन जिसकी स्क्रीनिंग की गई थी।
        block_timestamp:
          type: string
          nullable: true
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा `null`।
        total_value_usd:
          type: number
          nullable: true
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा `null`।
        fee_usd:
          type: number
          nullable: true
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा `null`।
        sender_rows:
          type: array
          items:
            type: object
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा खाली।
        receiver_rows:
          type: array
          items:
            type: object
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा खाली।
        transaction_flows:
          type: array
          items:
            type: object
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा खाली।
        transaction_flows_status:
          type: string
          nullable: true
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा `null`।
        transaction_flows_error:
          type: string
          nullable: true
          description: >-
            लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट
            स्क्रीनिंग परिणाम पर हमेशा `null`।
        source_of_funds:
          type: array
          description: >-
            पते को कहाँ से धन प्राप्त हुआ, निकाय द्वारा एट्रिब्यूट किया गया।
            प्रत्येक प्रविष्टि एक एक्सपोज़र विवरण है।
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  सामान्यीकृत जोखिम श्रेणी, उदाहरण के लिए `exchange_licensed`,
                  `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`,
                  `sanctioned`, `stolen_funds`, `high_risk_exchange`।
              percentage:
                type: number
                description: दिशा के कुल एक्सपोज़र का हिस्सा, 0-100।
              amount_usd:
                type: number
                nullable: true
                description: इस संस्था के लिए एट्रिब्यूट किया गया USD मूल्य।
              entity_name:
                type: string
                nullable: true
                description: >-
                  संबद्ध इकाई का नाम, उदाहरण के लिए कोई एक्सचेंज, मिक्सर या
                  प्रतिबंधित समूह।
              entity_type:
                type: string
                nullable: true
                description: >-
                  प्रदाता निकाय प्रकार (उदा. `Exchange`, `DeFi`, `Sanctions`,
                  `Theft`)।
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  अधिक विस्तृत उपप्रकार (उदा. `Mandatory KYC and AML`, `OFAC`,
                  `Yield Aggregator`)।
              hops:
                type: integer
                nullable: true
                description: >-
                  इकाई तक हॉप्स की संख्या (प्रत्यक्ष प्रतिपक्ष के लिए 1), जब
                  प्रदाता इसकी रिपोर्ट करता है। Merkle Science के लिए हमेशा
                  `null`, जो केवल यह रिपोर्ट करता है कि एक्सपोज़र प्रत्यक्ष है
                  या अप्रत्यक्ष: `exposure_type` का उपयोग करें।
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, जैसा कि प्रदाता इकाई को लेबल
                  करता है।
              is_direct:
                type: boolean
                description: True जब `exposure_type` `direct` हो।
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  क्या फ़ंड इस इकाई से आए (`incoming`) या इस इकाई को गए
                  (`outgoing`)।
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: '`direct` (1 हॉप) या `indirect` (मल्टी-हॉप) एक्सपोज़र।'
              provider_entity_id:
                type: string
                nullable: true
                description: इकाई के लिए प्रदाता का अपना पहचानकर्ता।
              provider_entity_type_id:
                type: string
                nullable: true
                description: '`entity_type` के लिए प्रदाता का अपना पहचानकर्ता।'
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: '`entity_subtype` के लिए प्रदाता का अपना पहचानकर्ता।'
              country:
                type: string
                nullable: true
                description: >-
                  इकाई का प्राथमिक ISO 3166-1 alpha-2 देश। प्रदाता को इसकी
                  जानकारी न होने पर खाली या `null`।
              raw_amount:
                type: number
                nullable: true
                description: एसेट की अपनी इकाई में राशि, जब प्रदाता इसे रिपोर्ट करता है।
              raw_currency:
                type: string
                nullable: true
                description: '`raw_amount` की इकाई, जब प्रदाता इसे रिपोर्ट करता है।'
        destination_of_funds:
          type: array
          description: >-
            पते ने कहाँ धन भेजा, निकाय द्वारा एट्रिब्यूट किया गया।
            `exposure_direction` = `outgoing` के साथ `source_of_funds` के समान
            आइटम संरचना।
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  सामान्यीकृत जोखिम श्रेणी, उदाहरण के लिए `exchange_licensed`,
                  `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`,
                  `sanctioned`, `stolen_funds`, `high_risk_exchange`।
              percentage:
                type: number
                description: दिशा के कुल एक्सपोज़र का हिस्सा, 0-100।
              amount_usd:
                type: number
                nullable: true
                description: इस संस्था के लिए एट्रिब्यूट किया गया USD मूल्य।
              entity_name:
                type: string
                nullable: true
                description: >-
                  संबद्ध इकाई का नाम, उदाहरण के लिए कोई एक्सचेंज, मिक्सर या
                  प्रतिबंधित समूह।
              entity_type:
                type: string
                nullable: true
                description: >-
                  प्रदाता निकाय प्रकार (उदा. `Exchange`, `DeFi`, `Sanctions`,
                  `Theft`)।
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  अधिक विस्तृत उपप्रकार (उदा. `Mandatory KYC and AML`, `OFAC`,
                  `Yield Aggregator`)।
              hops:
                type: integer
                nullable: true
                description: >-
                  इकाई तक हॉप्स की संख्या (प्रत्यक्ष प्रतिपक्ष के लिए 1), जब
                  प्रदाता इसकी रिपोर्ट करता है। Merkle Science के लिए हमेशा
                  `null`, जो केवल यह रिपोर्ट करता है कि एक्सपोज़र प्रत्यक्ष है
                  या अप्रत्यक्ष: `exposure_type` का उपयोग करें।
              description:
                type: string
                nullable: true
                description: >-
                  `entity_type / entity_subtype`, जैसा कि प्रदाता इकाई को लेबल
                  करता है।
              is_direct:
                type: boolean
                description: True जब `exposure_type` `direct` हो।
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  क्या फ़ंड इस इकाई से आए (`incoming`) या इस इकाई को गए
                  (`outgoing`)।
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: '`direct` (1 हॉप) या `indirect` (मल्टी-हॉप) एक्सपोज़र।'
              provider_entity_id:
                type: string
                nullable: true
                description: इकाई के लिए प्रदाता का अपना पहचानकर्ता।
              provider_entity_type_id:
                type: string
                nullable: true
                description: '`entity_type` के लिए प्रदाता का अपना पहचानकर्ता।'
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: '`entity_subtype` के लिए प्रदाता का अपना पहचानकर्ता।'
              country:
                type: string
                nullable: true
                description: >-
                  इकाई का प्राथमिक ISO 3166-1 alpha-2 देश। प्रदाता को इसकी
                  जानकारी न होने पर खाली या `null`।
              raw_amount:
                type: number
                nullable: true
                description: एसेट की अपनी इकाई में राशि, जब प्रदाता इसे रिपोर्ट करता है।
              raw_currency:
                type: string
                nullable: true
                description: '`raw_amount` की इकाई, जब प्रदाता इसे रिपोर्ट करता है।'
        counterparty_connections:
          type: array
          description: >-
            वे संस्थाएँ जिनसे प्रदाता जाँचे गए पते को संबद्ध करता है। Merkle
            Science के लिए ये पते के अपने स्वामी और उपयोगकर्ता टैग से आती हैं,
            इसलिए एक ही संस्था दो बार दिखाई दे सकती है, और वे कोई फ़ंड फ़्लो
            नहीं ले जाती हैं: `received_usd`, `sent_usd`, `received_hops` और
            `sent_hops` `null` हैं और `percentage` 0 है। यहाँ `risk_level` या
            `is_direct` पर रूट न करें: निर्णय के लिए `sanctions_hit`,
            `dominant_risk_category` और `risk_factors[].is_high_risk` का उपयोग
            करें, और प्रत्यक्षता के लिए `source_of_funds`/`destination_of_funds`
            में `exposure_type` का उपयोग करें।
          items:
            type: object
            properties:
              entity_name:
                type: string
                nullable: true
                description: संबद्ध इकाई का नाम।
              entity_type:
                type: string
                nullable: true
                description: प्रदाता निकाय प्रकार।
              entity_subtype:
                type: string
                nullable: true
                description: प्रदाता निकाय उपप्रकार।
              risk_level:
                type: string
                description: >-
                  लोअरकेस और प्रदाता-निर्भर। Merkle Science के लिए यह पते का
                  अपना 0-5 जोखिम स्तर (`no_risk`, `low`, `medium_low`, `medium`,
                  `high`, `critical`) है, जिसे इकाई की श्रेणी उच्च जोखिम होने पर
                  बढ़ाकर `high` कर दिया जाता है; यह इकाई का कोई अलग स्तर नहीं
                  है।
              categories:
                type: array
                items:
                  type: string
                description: संस्था की सामान्यीकृत जोखिम श्रेणियां।
              received_usd:
                type: number
                nullable: true
                description: संस्था से प्राप्त USD, जब प्रदाता इसकी रिपोर्ट करता है।
              sent_usd:
                type: number
                nullable: true
                description: संस्था को भेजा गया USD, जब प्रदाता इसकी रिपोर्ट करता है।
              received_hops:
                type: integer
                nullable: true
                description: >-
                  प्राप्तकर्ता पक्ष पर मौजूद निकाय के लिए हॉप्स, जब प्रदाता उनकी
                  रिपोर्ट करता है।
              sent_hops:
                type: integer
                nullable: true
                description: >-
                  प्रेषक पक्ष पर मौजूद निकाय के लिए हॉप्स, जब प्रदाता उनकी
                  रिपोर्ट करता है।
              percentage:
                type: number
                description: >-
                  पते के एक्सपोज़र का हिस्सा, जब प्रदाता इसे रिपोर्ट करता है;
                  अन्यथा 0।
              is_direct:
                type: boolean
                description: >-
                  Merkle Science के लिए हमेशा `true`, जिसके कनेक्शन प्रतिपक्षों
                  के बजाय एट्रिब्यूशन हैं।
              country:
                type: string
                nullable: true
                description: इकाई का देश, जब ज्ञात हो।
              provider_entity_id:
                type: string
                nullable: true
                description: इकाई के लिए प्रदाता का अपना पहचानकर्ता।
        network_nodes:
          type: array
          items:
            type: object
          description: >-
            लेन-देन स्क्रीनिंग के लिए एक्सपोज़र ग्राफ़ नोड। वॉलेट स्क्रीनिंग
            परिणाम में खाली।
        network_edges:
          type: array
          items:
            type: object
          description: >-
            लेन-देन स्क्रीनिंग के लिए एक्सपोज़र ग्राफ़ एज। वॉलेट स्क्रीनिंग
            परिणाम में खाली।
        sanctions_hit:
          type: boolean
          description: यदि पते पर प्रत्यक्ष या अप्रत्यक्ष प्रतिबंध जोखिम है तो True।
        pep_counterparty:
          type: boolean
          description: >-
            राजनीतिक रूप से उजागर व्यक्ति से संबंधित एक्सपोज़र। जब कोई PEP
            परिणाम उपलब्ध न हो तब `null`, जो कि आज का हर परिणाम है क्योंकि कोई
            भी प्रदाता इसकी रिपोर्ट नहीं करता; केवल एक स्पष्ट नकारात्मक
            स्क्रीनिंग परिणाम के लिए `false`। `null` को पूर्ण PEP जांच न समझें।
          nullable: true
        dominant_risk_category:
          type: string
          nullable: true
          description: >-
            उच्चतम भारित उच्च-जोखिम वाली श्रेणी, या कोई प्रमुख न होने पर `null`
            (उदा. `sanctioned`, `mixer`, `stolen_funds`)।
        risk_factors:
          type: array
          description: >-
            `risk_score` का क्रमबद्ध स्पष्टीकरण: इस निर्णय को उत्पन्न करने वाले
            कारक। प्रदाता अपने स्वयं के मॉडल पर पते का मूल्यांकन करते हैं और
            केवल एक निर्णय लौटाते हैं (Merkle Science एक पूर्णांक 0-5 लौटाता
            है), इसलिए केवल स्कोर पर कार्रवाई नहीं की जा सकती। पहले उच्च-जोखिम
            वाले, फिर प्रत्येक कारक के माध्यम से स्थानांतरित मूल्य के अनुसार
            क्रमित, अधिकतम पाँच सबसे मजबूत कारकों तक सीमित; `source_of_funds` और
            `destination_of_funds` में हमेशा पूरा ब्रेकडाउन होता है। बिना किसी
            `is_high_risk` प्रविष्टि वाले उच्च `risk_score` का अर्थ है कि
            प्रदाता ने किसी प्रतिबंध या संबद्ध-इकाई मिलान की सूचना नहीं दी और
            पते का मूल्यांकन विशुद्ध रूप से अपने स्वयं के एक्सपोज़र मॉडल पर किया
            - `summary` इसे स्पष्ट रूप से बताता है।
          items:
            type: object
            properties:
              source:
                type: string
                enum:
                  - attribution
                  - exposure
                description: >-
                  `attribution` वह है जो प्रदाता कहता है कि पता स्वयं क्या है
                  (उसका अपना टैग या क्लस्टर); `exposure` वह है जहाँ उसका धन
                  वास्तव में स्थानांतरित हुआ।
              category:
                type: string
                description: >-
                  सामान्यीकृत जोखिम श्रेणी, एक्सपोज़र ब्रेकडाउन के समान
                  शब्दावली।
              label:
                type: string
                description: >-
                  ड्राइवर के लिए प्रदाता की अपनी शब्दावली (उदा. `Gambling /
                  Crypto only`), जिसे आप प्रदाता के कंसोल में भी देखेंगे।
              entity_name:
                type: string
                nullable: true
                description: >-
                  ड्राइवर के पीछे संबद्ध इकाई, उदाहरण के लिए कोई जुआ साइट या
                  एक्सचेंज।
              direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                  - unknown
                  - attribution
                description: >-
                  फ़ंड प्रवाह की दिशा, `attribution` जब ड्राइवर पते का अपना टैग
                  हो, या `unknown` जब प्रदाता ने किसी दिशा की रिपोर्ट न की हो।
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                  - unknown
                  - attribution
                description: >-
                  `direct` (1 हॉप) या `indirect` (मल्टी-हॉप), पते के अपने टैग के
                  लिए `attribution`, या `unknown` जब प्रदाता ने यह नहीं बताया कि
                  प्रतिपक्ष कितने हॉप दूर है। `unknown` को अवर्गीकृत मानें,
                  `direct` के रूप में नहीं।
              amount_usd:
                type: number
                format: float
                nullable: true
                description: इस ड्राइवर के लिए एट्रिब्यूट किया गया USD मूल्य।
              percentage:
                type: number
                format: float
                description: >-
                  पते के कुल (TOTAL) स्क्रीन किए गए वॉल्यूम का हिस्सा, दोनों
                  दिशाओं को मिलाकर - `source_of_funds`/`destination_of_funds` के
                  अंदर `percentage` के विपरीत, जो प्रति दिशा सामान्यीकृत होता
                  है। पूरी सूची में तुलनीय और जोड़ने योग्य।
              is_high_risk:
                type: boolean
                description: >-
                  क्या श्रेणी वह है जिसे Didit उच्च जोखिम मानता है
                  (`sanctioned`, `mixer`, `stolen_funds`, `ransomware`, `scam`,
                  `darknet_market`, `terrorist_financing`, `child_exploitation`,
                  `hacked_exchange`, `high_risk_exchange`, `seized_funds`)।
              description:
                type: string
                description: >-
                  ड्राइवर का एक पंक्ति का रेंडरिंग, उदा. `9.01% indirect
                  outgoing exposure to Gambling / Crypto only (Example
                  Gambling)`।
        raw_response:
          type: object
          additionalProperties: true
          description: >-
            प्रदाता का अपना payload। इसका आकार प्रदाता-विशिष्ट है और बिना किसी
            सूचना के बदल सकता है: इसे पार्स करने के बजाय सामान्यीकृत फ़ील्ड
            पढ़ें।
        report_signature:
          type: string
          description: >-
            इस सटीक परिणाम पर अपारदर्शी HMAC-SHA256 हस्ताक्षर, जो आपके एप्लिकेशन
            तक सीमित है। अपने आप में इसका कोई अर्थ नहीं है — इसे PDF के रूप में
            प्रस्तुत करने के लिए पूरे रिस्पॉन्स बॉडी को, बिना किसी बदलाव के और
            इस फ़ील्ड सहित, `POST /v3/wallet-screening/pdf/` पर पुनः पोस्ट करें।
            यदि `report_signature` मौजूद नहीं है या पुनः पोस्ट करने से पहले किसी
            भी हस्ताक्षरित फ़ील्ड (उदा. `risk_score`, `severity`,
            `sanctions_hit`) को संपादित किया गया था, तो PDF endpoint अनुरोध को
            `400` के साथ अस्वीकार कर देता है।
      required:
        - provider
        - screening_type
        - risk_score
        - severity
        - status
        - summary
        - wallet_address
        - blockchain
        - sanctions_hit
        - dominant_risk_category
        - source_of_funds
        - destination_of_funds
        - counterparty_connections
        - report_signature
  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.