> ## 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 이메일 경로

> 카운터파티 VASP의 비공개 컴플라이언스 주소를 추가하세요. Didit의 Travel Rule 이메일 경로는 플랫폼 연락처보다 고객님의 연락처에 먼저 전송합니다.



거래 상대방 연락처 추가 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Add a private compliance address for a Travel Rule counterparty VASP, so Didit's EMAIL rail writes to it.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/counterparty-contacts/

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

Example call:
curl -X POST "https://verification.didit.me/v3/travel-rule/counterparty-contacts/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"counterparty": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91", "email": "compliance@counterparty.example", "name": "Compliance desk"}'

Body:
\- counterparty (required) - the directory entry id from GET /v3/travel-rule/vasps/.
\- email (required) - the compliance address, up to 254 characters.
\- name (optional) - a label, for example the team name, up to 255 characters.

What happens:
\- 201 with the contact (scope application). Only my application sees and uses it, and a Travel Rule email to that counterparty goes to my own contacts first, then to platform contacts.
\- Adding an address the entry already has among my own contacts returns that contact (201), unchanged.
\- 400 when a field is missing or invalid, for example {"counterparty": ["No directory entry with this id."]} or {"email": ["Enter a valid email address."]}.

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

\</pre>



      
      

붙여넣을 곳



## OpenAPI

````yaml ko/openapi-25.json POST /v3/travel-rule/counterparty-contacts/
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/counterparty-contacts/:
    post:
      tags:
        - Travel Rule
      summary: 거래 상대방 연락처 추가
      description: >-
        하나의 디렉터리 항목에 비공개 컴플라이언스 주소를 추가합니다. 귀하의 애플리케이션만 이를 조회하고 사용할 수 있으며, EMAIL
        레일은 플랫폼 연락처보다 먼저 이 주소로 전송합니다. 해당 항목이 귀하의 연락처에 이미 보유하고 있는 주소를 추가하면 해당
        연락처가 반환됩니다.
      operationId: createTravelRuleCounterpartyContact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleCounterpartyContactCreate'
            example:
              counterparty: 0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91
              email: compliance@counterparty.example
              name: Compliance desk
      responses:
        '201':
          description: 연락처가 추가되었습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleCounterpartyContact'
              example:
                uuid: 6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b
                counterparty: 0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91
                counterparty_name: Example Counterparty VASP
                email: compliance@counterparty.example
                name: Compliance desk
                source: application
                scope: application
                created_by: ''
                verified_at: null
                is_invalid: false
                invalid_reason: ''
                invalid_detail: ''
                invalid_at: null
                created_at: '2026-10-19T09:00:00Z'
        '400':
          description: 필드가 누락되었거나 유효하지 않거나, 이 ID를 가진 디렉터리 항목이 없습니다.
          content:
            application/json:
              example:
                counterparty:
                  - No directory entry with this id.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/counterparty-contacts/
            \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"counterparty": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91", "email": "compliance@counterparty.example", "name": "Compliance desk"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.counterparty_contacts.create(
                counterparty="0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
                email="compliance@counterparty.example",
                name="Compliance desk",
            )
            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.counterpartyContacts.create({
              counterparty: "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
              email: "compliance@counterparty.example",
              name: "Compliance desk",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.CounterpartyContacts.Create(ctx, didit.TravelRuleCounterpartyContactCreate{\n\tCounterparty: \"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\",\n\tEmail:        \"compliance@counterparty.example\",\n\tName:         didit.String(\"Compliance desk\"),\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.TravelRuleCounterpartyContactCreate;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().counterpartyContacts().create(TravelRuleCounterpartyContactCreate.builder()
                    .counterparty("0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91")
                    .email("compliance@counterparty.example")
                    .name("Compliance desk")
                    .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->counterpartyContacts->create([
                'counterparty' => '0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91',
                'email' => 'compliance@counterparty.example',
                'name' => 'Compliance desk',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.travel_rule.counterparty_contacts.create(
              counterparty: "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
              email: "compliance@counterparty.example",
              name: "Compliance desk"
            )
            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.CounterpartyContacts.CreateAsync(new
            TravelRuleCounterpartyContactCreate

            {
                Counterparty = "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
                Email = "compliance@counterparty.example",
                Name = "Compliance desk",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleCounterpartyContactCreate:
      type: object
      required:
        - counterparty
        - email
      properties:
        counterparty:
          type: string
          format: uuid
          description: 디렉터리 항목의 `id`입니다.
        email:
          type: string
          format: email
          maxLength: 254
        name:
          type: string
          description: 선택적 라벨입니다.
          maxLength: 255
    TravelRuleCounterpartyContact:
      type: object
      description: 하나의 디렉터리 항목에 대해 EMAIL 레일이 발송하는 컴플라이언스 주소입니다.
      properties:
        uuid:
          type: string
          format: uuid
        counterparty:
          type: string
          format: uuid
          description: GET /v3/travel-rule/vasps/에 표시되는 디렉터리 항목의 `id`입니다.
        counterparty_name:
          type: string
        email:
          type: string
          format: email
        name:
          type: string
          description: 팀 이름 등과 같은 선택적 라벨입니다.
        source:
          type: string
          enum:
            - staff
            - application
            - learned
          description: >-
            staff: Didit이 관리함. learned: 응답 링크를 통해 요청에 응답한 VASP 자체 도메인 중 하나의 주소.
            application: 귀하의 애플리케이션에서 추가함.
        scope:
          type: string
          enum:
            - platform
            - application
          description: >-
            platform: Didit이 큐레이션하거나 검증된 답변에서 학습하여 모든 Didit 고객에게 사용되며 귀하에게는 읽기
            전용입니다. application: 귀하의 애플리케이션 전용입니다.
        created_by:
          type: string
          description: 플랫폼 연락처 및 API 키로 추가된 연락처의 경우 비어 있습니다.
        verified_at:
          type: string
          format: date-time
          nullable: true
          description: 이 주소가 응답 링크를 통해 요청에 마지막으로 응답한 시점입니다.
        is_invalid:
          type: boolean
          description: >-
            해당 주소로 반송(bounce)되었거나 불만(complaint)이 접수되면 true이며, EMAIL 레일은 이를
            건너뜁니다.
        invalid_reason:
          type: string
          enum:
            - ''
            - hard_bounce
            - soft_bounce
            - spam_complaint
            - suppressed
        invalid_detail:
          type: string
          description: 수신 메일 서버에서 제공한 사유(있는 경우)입니다.
        invalid_at:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
  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.