> ## 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의 표준 실사 설문지를 Travel Rule 거래 상대방 VASP의 등록된 컴플라이언스 주소로 이메일 전송합니다.



VASP 설문지 전송 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Email Didit's standard due-diligence questionnaire to a Travel Rule counterparty VASP.

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

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

Example call:
curl -X POST "https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/questionnaires/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"sent_to": "travelrule@counterparty.example"}'

Body (optional):
\- sent_to - a compliance address on record for the counterparty: for a directory entry its compliance address or a contact my application sees (GET /v3/travel-rule/vasps/{vasp_id}/ lists contacts), for a Didit network member its confirmed compliance email. Default: the address a Travel Rule email to the counterparty goes to (my own contact first, then a platform contact, then the entry's compliance address). Any other address is refused.

What happens:
\- 202 with the questionnaire {id, status: "SENT", form_version, sent_to, sent_at, expires_at, ...}. The email carries a single-use link to a page where the counterparty answers every question of Didit's standard questionnaire.
\- The counterparty has 30 days (expires_at); after that the link stops working and the questionnaire is EXPIRED.
\- Once answered, the status is ANSWERED and the answers stay current for 365 days (valid_until). Read them with GET /v3/travel-rule/vasps/{vasp_id}/questionnaires/.
\- A new send replaces my earlier unanswered questionnaire to the same counterparty: that one becomes EXPIRED and its link stops working.
\- The questionnaire and its answers are private to my application.

Failure modes:
\- 400 - sent_to is not a valid email or not a compliance address on record, or the counterparty has no compliance address on record yet.
\- 404 - no directory entry or listed Didit network member has this id, or the id is my own VASP profile.
\- 429 - a questionnaire went to this address less than a minute ago.
\- 503 - the email could not be sent and no questionnaire was created; try again.

Full guide: /transaction-monitoring/travel-rule#due-diligence-questionnaire.`

\</pre>



      
      

붙여넣을 곳



## OpenAPI

````yaml ko/openapi-25.json POST /v3/travel-rule/vasps/{vasp_id}/questionnaires/
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}/questionnaires/:
    post:
      tags:
        - Travel Rule
      summary: VASP에 실사 설문지 전송
      description: >-
        거래 상대방의 등록된 컴플라이언스 주소로 일회용 답변 링크가 포함된 Didit의 표준 실사 설문지를 이메일로 발송합니다. 거래
        상대방은 30일 이내에 모든 질문에 답변해야 하며, 답변은 365일 동안 유지됩니다. 새로 발송하면 동일한 거래 상대방에게 보냈던
        이전 미답변 설문지가 대체되며 해당 링크는 작동을 중단합니다. 주소당 1분에 한 번씩 발송할 수 있습니다.
      operationId: sendTravelRuleVaspQuestionnaire
      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/TravelRuleCounterpartyQuestionnaireRequest'
            example:
              sent_to: travelrule@counterparty.example
      responses:
        '202':
          description: 설문지가 이메일로 전송되었습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleCounterpartyQuestionnaire'
              example:
                id: 3f9e8d7c-6b5a-4c3d-9e2f-1a0b9c8d7e6f
                status: SENT
                form_version: '1'
                sent_to: travelrule@counterparty.example
                sent_at: '2026-10-14T10:00:00Z'
                expires_at: '2026-11-13T10:00:00Z'
                answered_at: null
                valid_until: null
                current: false
                answers: {}
        '400':
          description: >-
            sent_to가 유효한 이메일 주소가 아니거나 거래 상대방의 등록된 컴플라이언스 주소가 아닙니다. 또는 거래 상대방에게
            등록된 컴플라이언스 주소가 없습니다.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
              examples:
                Not on record:
                  value:
                    sent_to:
                      - >-
                        Send the questionnaire to a compliance address on record
                        for this counterparty.
                No address:
                  value:
                    sent_to:
                      - >-
                        No compliance address is on record for this
                        counterparty. Add a contact for it first.
        '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.
        '429':
          description: 1분 이내에 이 주소로 설문지가 발송되었습니다.
        '503':
          description: 이메일을 전송할 수 없었으며 설문지가 생성되지 않았습니다. 잠시 후 다시 시도해 주세요.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/questionnaires/
            \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"sent_to": "travelrule@counterparty.example"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.send_vasp_questionnaire(
                "11111111-2222-3333-4444-555555555555",
                sent_to="travelrule@counterparty.example",
            )
            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.sendVaspQuestionnaire("11111111-2222-3333-4444-555555555555",
            {
              sent_to: "travelrule@counterparty.example",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.SendVASPQuestionnaire(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleCounterpartyQuestionnaireRequest{\n\tSentTo: didit.String(\"travelrule@counterparty.example\"),\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.TravelRuleCounterpartyQuestionnaireRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().sendVaspQuestionnaire("11111111-2222-3333-4444-555555555555",
            TravelRuleCounterpartyQuestionnaireRequest.builder()
                    .sentTo("travelrule@counterparty.example")
                    .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->sendVaspQuestionnaire('11111111-2222-3333-4444-555555555555',
            [
                'sent_to' => 'travelrule@counterparty.example',
            ]);

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

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

            result = didit.travel_rule.send_vasp_questionnaire(
              "11111111-2222-3333-4444-555555555555",
              sent_to: "travelrule@counterparty.example"
            )
            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.SendVaspQuestionnaireAsync("11111111-2222-3333-4444-555555555555",
            new TravelRuleCounterpartyQuestionnaireRequest

            {
                SentTo = "travelrule@counterparty.example",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleCounterpartyQuestionnaireRequest:
      type: object
      properties:
        sent_to:
          type: string
          format: email
          description: >-
            선택 사항입니다. 거래 상대방에 대해 기록된 컴플라이언스 주소입니다. 디렉터리 항목의 경우 컴플라이언스 주소 또는
            애플리케이션에 표시되는 연락처이며, Didit 네트워크 멤버의 경우 확인된 컴플라이언스 이메일입니다. 기본값: 거래
            상대방에게 전송되는 Travel Rule 이메일의 수신 주소(자체 연락처 우선, 그다음 플랫폼 연락처, 마지막으로 항목의
            컴플라이언스 주소).
    TravelRuleCounterpartyQuestionnaire:
      type: object
      description: >-
        애플리케이션이 거래 상대방에게 전송한 실사 설문지 1개입니다. 기록된 컴플라이언스 주소로 일회용 응답 링크와 함께 이메일로
        전송되는 Didit 표준 설문지이며, 애플리케이션에만 비공개로 유지됩니다.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - SENT
            - ANSWERED
            - EXPIRED
          description: >-
            SENT: 답변 대기 중입니다. ANSWERED: 거래 상대방이 모든 질문에 답변했습니다. EXPIRED: 답변 링크가
            답변되지 않은 상태로 닫혔거나(기한 초과 또는 최신 설문지로 대체됨) 답변이 valid_until을 지났습니다.
        form_version:
          type: string
          description: 답변이 속한 Didit 표준 설문지의 버전입니다. 현재는 1입니다.
        sent_to:
          type: string
          format: email
        sent_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: 전송 후 30일인 답변 마감일입니다. 마감일 이후에는 링크가 작동하지 않습니다.
        answered_at:
          type: string
          format: date-time
          nullable: true
        valid_until:
          type: string
          format: date-time
          nullable: true
          description: 답변이 최신 상태로 유지되는 기간입니다. 답변 후 365일입니다. 답변하기 전까지는 null입니다.
        current:
          type: boolean
          description: 설문지가 ANSWERED 상태이고 valid_until이 지나지 않은 동안 true입니다.
        answers:
          type: object
          additionalProperties:
            type: string
          description: >-
            질문 ID별 답변입니다: legal_name, licensing, jurisdictions, aml_program,
            compliance_officer, sanctions_screening, transaction_monitoring,
            travel_rule, custody, ownership, record_keeping, data_protection. 각
            답변은 최대 2,000자입니다. 답변하기 전까지는 비어 있습니다.
  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.