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

# Gegenpartei-Kontakt per API - Travel Rule E-Mail-Kanal

> Mit Didit eine private Compliance-Adresse für eine Gegenpartei-VASP anlegen. Der Travel-Rule-E-Mail-Kanal schreibt zuerst an Ihre Kontakte.



Prompt für die API zum Hinzufügen eines Kontakts einer Gegenpartei
        Prompt in die Zwischenablage kopieren



      
      

\<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>



      
      

Einfügen in



## OpenAPI

````yaml de/openapi-25.json POST /v3/travel-rule/counterparty-contacts/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/counterparty-contacts/:
    post:
      tags:
        - Travel Rule
      summary: Einen Gegenpartei-Kontakt hinzufügen
      description: >-
        Fügt eine private Compliance-Adresse für einen Directory-Eintrag hinzu.
        Nur Ihre Anwendung sieht und nutzt diese, und der EMAIL-Rail schreibt
        vor jedem Plattformkontakt an sie. Das Hinzufügen einer Adresse, die der
        Eintrag bereits unter Ihren eigenen Kontakten hat, gibt diesen Kontakt
        zurück.
      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: Der Kontakt wurde hinzugefügt.
          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: >-
            Ein Feld fehlt oder ist ungültig, oder kein Verzeichniseintrag hat
            diese 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: Die `id` des Verzeichniseintrags.
        email:
          type: string
          format: email
          maxLength: 254
        name:
          type: string
          description: Optionales Label.
          maxLength: 255
    TravelRuleCounterpartyContact:
      type: object
      description: >-
        Eine Compliance-Adresse, an die der EMAIL-Kanal für einen
        Verzeichniseintrag schreibt.
      properties:
        uuid:
          type: string
          format: uuid
        counterparty:
          type: string
          format: uuid
          description: >-
            Die `id` des Verzeichniseintrags, wie von GET /v3/travel-rule/vasps/
            angezeigt.
        counterparty_name:
          type: string
        email:
          type: string
          format: email
        name:
          type: string
          description: Optionales Label, zum Beispiel der Teamname.
        source:
          type: string
          enum:
            - staff
            - application
            - learned
          description: >-
            staff: Von Didit kuratiert. learned: Eine Adresse unter einer der
            eigenen Domains des VASP, die eine Anfrage über ihren Antwort-Link
            beantwortet hat. application: Von Ihrer Anwendung hinzugefügt.
        scope:
          type: string
          enum:
            - platform
            - application
          description: >-
            platform: von Didit kuratiert oder aus einer verifizierten Antwort
            gelernt, für jeden Didit-Kunden verwendet, für Sie schreibgeschützt.
            application: privat für Ihre Anwendung.
        created_by:
          type: string
          description: >-
            Leer bei Plattformkontakten und Kontakten, die über einen
            API-Schlüssel hinzugefügt wurden.
        verified_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann diese Adresse zuletzt über ihren Antwortlink auf eine Anfrage
            geantwortet hat.
        is_invalid:
          type: boolean
          description: >-
            true, sobald für die Adresse ein Bounce oder eine Beschwerde
            verzeichnet wurde; der EMAIL-Kanal überspringt sie.
        invalid_reason:
          type: string
          enum:
            - ''
            - hard_bounce
            - soft_bounce
            - spam_complaint
            - suppressed
        invalid_detail:
          type: string
          description: >-
            Der Grund des empfangenden Mailservers, sofern er einen angegeben
            hat.
        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: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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