> ## 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 ईमेल चैनल

> Didit के साथ एक बार उपयोग होने वाले ईमेल पिकअप लिंक से Travel Rule लेन-देन स्वीकार या अस्वीकार करें, और प्रेषक के नाम मिलान हेतु लाभार्थी का नाम दें।



ईमेल पिकअप API प्रॉम्प्ट का जवाब दें
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Accept or decline a pending Travel Rule exchange from a one-time email pickup link - the counterparty-facing side of Didit's EMAIL fallback rail.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/pickup/{token}/respond/

Authentication:
None - the one-time link token is the credential.

Request body (application/json):
\{"decision": "accept", "beneficiary_name": "Carlos Ruiz"}
or
\{"decision": "decline", "decline_reason": "not_our_customer"}

Optional fields:
\- ivms_response - your full IVMS 101 response (up to 16384 characters); its beneficiary name wins over beneficiary_name.
\- beneficiary_name - up to 255 characters.
\- decline_reason - data_mismatch | not_our_customer | wallet_not_hosted | sanctions | risk_appetite | jurisdiction | insufficient_data | other, or empty (the default) for no reason.
\- decline_detail - up to 512 characters; required when decision is decline and decline_reason is other.
\- contact - the contact the link was sent to, as a UUID; when the body leaves it out, the contact query parameter (the link's ?contact= value) is used.

Behavior:
\- accept - the beneficiary name is run through the originator's name rule: the transfer moves to COMPLETED on a match, COUNTERPARTY_MISMATCHED_DATA otherwise. Supply the name exactly as your records hold it. The response is {"status": "..."}.
\- decline - the transfer moves to COUNTERPARTY_VASP_GENERAL_DECLINE, and the sender's timeline records the reason. The response is {"status": "COUNTERPARTY_VASP_GENERAL_DECLINE", "decline_reason": "..."}.
\- You can answer once: afterwards both pickup endpoints return 410.

Failure modes:
\- 404 - unknown token.
\- 410 - the window closed: the counterparty already answered, the transfer left AWAITING_COUNTERPARTY, or the pickup deadline passed.
\- 400 - decision is missing or is not accept or decline, decline_detail is missing for a decline with reason other, ivms_response is not an IVMS 101 object or is too long, or a contact in the body is not a UUID ({"contact": ["Must be a valid UUID."]}).

Counterparty integration guide: /transaction-monitoring/travel-rule-interoperability#email-pickup.`

\</pre>



      
      

यहाँ पेस्ट करें



## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/pickup/{token}/respond/
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/pickup/{token}/respond/:
    post:
      tags:
        - Travel Rule
      summary: ईमेल-रेल पिकअप का उत्तर दें
      description: >-
        सार्वजनिक, अनअथेंटिकेटेड। ईमेल किए गए पिकअप लिंक से एक्सचेंज को स्वीकार
        या अस्वीकार करता है। स्वीकार करने पर, beneficiary_name की जांच प्रेषक की
        name_matching_strictness नीति के विरुद्ध की जाती है।
      operationId: respondTravelRulePickup
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
        - name: contact
          in: query
          required: false
          schema:
            type: string
          description: >-
            लिंक का `?contact=` मान। तब उपयोग किया जाता है जब बॉडी में कोई
            `contact` नहीं भेजा जाता।
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRulePickupRespondRequest'
            example:
              decision: accept
              beneficiary_name: Carlos Ruiz
      responses:
        '200':
          description: >-
            परिणामी एक्सचेंज स्थिति: स्वीकार करने के बाद COMPLETED या
            COUNTERPARTY_MISMATCHED_DATA, अस्वीकार करने के बाद
            COUNTERPARTY_VASP_GENERAL_DECLINE, जो `decline_reason` को भी दर्शाता
            है।
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  decline_reason:
                    type: string
                    description: अस्वीकृति के बाद मौजूद होता है।
              examples:
                accepted:
                  value:
                    status: COMPLETED
                declined:
                  value:
                    status: COUNTERPARTY_VASP_GENERAL_DECLINE
                    decline_reason: not_our_customer
        '400':
          description: >-
            एक फ़ील्ड अमान्य है: उदाहरण के लिए `decision` अनुपलब्ध है या
            `accept` या `decline` नहीं है, `decline_reason: other` के साथ
            अस्वीकृति पर `decline_detail` अनुपलब्ध है, एक `ivms_response` जो
            IVMS 101 ऑब्जेक्ट नहीं है या 16384 वर्णों से अधिक लंबा है, या मुख्य
            भाग में एक `contact` जो UUID नहीं है (`{"contact": ["Must be a valid
            UUID."]}`)।
          content:
            application/json:
              example:
                decline_detail:
                  - Say what the reason is when you choose another reason.
        '404':
          description: अज्ञात token।
        '410':
          description: >-
            विंडो बंद हो गई है: प्रतिपक्ष ने पहले ही उत्तर दे दिया है, ट्रांसफर
            AWAITING_COUNTERPARTY से बाहर निकल गया है, या समय-सीमा समाप्त हो गई
            है।
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/pickup/{token}/respond/
            \
              -H 'Content-Type: application/json' \
              -d '{"decision": "accept", "beneficiary_name": "Carlos Ruiz"}'
components:
  schemas:
    TravelRulePickupRespondRequest:
      type: object
      required:
        - decision
      properties:
        decision:
          type: string
          enum:
            - accept
            - decline
        beneficiary_name:
          type: string
          description: >-
            लाभार्थी का नाम जैसा कि आपके रिकॉर्ड में है, जिसे भेजने वाले VASP के
            नाम नियम के अनुसार संसाधित किया गया है। जब यह लाभार्थी का नाम देता
            है तो `ivms_response` को प्राथमिकता मिलती है।
          maxLength: 255
        decline_reason:
          type: string
          enum:
            - ''
            - data_mismatch
            - not_our_customer
            - wallet_not_hosted
            - sanctions
            - risk_appetite
            - jurisdiction
            - insufficient_data
            - other
          description: >-
            आप क्यों अस्वीकार करते हैं। भेजने वाले VASP की ट्रांसफ़र टाइमलाइन पर
            रिकॉर्ड किया जाता है। जब आप कोई कारण नहीं देते हैं तो रिक्त
            (डिफ़ॉल्ट)।
        decline_detail:
          type: string
          maxLength: 512
          description: >-
            फ़्री टेक्स्ट; आवश्यक जब `decision` `decline` हो और `decline_reason`
            `other` हो।
        ivms_response:
          type: object
          description: >-
            आपका पूर्ण IVMS 101 रिस्पॉन्स। इसका लाभार्थी नाम `beneficiary_name`
            पर प्राथमिकता लेता है।
        contact:
          type: string
          format: uuid
          description: >-
            वह संपर्क जिसे लिंक भेजा गया था, लिंक के `?contact=` मान से। जब बॉडी
            में इसे छोड़ दिया जाता है, तो `contact` क्वेरी पैरामीटर का उपयोग
            किया जाता है।

````

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