> ## 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 de contexte du widget de propriété de portefeuille

> Lisez le contexte public d'une session de widget de propriété de portefeuille par token : méthodes de preuve, progression et état. Didit.

Prompt de l'API Get Widget Context
Copier le prompt dans le presse-papiers

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

Coller dans


## OpenAPI

````yaml fr/openapi-25.json GET /v3/travel-rule/widget/{token}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/widget/{token}/:
    get:
      tags:
        - Travel Rule
      summary: Obtenir le contexte du widget de propriété du portefeuille
      description: >-
        Endpoint public de lecture indexé par le token de session du widget -
        aucune clé API requise. Renvoie le contexte du widget ainsi que le
        statut de chaque preuve, afin que vous puissiez l'interroger pour
        détecter son achèvement ; completed_at devient non nul dès qu'une preuve
        est vérifiée. Une preuve SATOSHI_TEST peut rester au statut PENDING tant
        que son dépôt est détecté on-chain mais non confirmé - une tâche de fond
        la revérifie automatiquement et la valide dès que le dépôt est confirmé,
        aucune action du client n'est donc requise pendant cette attente. Chaque
        preuve inclut les champs nécessaires à sa méthode : deposit_address,
        expected_amount et son propre expires_at pour SATOSHI_TEST ; challenge
        pour MESSAGE_SIGNING. Privilégiez le webhook travel_rule.status.updated
        au lieu de requêtes répétées lorsque la session est liée à un transfert.
      operationId: getTravelRuleWidgetContext
      parameters:
        - name: token
          in: path
          required: true
          description: >-
            Token de session opaque renvoyé lors de la création de la session du
            widget.
          schema:
            type: string
      responses:
        '200':
          description: Le contexte du widget et les statuts des preuves.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetContext'
        '404':
          description: Token inconnu.
        '410':
          description: La session a expiré sans être menée à son terme.
      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: >-
            Raison sociale issue de votre profil VASP, affichée au client dans
            le widget. Vide lorsqu'aucun profil n'existe.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            La blockchain avec laquelle la session a été créée, telle que vous
            l'avez envoyée.
        chain_family:
          type: string
          nullable: true
          enum:
            - EVM
            - BTC
            - SOL
            - TRON
            - null
          description: >-
            La famille de clés associée à la blockchain : EVM (Ethereum, BNB
            Chain, Polygon, Arbitrum, Base, Optimism, Avalanche, Linea et les
            autres blockchains EVM), BTC, SOL ou TRON. Une clé EVM contrôle la
            même adresse sur chaque blockchain EVM. Nul lorsqu'aucune signature
            ne peut être vérifiée sur la blockchain.
        holder_name:
          type: string
        allowed_methods:
          type: array
          items:
            type: string
            enum:
              - MESSAGE_SIGNING
              - SCREENSHOT
              - SATOSHI_TEST
              - SELF_DECLARATION
          description: >-
            Méthodes de preuve disponibles pour cette session. MESSAGE_SIGNING
            nécessite une chaîne avec un chain_family, SATOSHI_TEST nécessite un
            satoshi_deposit_address sur la session et une chaîne dont Didit peut
            relire les dépôts, SCREENSHOT nécessite le paramètre
            allow_screenshot_proof, et SELF_DECLARATION nécessite le paramètre
            allow_self_declaration.
        transfer_status:
          type: string
          nullable: true
          description: >-
            Statut du transfert Travel Rule associé. Null lorsque la session a
            été créée sans transaction_id.
        callback_url:
          type: string
          description: >-
            Endroit où le widget redirige le client une fois terminé. Vide si
            non défini.
        expires_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Non nul une fois qu'une preuve a été vérifiée.
        proofs:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleWidgetProofSummary'
        max_attempts:
          type: integer
          description: Preuves de portefeuille rejetées autorisées par cette session.
        attempts_used:
          type: integer
          description: Preuves rejetées jusqu'à présent.
        attempts_remaining:
          type: integer
          description: >-
            Lorsque la valeur est 0, lancer une autre preuve renvoie 409 et vous
            générez une nouvelle session de widget.
        customization:
          type: object
          nullable: true
          description: >-
            La personnalisation en marque blanche de l'application (couleurs,
            logo, famille de polices) lorsque la marque blanche est activée - le
            widget s'affiche avec la même identité visuelle que le workflow de
            vérification. Null dans le cas contraire.
    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 : l'utilisateur final a choisi cette méthode et la preuve
            n'est pas encore tranchée. Une signature échouée ou un dépôt test
            non lisible ou non encore confirmé maintient la preuve PENDING avec
            un failure_reason, afin que l'utilisateur final puisse réessayer ;
            un dépôt SATOSHI_TEST soumis est revérifié automatiquement jusqu'à
            la clôture de sa fenêtre, et une SCREENSHOT soumise attend votre
            examen. VERIFIED : la propriété est prouvée. REJECTED : le dépôt
            test est véritablement incorrect (autre expéditeur, montant vers
            l'adresse de dépôt différent de celui attendu, antérieur au défi, ou
            transaction ayant déjà prouvé un autre portefeuille) ou votre
            réviseur a refusé la capture d'écran ; failure_reason indique la
            cause. Une preuve rejetée est définitive et consomme l'une des
            tentatives de la session. EXPIRED : la preuve ne peut plus être
            tranchée (sa fenêtre s'est fermée, l'utilisateur final a changé de
            méthode, la session du widget a expiré ou le titulaire du
            portefeuille a changé) ; failure_reason indique la cause.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            Identifiant canonique de la blockchain de l'entrée du carnet
            d'adresses à laquelle la preuve se rapporte, par ex. ETH, BTC, SOL,
            TRX.
        deposit_address:
          type: string
          nullable: true
          description: >-
            Adresse de dépôt à laquelle le client doit envoyer le montant du
            test Satoshi. Présent uniquement sur une preuve SATOSHI_TEST.
        expected_amount:
          type: string
          nullable: true
          description: >-
            Montant on-chain exact, dans la devise native du dépôt, auquel le
            dépôt de test Satoshi doit correspondre. Présent uniquement sur une
            preuve SATOSHI_TEST.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Date limite pour la fenêtre du test Satoshi propre à cette preuve.
            Présent uniquement sur une preuve SATOSHI_TEST ; l'expires_at propre
            à la session de widget est prolongé pour la couvrir lorsque
            SATOSHI_TEST est proposé.
        challenge:
          type: string
          nullable: true
          description: >-
            Message émis par Didit que le client signe avec son portefeuille.
            Présent uniquement sur une preuve MESSAGE_SIGNING.
        rejection_reason:
          type: string
          description: >-
            Raison pour laquelle la preuve a été refusée, sous forme de phrase
            en anglais pour l'utilisateur final. Présente uniquement lorsque
            `status` est REJECTED ; vide lorsque votre réviseur a refusé une
            capture d'écran (votre note reste chez vous).
        created_at:
          type: string
          format: date-time
        attempts:
          type: integer
          description: >-
            Nombre de fois où des éléments probants ont été soumis pour ce
            justificatif (signatures, identifiants de transaction,
            téléversements).
        failure_reason:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: >-
            Raison pour laquelle la dernière tentative a échoué, ou raison pour
            laquelle la preuve a été clôturée. Vide lorsque rien n'a échoué.
    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: "Raison pour laquelle une preuve de propriété du portefeuille, ou sa dernière tentative, n'a pas atteint le statut VERIFIED. Vide lorsque rien n'a échoué. Une preuve PENDING peut en comporter une\_: la dernière tentative a échoué et l'utilisateur final peut réessayer. DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED et REVIEW_REJECTED clôturent la preuve comme REJECTED. SIGNATURE_INVALID\_: la signature ne correspond pas au portefeuille et au défi. SIGNATURE_UNSUPPORTED_SCHEME\_: le portefeuille a signé dans un format que Didit ne vérifie pas. DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED, DEPOSIT_LOOKUP_FAILED\_: le dépôt test n'est pas lisible ou pas encore confirmé\_; Didit continue de vérifier jusqu'à la fermeture de la fenêtre de test. DEPOSIT_MISMATCH\_: la transaction n'envoie pas le montant attendu depuis le portefeuille vers l'adresse de dépôt. DEPOSIT_STALE\_: la transaction est antérieure au défi. TXID_REUSED\_: la transaction a déjà servi à prouver un autre portefeuille. CHAIN_UNSUPPORTED\_: la méthode n'est pas disponible sur cette blockchain. WINDOW_EXPIRED\_: la fenêtre de test a expiré. OWNERSHIP_CHANGED\_: le détenteur du portefeuille a changé, ou le portefeuille a été supprimé de votre carnet d'adresses après la création de la session de widget. METHOD_SWITCHED\_: l'utilisateur final a choisi une autre méthode avant de terminer celle-ci. REVIEW_REJECTED\_: votre réviseur a rejeté la capture d'écran. ABANDONED\_: la session de widget a expiré avant que l'utilisateur final n'ait terminé."

````

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