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

# Obter contexto do widget de propriedade de carteira API

> Consulte o contexto público de uma sessão do widget de carteira da Didit pelo token: métodos de prova, progresso e estado de conclusão.

Prompt da API Get Widget Context
Copiar o prompt para a área de transferência

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

Colar em


## OpenAPI

````yaml pt/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 Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/widget/{token}/:
    get:
      tags:
        - Travel Rule
      summary: Obter contexto do widget de propriedade da carteira
      description: >-
        Endpoint de leitura público associado ao token de sessão do widget - sem
        necessidade de chave de API. Devolve o contexto do widget e o estado de
        cada prova, para que possa consultá-lo periodicamente para detetar a
        conclusão; completed_at deixa de ser nulo assim que uma prova é
        verificada. Uma prova SATOSHI_TEST pode permanecer no estado PENDING
        enquanto o seu depósito for visto on-chain mas não confirmado - uma
        tarefa em segundo plano verifica-a automaticamente de novo e conclui-a
        assim que o depósito confirmar, pelo que nenhuma ação do cliente é
        necessária enquanto aguarda. Cada prova inclui os campos de que o seu
        método precisa: deposit_address, expected_amount e o seu próprio
        expires_at para SATOSHI_TEST; challenge para MESSAGE_SIGNING. Prefira o
        webhook travel_rule.status.updated à consulta periódica (polling) quando
        a sessão estiver associada a uma transferência.
      operationId: getTravelRuleWidgetContext
      parameters:
        - name: token
          in: path
          required: true
          description: >-
            Token de sessão opaco devolvido quando a sessão do widget foi
            gerada.
          schema:
            type: string
      responses:
        '200':
          description: O contexto do widget e os estados dos comprovativos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetContext'
        '404':
          description: Token desconhecido.
        '410':
          description: A sessão expirou sem ser concluída.
      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: >-
            Nome legal do seu perfil de VASP, apresentado ao cliente no widget.
            Vazio quando não existe nenhum perfil.
        wallet_address:
          type: string
        chain:
          type: string
          description: A blockchain com a qual a sessão foi criada, tal como a enviou.
        chain_family:
          type: string
          nullable: true
          enum:
            - EVM
            - BTC
            - SOL
            - TRON
            - null
          description: >-
            A família de chaves associada à blockchain: EVM (Ethereum, BNB
            Chain, Polygon, Arbitrum, Base, Optimism, Avalanche, Linea e as
            restantes blockchains EVM), BTC, SOL ou TRON. Uma chave EVM controla
            o mesmo endereço em todas as blockchains EVM. Nulo quando nenhuma
            assinatura pode ser verificada na blockchain.
        holder_name:
          type: string
        allowed_methods:
          type: array
          items:
            type: string
            enum:
              - MESSAGE_SIGNING
              - SCREENSHOT
              - SATOSHI_TEST
              - SELF_DECLARATION
          description: >-
            Métodos de prova disponíveis para esta sessão. MESSAGE_SIGNING
            requer uma blockchain com uma chain_family, SATOSHI_TEST requer um
            satoshi_deposit_address na sessão e uma blockchain cujos depósitos a
            Didit consiga ler, SCREENSHOT requer a definição
            allow_screenshot_proof e SELF_DECLARATION requer a definição
            allow_self_declaration.
        transfer_status:
          type: string
          nullable: true
          description: >-
            Estado da transferência Travel Rule associada. Nulo quando a sessão
            foi criada sem um transaction_id.
        callback_url:
          type: string
          description: >-
            Para onde o widget devolve o cliente após a conclusão. Vazio quando
            não definido.
        expires_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Não nulo após uma prova ter sido verificada.
        proofs:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleWidgetProofSummary'
        max_attempts:
          type: integer
          description: Comprovativos de carteira rejeitados permitidos por esta sessão.
        attempts_used:
          type: integer
          description: Comprovativos rejeitados até ao momento.
        attempts_remaining:
          type: integer
          description: >-
            Quando for 0, iniciar outra prova devolve 409 e é gerada uma nova
            sessão de widget.
        customization:
          type: object
          nullable: true
          description: >-
            A personalização de marca branca da aplicação (cores, logótipo,
            família de tipos de letra) quando a marca branca está ativada - o
            widget é apresentado com a mesma imagem de marca do fluxo de
            verificação. Nulo caso contrário.
    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: o utilizador final escolheu este método e a prova ainda não
            foi decidida. Uma assinatura com falha ou um depósito de teste que
            ainda não seja legível ou confirmado mantém a prova PENDING com um
            failure_reason, para que o utilizador final possa tentar novamente;
            um depósito SATOSHI_TEST submetido é verificado novamente de forma
            automática até que a respetiva janela termine, e uma SCREENSHOT
            submetida aguarda a sua revisão. VERIFIED: a propriedade está
            comprovada. REJECTED: o depósito de teste está comprovadamente
            incorreto (outro ordenante, valor diferente do esperado para o
            endereço de depósito, mais antigo do que o desafio ou uma transação
            que já provou outra carteira) ou o seu revisor rejeitou a captura de
            ecrã; failure_reason indica o motivo. Uma prova rejeitada é
            definitiva e consome uma das tentativas da sessão. EXPIRED: a prova
            já não pode ser decidida (a janela fechou, o utilizador final mudou
            de método, a sessão do widget expirou ou o titular da carteira
            mudou); failure_reason indica o motivo.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            Identificador canónico da blockchain da entrada do livro de
            endereços a que a prova se refere, por exemplo, ETH, BTC, SOL, TRX.
        deposit_address:
          type: string
          nullable: true
          description: >-
            Endereço de depósito para o qual o cliente deve enviar o montante do
            teste Satoshi. Presente apenas num comprovativo SATOSHI_TEST.
        expected_amount:
          type: string
          nullable: true
          description: >-
            Montante exato on-chain, na moeda nativa do depósito, com o qual o
            depósito de teste Satoshi deve corresponder. Presente apenas num
            comprovativo SATOSHI_TEST.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Prazo para a janela do teste de Satoshi deste comprovativo. Presente
            apenas num comprovativo SATOSHI_TEST; o expires_at da própria sessão
            do widget é prolongado para cobri-lo quando SATOSHI_TEST é
            disponibilizado.
        challenge:
          type: string
          nullable: true
          description: >-
            Mensagem emitida pela Didit que o cliente assina com a sua carteira.
            Presente apenas num comprovativo MESSAGE_SIGNING.
        rejection_reason:
          type: string
          description: >-
            O motivo pelo qual a prova foi recusada, como uma frase em inglês
            para o utilizador final. Presente apenas quando `status` é REJECTED;
            vazio quando o seu revisor recusou uma captura de ecrã (a sua nota
            permanece consigo).
        created_at:
          type: string
          format: date-time
        attempts:
          type: integer
          description: >-
            Quantas vezes foram submetidas provas para este comprovativo
            (assinaturas, IDs de transação, carregamentos).
        failure_reason:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: >-
            O motivo pelo qual a última tentativa falhou ou a prova foi
            encerrada. Vazio quando nada falhou.
    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: >-
        O motivo pelo qual uma prova de propriedade da carteira, ou a sua última
        tentativa, não alcançou o estado VERIFIED. Vazio quando nada falhou. Uma
        prova PENDING pode conter um motivo: a última tentativa falhou e o
        utilizador final pode tentar novamente. DEPOSIT_MISMATCH, DEPOSIT_STALE,
        TXID_REUSED e REVIEW_REJECTED encerram a prova como REJECTED.
        SIGNATURE_INVALID: a assinatura não corresponde à carteira e ao desafio.
        SIGNATURE_UNSUPPORTED_SCHEME: a carteira assinou num formato que a Didit
        não verifica. DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED,
        DEPOSIT_LOOKUP_FAILED: o depósito de teste não está legível ou ainda não
        foi confirmado; a Didit continua a verificá-lo até que a janela de teste
        termine. DEPOSIT_MISMATCH: a transação não envia o montante esperado da
        carteira para o endereço de depósito. DEPOSIT_STALE: a transação é
        anterior ao desafio. TXID_REUSED: a transação já comprovou outra
        carteira. CHAIN_UNSUPPORTED: o método não está disponível nesta
        blockchain. WINDOW_EXPIRED: a janela de teste terminou.
        OWNERSHIP_CHANGED: o titular da carteira mudou, ou a carteira foi
        eliminada do seu livro de endereços, após a criação da sessão do widget.
        METHOD_SWITCHED: o utilizador final escolheu outro método antes de
        concluir este. REVIEW_REJECTED: o seu revisor rejeitou a captura de
        ecrã. ABANDONED: a sessão do widget expirou antes de o utilizador final
        concluir.

````

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