> ## 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. تكتب قناة Travel Rule البريدية إلى جهات اتصالك الخاصة قبل أي جهة اتصال للمنصة Didit.



موجّه 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 ar/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: حقل مفقود أو غير صالح، أو لا يوجد إدخال دليل بهذا المعرّف.
          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: حقل `id` الخاص بإدخال الدليل، كما يعرضه GET /v3/travel-rule/vasps/.
        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: 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: >-
        مفتاح 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.