> ## 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: 제재 확인

> Didit Management API로 Travel Rule 거래 상대방 VASP의 제재 및 부정적 언론 보도를 선택적으로 스크리닝하세요. 요금이 부과됩니다.



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 ko/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: >-
        애플케이션을 위해 거래 상대방 엔티티를 제재 및 부정적 언론 보도에 대해 스크리닝합니다. 옵트인: Travel Rule 설정에서
        counterparty_screening_enabled가 켜져 있어야 합니다. 새로운 스크리닝마다 조직의 기업 AML 스크리닝
        가격으로 청구되며, refresh: true를 전송하지 않는 한 30일 이내의 스크리닝이 대신 반환됩니다(200, 청구되지
        않음). 거래 상대방 스크리닝은 애플케이션당 한 번에 하나씩 실행됩니다. 결과는 해당 애플케이션에만 비공개로 유지됩니다. 샌드박스
        애플케이션은 스크리닝되지 않습니다.
      operationId: screenTravelRuleVasp
      parameters:
        - name: vasp_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 'GET /v3/travel-rule/vasps/ 행의 id: 디렉터리 항목 또는 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: >-
            이 id를 가진 디렉터리 항목 또는 등록된 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: >-
        귀하의 애플리케이션을 위해 실행되고 비용이 청구된 거래 상대방 엔터티의 제재 및 부정적 언론 보도 스크리닝 1건입니다. 귀하의
        애플리케이션에만 비공개로 유지되며, 다른 고객에게는 절대 표시되지 않습니다.
      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: >-
            스크리닝이 최신 상태이고 상태가 검토 중(In Review) 또는 거부됨(Declined)인 동안 true입니다. 최신
            스크리닝에 플래그가 지정되어 있고 거래 상대방 스크리닝이 켜져 있는 동안 귀하의 규칙에서
            counterparty_risk_level은 HIGH입니다.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 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.