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

# فحص الطرف المقابل VASP: التحقق من العقوبات عبر API

> افحص VASP طرفًا مقابلًا في Travel Rule بحثًا عن العقوبات والأخبار السلبية عبر Didit. الفحص اختياري ومدفوع، ويُستخدم لتطبيقك.



موجّه فحص VASP عبر API
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`Screen a Travel Rule counterparty VASP against sanctions and adverse media for my application.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/screening/

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

Prerequisite:
Turn on counterparty screening first: PUT /v3/travel-rule/settings/ with {"counterparty_screening_enabled": true}. It is off by default.

Example call:
curl -X POST "https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/screening/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"refresh": false}'

Body (optional):
\- refresh - true screens again even when a fresh screening exists. Default false.

What happens:
\- 201 {"outcome": "screened", "screening": {...}} - a new screening ran and was billed at my organization's Company AML Screening price (GET .../screening/ returns the price).
\- 200 {"outcome": "reused", "screening": {...}} - a screening younger than 30 days already existed and was returned. Nothing was billed.
\- screening is {id, status, total_hits, score, screened_at, fresh, flagged}. status is Approved, In Review or Declined; flagged is true while a fresh screening is In Review or Declined.
\- While my latest screening is flagged and screening stays on, my rules read counterparty_risk_level as HIGH for this counterparty. The shared risk_level in the directory does not change.
\- The screening is private to my application: no other Didit customer sees it.
\- With screening on, Didit also screens the counterparty an outbound Travel Rule exchange reaches when the exchange starts, reusing a fresh screening and billing a new one the same way. A refusal or failure there never fails the transfer.

Failure modes (nothing runs and nothing is billed):
\- 400 - the counterparty has no name to screen, or the body is not valid.
\- 403 - my organization's balance cannot cover the screening (code insufficient_credits), or my contract has no rate configured for it.
\- 404 - no directory entry or listed Didit network member has this id, or the id is my own VASP profile.
\- 409 - counterparty screening is off, the application is a sandbox one, or a screening of this counterparty is already running.
\- 502 - the screening could not be completed; try again in a moment.

Full guide: /transaction-monitoring/travel-rule#counterparty-screening.`

\</pre>



      
      

الصق في



## OpenAPI

