> ## 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 получения контекста виджета владения кошельком

> Получите по токену публичный контекст сессии виджета владения кошельком в Didit: доступные методы подтверждения, прогресс и статус завершения.

Промпт для API получения контекста виджета
Скопировать промпт в буфер обмена

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

Вставьте в


## OpenAPI

````yaml ru/openapi-25.json GET /v3/travel-rule/widget/{token}/
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/widget/{token}/:
    get:
      tags:
        - Travel Rule
      summary: Получить контекст виджета владения кошельком
      description: >-
        Публичный endpoint на чтение с доступом по токену сессии виджета -
        API-ключ не требуется. Возвращает контекст виджета и статус каждого
        подтверждения, что позволяет опрашивать его для отслеживания завершения;
        completed_at заполняется, как только подтверждение становится
        проверенным. Подтверждение SATOSHI_TEST может оставаться в статусе
        PENDING, пока его депозит виден ончейн, но еще не подтвержден - фоновая
        задача автоматически перепроверяет его и завершает после подтверждения
        депозита, поэтому никаких действий со стороны клиента во время ожидания
        не требуется. Каждое подтверждение содержит поля, необходимые для его
        метода: deposit_address, expected_amount и собственный expires_at для
        SATOSHI_TEST; challenge для MESSAGE_SIGNING. Если сессия связана с
        переводом, рекомендуется использовать webhook travel_rule.status.updated
        вместо опроса.
      operationId: getTravelRuleWidgetContext
      parameters:
        - name: token
          in: path
          required: true
          description: Непрозрачный токен сессии, возвращённый при создании сессии виджета.
          schema:
            type: string
      responses:
        '200':
          description: Контекст виджета и статусы подтверждений.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetContext'
        '404':
          description: Неизвестный token.
        '410':
          description: Срок действия сессии истек до ее завершения.
      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: >-
            Юридическое наименование из вашего профиля VASP, отображаемое
            клиенту в виджете. Пусто, если профиль отсутствует.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            Сеть, с которой была выпущена сессия, в том виде, в котором вы её
            отправили.
        chain_family:
          type: string
          nullable: true
          enum:
            - EVM
            - BTC
            - SOL
            - TRON
            - null
          description: >-
            Семейство ключей, стоящее за сетью: EVM (Ethereum, BNB Chain,
            Polygon, Arbitrum, Base, Optimism, Avalanche, Linea и другие
            EVM-сети), BTC, SOL или TRON. Один EVM-ключ управляет одним и тем же
            адресом во всех EVM-сетях. Null, если подпись невозможно проверить в
            сети.
        holder_name:
          type: string
        allowed_methods:
          type: array
          items:
            type: string
            enum:
              - MESSAGE_SIGNING
              - SCREENSHOT
              - SATOSHI_TEST
              - SELF_DECLARATION
          description: >-
            Методы подтверждения, доступные для этой сессии. Для MESSAGE_SIGNING
            требуется сеть с chain_family, для SATOSHI_TEST требуется
            satoshi_deposit_address в сессии и сеть, депозиты в которой Didit
            может считывать, для SCREENSHOT требуется настройка
            allow_screenshot_proof, а для SELF_DECLARATION требуется настройка
            allow_self_declaration.
        transfer_status:
          type: string
          nullable: true
          description: >-
            Статус связанного перевода Travel Rule. Null, если сессия была
            создана без transaction_id.
        callback_url:
          type: string
          description: >-
            Куда виджет перенаправляет клиента после завершения. Пустое
            значение, если не задано.
        expires_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Имеет значение, отличное от null, после того как подтверждение было
            верифицировано.
        proofs:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleWidgetProofSummary'
        max_attempts:
          type: integer
          description: Отклонённые подтверждения кошелька, допустимые в этой сессии.
        attempts_used:
          type: integer
          description: Отклонённые подтверждения на данный момент.
        attempts_remaining:
          type: integer
          description: >-
            Если 0, начало другой проверки возвращает 409, и вы создаете новую
            сессию виджета.
        customization:
          type: object
          nullable: true
          description: >-
            Кастомизация White label приложения (цвета, логотип, семейство
            шрифтов), если включён White label: виджет отображается с тем же
            брендингом, что и сценарий верификации. В противном случае 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: конечный пользователь выбрал этот метод, и решение по
            подтверждению ещё не принято. Неудачная подпись или тестовый
            депозит, который ещё не удаётся прочитать или подтвердить, сохраняет
            подтверждение в статусе PENDING с указанием failure_reason, чтобы
            конечный пользователь мог повторить попытку; отправленный депозит
            SATOSHI_TEST перепроверяется автоматически до закрытия временного
            окна, а отправленный SCREENSHOT ожидает вашей проверки. VERIFIED:
            владение доказано. REJECTED: тестовый депозит явно некорректен
            (другой отправитель, сумма на адрес депозита отличается от
            ожидаемой, дата раньше челленджа или транзакция, которая уже
            подтвердила другой кошелёк) либо ваш проверяющий отклонил скриншот;
            failure_reason указывает причину. Отклонённое подтверждение
            окончательно и расходует одну из попыток сессии. EXPIRED: решение по
            подтверждению больше не может быть принято (окно закрылось, конечный
            пользователь сменил метод, время сессии виджета истекло или
            изменился владелец кошелька); failure_reason указывает причину.
        wallet_address:
          type: string
        chain:
          type: string
          description: >-
            Канонический идентификатор сети записи адресной книги, для которой
            предоставлено подтверждение, например ETH, BTC, SOL, TRX.
        deposit_address:
          type: string
          nullable: true
          description: >-
            Адрес депозита, на который клиент должен отправить тестовую сумму
            Сатоши. Присутствует только в подтверждении SATOSHI_TEST.
        expected_amount:
          type: string
          nullable: true
          description: >-
            Точная сумма ончейн в нативной валюте депозита, которой должен
            соответствовать тестовый депозит Satoshi. Присутствует только в
            доказательстве SATOSHI_TEST.
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Крайний срок для окна проверки Satoshi test этого подтверждения.
            Присутствует только для подтверждения SATOSHI_TEST; собственный
            expires_at сессии виджета продлевается на этот срок, если
            предлагается SATOSHI_TEST.
        challenge:
          type: string
          nullable: true
          description: >-
            Выпущенное Didit сообщение, которое клиент подписывает своим
            кошельком. Присутствует только в подтверждении MESSAGE_SIGNING.
        rejection_reason:
          type: string
          description: >-
            Причина, по которой подтверждение было отклонено, в виде предложения
            на английском языке для конечного пользователя. Присутствует, только
            если `status` равен REJECTED; пусто, если ваш проверяющий отклонил
            скриншот (ваша заметка остаётся у вас).
        created_at:
          type: string
          format: date-time
        attempts:
          type: integer
          description: >-
            Сколько раз отправлялись доказательства для этого подтверждения
            (подписи, ID транзакций, загрузки).
        failure_reason:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: >-
            Почему последняя попытка не удалась или почему подтверждение было
            закрыто. Пусто, если сбоев не было.
    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: >-
        Причина, по которой подтверждение владения кошельком или его последняя
        попытка не получили статус VERIFIED. Пусто, если сбоев не было. Статус
        PENDING может содержать причину: последняя попытка не удалась, и
        конечный пользователь может попробовать снова. Значения
        DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED и REVIEW_REJECTED переводят
        подтверждение в статус REJECTED. SIGNATURE_INVALID: подпись не
        соответствует кошельку и запросу (вызов). SIGNATURE_UNSUPPORTED_SCHEME:
        кошелёк подписал данные в формате, который Didit не проверяет.
        DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED, DEPOSIT_LOOKUP_FAILED: тестовый
        депозит не удаётся прочитать или он ещё не подтверждён; Didit продолжает
        проверку до закрытия окна тестирования. DEPOSIT_MISMATCH: транзакция не
        отправляет ожидаемую сумму с кошелька на адрес депозита. DEPOSIT_STALE:
        транзакция была совершена до вызова. TXID_REUSED: транзакция уже
        использовалась для подтверждения другого кошелька. CHAIN_UNSUPPORTED:
        метод недоступен в этом блокчейне. WINDOW_EXPIRED: окно тестирования
        истекло. OWNERSHIP_CHANGED: владелец кошелька изменился или кошелёк был
        удалён из адресной книги после создания сессии виджета. METHOD_SWITCHED:
        конечный пользователь выбрал другой метод до завершения текущего.
        REVIEW_REJECTED: проверяющий отклонил скриншот. ABANDONED: время сессии
        виджета истекло до завершения конечным пользователем.

````

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