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

# Wallet-Besitznachweis-Widget-Kontext abrufen (API)

> Öffentlichen Kontext einer Wallet-Besitznachweis-Widget-Sitzung per Token abrufen: erlaubte Nachweismethoden, Fortschritt, Abschlussstatus (Didit).

Prompt für die Get Widget Context API
Prompt in die Zwischenablage kopieren

<pre>
  \`Read the public context of a wallet-ownership widget session - the same endpoint the hosted widget page itself is driven by. Poll it to track proof progress from your backend.

  Endpoint:
  GET [https://verification.didit.me/v3/travel-rule/widget/\{token}/](https://verification.didit.me/v3/travel-rule/widget/\{token}/)

  Authentication:
  None - the widget token in the URL path is the credential. Treat the token as a secret.

  What to read from the response:

  * completed\_at - non-null once a proof has been verified. This is the completion signal.
  * allowed\_methods - which proof methods this session offers (MESSAGE\_SIGNING, SATOSHI\_TEST, SCREENSHOT, SELF\_DECLARATION).
    MESSAGE\_SIGNING works with wallets installed in the customer's browser, discovered in the page (EIP-6963 / Wallet Standard).
    Pairing a mobile wallet app (for example by scanning a QR code) is not available in production today.
  * transfer\_status - the linked Travel Rule transfer's status, when the session was minted with a transaction\_id.
  * proofs\[] - per-proof progress. A SATOSHI\_TEST proof carries deposit\_address, expected\_amount, and its own expires\_at; a MESSAGE\_SIGNING proof carries the challenge string. A SATOSHI\_TEST proof can sit at status PENDING while its deposit is seen on-chain but unconfirmed - a background job completes it automatically once it confirms. Each proof also carries attempts and failure\_reason (why the last attempt fell short, or why the proof closed; empty when nothing failed). A REJECTED proof carries rejection\_reason, an English sentence for the end user.
  * max\_attempts, attempts\_used, attempts\_remaining - how many rejected proofs this session allows, has had and has left. When attempts\_remaining is 0, starting another proof answers 409: mint a new session.
  * chain\_family - EVM, BTC, SOL or TRON: the key family behind chain, so a client picks the right wallet. One EVM key holds the same address on every EVM chain.
  * wallet\_address, chain (as minted, for example "ETH"), holder\_name, vasp\_name, callback\_url, expires\_at.

  Failure modes:

  * 404 - unknown token.
  * 410 - the session expired without completing.

  Prefer travel\_rule.status.updated webhooks over polling when the session is linked to a transfer.

  Full guide: /transaction-monitoring/wallet-ownership-widget#detect-completion.\`
</pre>

Einfügen in


## OpenAPI

````yaml de/openapi-25.json GET /v3/travel-rule/widget/{token}/
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/widget/{token}/:
    get:
      tags:
        - Travel Rule
      summary: Kontext des Wallet-Eigentums-Widgets abrufen
      description: >-
        Öffentlicher Lese-Endpoint, über das Widget-Sitzungs-Token adressiert –
        kein API-Schlüssel erforderlich. Gibt den Widget-Kontext sowie den
        Status jedes Proofs zurück, sodass Sie ihn per Polling abfragen können,
        um den Abschluss zu erkennen; completed_at wird ungleich null, sobald
        ein Proof verifiziert ist. Ein SATOSHI_TEST-Proof kann den Status
        PENDING haben, während die Einzahlung On-Chain erkannt, aber noch
        unbestätigt ist – ein Hintergrundjob prüft ihn automatisch erneut und
        schließt ihn ab, sobald die Einzahlung bestätigt wird; während des
        Wartens ist daher keine clientseitige Aktion erforderlich. Jeder Proof
        enthält die Felder, die seine Methode benötigt: deposit_address,
        expected_amount und ein eigenes expires_at für SATOSHI_TEST; challenge
        für MESSAGE_SIGNING. Bevorzugen Sie den Webhook
        travel_rule.status.updated gegenüber Polling, wenn die Sitzung mit einem
        Transfer verknüpft ist.
      operationId: getTravelRuleWidgetContext
      parameters:
        - name: token
          in: path
          required: true
          description: >-
            Opakes Sitzungs-Token, das zurückgegeben wird, wenn die
            Widget-Sitzung erstellt wurde.
          schema:
            type: string
      responses:
        '200':
          description: Der Widget-Kontext und die Nachweisstatus.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetContext'
        '404':
          description: Unbekanntes Token.
        '410':
          description: Die Sitzung ist abgelaufen, ohne abgeschlossen zu werden.
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: curl https://verification.didit.me/v3/travel-rule/widget/{token}/
components:
  schemas:
    TravelRuleWidgetContext:
      type: object
      properties:
        vasp_name:
          type: string
          description: >-
            Offizieller Name aus Ihrem VASP-Profil, der dem Kunden im Widget
            angezeigt wird. Leer, wenn kein Profil existiert.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            Die Chain, mit der die Sitzung gemintet wurde, wie von Ihnen
            gesendet.
        chain_family:
          type: string
          nullable: true
          enum:
            - EVM
            - BTC
            - SOL
            - TRON
            - null
          description: >-
            Die Schlüsselfamilie hinter der Chain: EVM (Ethereum, BNB Chain,
            Polygon, Arbitrum, Base, Optimism, Avalanche, Linea und die anderen
            EVM-Chains), BTC, SOL oder TRON. Ein EVM-Schlüssel steuert dieselbe
            Adresse auf jeder EVM-Chain. Null, wenn auf der Chain keine Signatur
            verifiziert werden kann.
        holder_name:
          type: string
        allowed_methods:
          type: array
          items:
            type: string
            enum:
              - MESSAGE_SIGNING
              - SCREENSHOT
              - SATOSHI_TEST
              - SELF_DECLARATION
          description: >-
            Für diese Sitzung verfügbare Nachweismethoden. MESSAGE_SIGNING
            erfordert eine Chain mit einer chain_family, SATOSHI_TEST erfordert
            eine satoshi_deposit_address in der Sitzung und eine Chain, deren
            Einzahlungen Didit zurücklesen kann, SCREENSHOT erfordert die
            Einstellung allow_screenshot_proof und SELF_DECLARATION erfordert
            die Einstellung allow_self_declaration.
        transfer_status:
          type: string
          nullable: true
          description: >-
            Status des verknüpften Travel-Rule-Transfers. Null, wenn die Sitzung
            ohne transaction_id erstellt wurde.
        callback_url:
          type: string
          description: >-
            Wohin das Widget den Kunden nach Abschluss zurückleitet. Leer, wenn
            nicht festgelegt.
        expires_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Nicht null, sobald ein Nachweis verifiziert wurde.
        proofs:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleWidgetProofSummary'
        max_attempts:
          type: integer
          description: Abgelehnte Wallet-Nachweise, die diese Sitzung zulässt.
        attempts_used:
          type: integer
          description: Bislang abgelehnte Nachweise.
        attempts_remaining:
          type: integer
          description: >-
            Wenn 0, antwortet das Starten eines weiteren Nachweises mit 409 und
            Sie erstellen eine neue Widget-Sitzung.
        customization:
          type: object
          nullable: true
          description: >-
            Die White-Label-Anpassung der Anwendung (Farben, Logo,
            Schriftfamilie), wenn White-Label aktiviert ist – das Widget wird
            mit demselben Branding wie der Verifizierungs-Workflow gerendert.
            Andernfalls null.
    TravelRuleWidgetProofSummary:
      type: object
      properties:
        proof_id:
          type: string
          format: uuid
        method:
          type: string
          enum:
            - MESSAGE_SIGNING
            - SATOSHI_TEST
            - SCREENSHOT
            - SELF_DECLARATION
        status:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
          description: >-
            PENDING: Der Endbenutzer hat diese Methode ausgewählt und der
            Nachweis ist noch nicht entschieden. Eine fehlgeschlagene Signatur
            oder eine Testeinzahlung, die noch nicht lesbar oder bestätigt ist,
            hält den Nachweis auf PENDING mit einem failure_reason, sodass der
            Endbenutzer es erneut versuchen kann; eine übermittelte
            SATOSHI_TEST-Einzahlung wird automatisch erneut geprüft, bis ihr
            Zeitfenster schließt, und ein übermittelter SCREENSHOT wartet auf
            Ihre Prüfung. VERIFIED: Die Eigentümerschaft ist nachgewiesen.
            REJECTED: Die Testeinzahlung ist definitiv falsch (anderer Absender,
            nicht der erwartete Betrag an die Einzahlungsadresse, älter als die
            Challenge oder eine Transaktion, die bereits eine andere Wallet
            nachgewiesen hat) oder Ihr Prüfer hat den Screenshot abgelehnt;
            failure_reason gibt den Grund an. Ein abgelehnter Nachweis ist
            endgültig und verbraucht einen der Versuche der Sitzung. EXPIRED:
            Über den Nachweis kann nicht mehr entschieden werden (Zeitfenster
            abgelaufen, Endbenutzer hat die Methode gewechselt, Widget-Sitzung
            abgelaufen oder Inhaber der Wallet hat sich geändert);
            failure_reason gibt den Grund an.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            Kanonischer Chain-Identifikator des Adressbucheintrags, für den der
            Nachweis bestimmt ist, z. B. ETH, BTC, SOL, TRX.
        deposit_address:
          type: string
          nullable: true
          description: >-
            Einzahlungsadresse, an die der Kunde den Satoshi-Testbetrag senden
            muss. Nur bei einem SATOSHI_TEST-Nachweis vorhanden.
        expected_amount:
          type: string
          nullable: true
          description: >-
            Exakter On-Chain-Betrag in der nativen Währung der Einzahlung, mit
            dem die Satoshi-Test-Einzahlung übereinstimmen muss. Nur bei einem
            SATOSHI_TEST-Nachweis vorhanden.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Frist für das eigene Satoshi-Testfenster dieses Nachweises. Nur bei
            einem SATOSHI_TEST-Nachweis vorhanden; das eigene expires_at der
            Widget-Sitzung wird verlängert, um dieses abzudecken, wenn
            SATOSHI_TEST angeboten wird.
        challenge:
          type: string
          nullable: true
          description: >-
            Von Didit ausgestellte Nachricht, die der Kunde mit seiner Wallet
            signiert. Nur bei einem MESSAGE_SIGNING-Nachweis vorhanden.
        rejection_reason:
          type: string
          description: >-
            Warum der Nachweis abgelehnt wurde, als englischer Satz für den
            Endbenutzer. Nur vorhanden, wenn `status` REJECTED ist; leer, wenn
            Ihr Prüfer einen Screenshot abgelehnt hat (Ihre Notiz verbleibt bei
            Ihnen).
        created_at:
          type: string
          format: date-time
        attempts:
          type: integer
          description: >-
            Wie oft Nachweise für diesen Beleg übermittelt wurden (Signaturen,
            Transaktions-IDs, Uploads).
        failure_reason:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: >-
            Warum der letzte Versuch fehlgeschlagen ist oder warum der Nachweis
            geschlossen wurde. Leer, wenn nichts fehlgeschlagen ist.
    TravelRuleWalletProofFailureReason:
      type: string
      enum:
        - ''
        - SIGNATURE_INVALID
        - SIGNATURE_UNSUPPORTED_SCHEME
        - DEPOSIT_NOT_FOUND
        - DEPOSIT_UNCONFIRMED
        - DEPOSIT_LOOKUP_FAILED
        - DEPOSIT_MISMATCH
        - DEPOSIT_STALE
        - TXID_REUSED
        - CHAIN_UNSUPPORTED
        - WINDOW_EXPIRED
        - OWNERSHIP_CHANGED
        - METHOD_SWITCHED
        - REVIEW_REJECTED
        - ABANDONED
      description: >-
        Warum ein Wallet-Eigentumsnachweis oder dessen letzter Versuch VERIFIED
        verfehlt hat. Leer, wenn kein Fehler aufgetreten ist. Ein
        PENDING-Nachweis kann einen Grund enthalten: Der letzte Versuch ist
        fehlgeschlagen und der Endbenutzer kann es erneut versuchen.
        DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED und REVIEW_REJECTED
        schließen den Nachweis als REJECTED ab. SIGNATURE_INVALID: Die Signatur
        stimmt nicht mit der Wallet und der Challenge überein.
        SIGNATURE_UNSUPPORTED_SCHEME: Die Wallet hat in einem Format signiert,
        das Didit nicht verifiziert. DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED,
        DEPOSIT_LOOKUP_FAILED: Die Testeinzahlung ist noch nicht lesbar oder
        noch nicht bestätigt; Didit prüft dies weiter, bis das Testfenster
        schließt. DEPOSIT_MISMATCH: Die Transaktion sendet nicht den erwarteten
        Betrag von der Wallet an die Einzahlungsadresse. DEPOSIT_STALE: Die
        Transaktion liegt zeitlich vor der Challenge. TXID_REUSED: Die
        Transaktion hat bereits eine andere Wallet nachgewiesen.
        CHAIN_UNSUPPORTED: Die Methode ist auf dieser Chain nicht verfügbar.
        WINDOW_EXPIRED: Das Testfenster ist abgelaufen. OWNERSHIP_CHANGED: Der
        Inhaber der Wallet hat sich geändert oder die Wallet wurde nach dem
        Erstellen der Widget-Sitzung aus Ihrem Adressbuch gelöscht.
        METHOD_SWITCHED: Der Endbenutzer hat eine andere Methode gewählt, bevor
        diese abgeschlossen war. REVIEW_REJECTED: Ihr Prüfer hat den Screenshot
        abgelehnt. ABANDONED: Die Widget-Sitzung ist abgelaufen, bevor der
        Endbenutzer fertig war.

````

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