````yaml ar/openapi-25.json POST /v3/travel-rule/vasps/{vasp_id}/screening/
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/vasps/{vasp_id}/screening/:
    post:
      tags:
        - Travel Rule
      summary: فحص VASP
      description: >-
        فحص كيان الطرف المقابل مقابل العقوبات والأخبار السلبية لتطبيقك. ميزة
        اختيارية: يجب تفعيل counterparty_screening_enabled في إعدادات Travel
        Rule الخاصة بك. يتم فوترة كل فحص جديد بسعر فحص AML للشركات الخاص
        بمؤسستك؛ ويتم إرجاع فحص يقل عمره عن 30 يوماً بدلاً من ذلك (200، بدون
        فوترة) ما لم ترسل refresh: true. يتم تشغيل عملية فحص واحدة لطرف مقابل في
        كل مرة لكل تطبيق. تكون النتيجة خاصة بتطبيقك. لا يتم فحص تطبيقات البيئة
        التجريبية إطلاقاً.
      operationId: screenTravelRuleVasp
      parameters:
        - name: vasp_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            معرّف صف في GET /v3/travel-rule/vasps/: مدخل في الدليل أو عضو في
            شبكة Didit.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleCounterpartyScreeningRequest'
            example:
              refresh: false
      responses:
        '200':
          description: يوجد فحص حديث بالفعل وتم إرجاعه. لم تتم فوترة أي شيء.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleCounterpartyScreeningResult'
              example:
                outcome: reused
                screening:
                  id: 7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d
                  status: Approved
                  total_hits: 0
                  score: null
                  screened_at: '2026-10-14T09:58:00Z'
                  fresh: true
                  flagged: false
        '201':
          description: تم إجراء فحص جديد وتمت فوترته.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleCounterpartyScreeningResult'
              example:
                outcome: screened
                screening:
                  id: 7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d
                  status: In Review
                  total_hits: 2
                  score: 85
                  screened_at: '2026-10-14T09:58:00Z'
                  fresh: true
                  flagged: true
        '400':
          description: نص الطلب غير صالح، أو ليس لدى الطرف المقابل اسم لفحصه.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
              example:
                detail:
                  - This counterparty has no name to screen.
        '403':
          description: >-
            رصيد مؤسستك لا يغطي الفحص (الرمز insufficient_credits؛ لم يتم تشغيل
            أي شيء ولم تتم فوترة أي شيء)، أو أن عقدك ليس لديه سعر مهيأ له.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
              example:
                detail: >-
                  You don't have enough credits to perform this request. Please
                  top up at https://business.didit.me
                code: insufficient_credits
        '404':
          description: >-
            لا يوجد إدخال في الدليل أو عضو مدرج في شبكة Didit بهذا المعرّف. ملف
            VASP التعريفي الخاص بك لا يكون أبداً طرفاً مقابلاً لك.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: No directory entry or Didit network member has this id.
        '409':
          description: >-
            لم يتم تشغيل أي شيء ولم تتم فوترة أي شيء: فحص الطرف المقابل معطّل
            لتطبيقك، أو التطبيق في البيئة التجريبية، أو أن فحص هذا الطرف المقابل
            قيد التشغيل بالفعل.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Screening off:
                  value:
                    detail: >-
                      Counterparty screening is turned off. Enable it in the
                      Travel Rule settings first.
                Sandbox application:
                  value:
                    detail: >-
                      Counterparty screening does not run for sandbox
                      applications.
                Already running:
                  value:
                    detail: >-
                      A screening of this counterparty is already running. Try
                      again in a moment.
        '502':
          description: تعذر إكمال الفحص. لم تتم فوترة أي شيء؛ أعد المحاولة بعد لحظات.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: The screening provider did not answer. Try again in a moment.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/screening/
            \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"refresh": false}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.screen_vasp(
                "11111111-2222-3333-4444-555555555555",
                refresh=False,
            )
            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.screenVasp("11111111-2222-3333-4444-555555555555",
            {
              refresh: false,
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.ScreenVASP(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleCounterpartyScreeningRequest{\n\tRefresh: didit.Bool(false),\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.TravelRuleCounterpartyScreeningRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().screenVasp("11111111-2222-3333-4444-555555555555",
            TravelRuleCounterpartyScreeningRequest.builder()
                    .refresh(false)
                    .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->screenVasp('11111111-2222-3333-4444-555555555555',
            [
                'refresh' => false,
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.travel_rule.screen_vasp(
              "11111111-2222-3333-4444-555555555555",
              refresh: false
            )
            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.ScreenVaspAsync("11111111-2222-3333-4444-555555555555",
            new TravelRuleCounterpartyScreeningRequest

            {
                Refresh = false,
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleCounterpartyScreeningRequest:
      type: object
      properties:
        refresh:
          type: boolean
          default: false
          description: true لإجراء الفحص مجدداً (والفوترة مجدداً) حتى عند وجود فحص حديث.
    TravelRuleCounterpartyScreeningResult:
      type: object
      properties:
        outcome:
          type: string
          enum:
            - screened
            - reused
          description: >-
            screened: تم تشغيل فحص جديد وفُوترت قيمته (201). reused: أُعيدت
            نتيجة فحص حديث ولم تُفوتر أي قيمة (200).
        screening:
          $ref: '#/components/schemas/TravelRuleCounterpartyScreening'
    TravelRuleCounterpartyScreening:
      type: object
      description: >-
        فحص واحد للعقوبات والأخبار السلبية لكيان الطرف المقابل، يُجرى لحساب
        تطبيقك وتُفوتر تكلفته عليه. خاص بتطبيقك: لا يراه عميل آخر أبداً.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            مقبولة: لا يوجد تطابق محتمل يتطلب الانتباه. قيد المراجعة أو مرفوضة:
            تطابق محتمل مع العقوبات أو الأخبار السلبية.
        total_hits:
          type: integer
          description: عدد التطابقات المحتملة التي أرجعها الفحص.
        score:
          type: number
          nullable: true
          description: >-
            أعلى درجة مخاطر من بين التطابقات المحتملة. Null عندما لا يتطابق أي
            شيء.
        screened_at:
          type: string
          format: date-time
        fresh:
          type: boolean
          description: >-
            ما إذا كان الفحص أحدث من fresh_days (30 يوماً). يُعاد استخدام الفحص
            الحديث بدلاً من فوترته مرة أخرى.
        flagged:
          type: boolean
          description: >-
            true طالما أن الفحص حديث وحالته In Review أو Declined. وطالما أن
            أحدث فحص لك تم وضع علامة عليه وظل فحص الطرف المقابل مفعلاً، فإن
            counterparty_risk_level يكون HIGH في قواعدك.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

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