> ## 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 Management APIで、ウォレット所有権証明の署名、テスト入金の取引ID、またはスクリーンショットを提出します。失敗した試行にはコードが返され、入金内容が誤っている場合は却下されます。



ウィジェット証明エビデンス送信APIのプロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`Submit the evidence for a wallet-ownership proof started from a widget session. The hosted widget makes this call; use it only if I build my own widget UI.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/

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

Body, by method:
\- MESSAGE_SIGNING - JSON {"signature": "..."}: the wallet's signature over the proof's challenge.
\- SATOSHI_TEST - JSON {"txid": "..."}: the test deposit's transaction id.
\- SCREENSHOT - multipart form with a file field.

Behavior:
\- 200 with status VERIFIED, is_ownership_verified and transfer_status once ownership is proven.
\- 200 with status PENDING for a screenshot (it waits for the customer's review) or a deposit not indexed or confirmed yet, with code DEPOSIT_NOT_FOUND or DEPOSIT_UNCONFIRMED (Didit rechecks it until the window closes; no resubmission needed).
\- Every submission counts in attempts.

Failure modes (errors carry a code to translate):
\- 400 - SIGNATURE_INVALID, SIGNATURE_UNSUPPORTED_SCHEME or DEPOSIT_LOOKUP_FAILED. The proof stays PENDING: let the end user try again.
\- 400 - DEPOSIT_MISMATCH, DEPOSIT_STALE or TXID_REUSED with status REJECTED: the deposit is genuinely wrong (another sender, not the expected amount to the deposit address, older than the challenge, or already used to prove another wallet). The proof is closed and uses one of the session's attempts; the body carries max_attempts, attempts_used and attempts_remaining. Pick a method again to start a new proof.
\- 409 - code OWNERSHIP_CHANGED, or a closed proof (REJECTED or EXPIRED; the body carries status, the code it closed with and the attempt counts): start a new proof.
\- 410 - the session expired, or code WINDOW_EXPIRED when the Satoshi test window closed.
\- 404 - unknown token or proof.

Full guide: /transaction-monitoring/wallet-ownership-widget#satoshi-test-verify-contract.`

\</pre>



      
      

貼り付け先



## OpenAPI

````yaml ja/openapi-25.json POST /v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/
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}/proofs/{proof_id}/verify/:
    post:
      tags:
        - Travel Rule
      summary: ウォレット所有の証明エビデンスを送信する
      description: >-
        ウィジェットのセッショントークンで識別する公開エンドポイントで、APIキーは不要です。証明の方式に必要な証拠を送信します。MESSAGE_SIGNINGの場合はsignature、SATOSHI_TESTの場合はtxid(JSON)、SCREENSHOTの場合はファイル(multipart)です。送信はすべて1回の試行としてカウントされます。署名が検証できない場合、または入金が一致しない場合は、コード付きで400を返し、エンドユーザーが再試行できるよう証明はPENDINGのまま残ります。入金が検出されたもののまだ承認されていない場合は、ステータスPENDINGで200を返し、期間が終了するまで自動的に再確認されます。スクリーンショットの場合は、ステータスPENDINGで200を返し、レビューキュー(GET
        /v3/travel-rule/wallet-proofs/)で待機します。EXPIREDまたはREJECTEDの証明が後から検証済みになることはありません。新しい証明を開始してください。チェーンファミリーごとに検証される署名形式は次のとおりです。EVMチェーンはpersonal_sign(EIP-191)署名を16進数エンコードで受け付けます。Bitcoinは、BIP-137のsignmessage署名(P2PKH、P2SH-P2WPKH、P2WPKHアドレス)またはBIP-322のsimple署名(P2WPKH、P2TRアドレス)をbase64エンコードで受け付けます。Solanaはチャレンジに対するEd25519署名をbase58エンコードで受け付けます。TronはsignMessageV2(TIP-191)署名を16進数エンコードで受け付けます。BIP-322のfull署名またはproof-of-funds署名、あるいはマルチシグアドレスは、SIGNATURE_UNSUPPORTED_SCHEMEで失敗します。
      operationId: verifyTravelRuleWidgetProof
      parameters:
        - name: token
          in: path
          required: true
          description: ウィジェットセッションの発行時に返される不透明なセッショントークンです。
          schema:
            type: string
        - name: proof_id
          in: path
          required: true
          description: 証明の開始時に返されたproof_id。
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                signature:
                  type: string
                  description: 'MESSAGE_SIGNING: 証明のチャレンジに対するウォレットの署名。'
                txid:
                  type: string
                  description: SATOSHI_TEST：テスト入金の取引ID。
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: SCREENSHOT：エンドユーザーのウォレットアプリに表示されたウォレットの画像。
      responses:
        '200':
          description: >-
            VERIFIED、またはまだPENDING（レビュー待ちのスクリーンショット、またはまだインデックスされていないか確認されていない入金で、コードはDEPOSIT_NOT_FOUNDまたはDEPOSIT_UNCONFIRMED）。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofVerifyResult'
        '400':
          description: >-
            証拠がありません。または、エンドユーザーが再試行できるよう証明をPENDINGのまま維持する失敗した試行です（コードSIGNATURE_INVALID、SIGNATURE_UNSUPPORTED_SCHEMEまたはDEPOSIT_LOOKUP_FAILED）。または、証明を却下するテスト入金です（コードDEPOSIT_MISMATCH、DEPOSIT_STALEまたはTXID_REUSED、ステータスREJECTED、セッションの試行回数を含む）。attempts_remainingが0より大きい間は、方法を再度選択すると新しい証明が開始されます。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
        '404':
          description: 不明なトークン、またはこのセッションに該当する証明がありません。
        '409':
          description: >-
            コードOWNERSHIP_CHANGED（証明はこのコードでクローズされます）。または、クローズ済みの証明（REJECTEDまたはEXPIRED）。ステータス、クローズ時のコード、セッションの試行回数が含まれます。新しい証明を開始するには、方法を選び直してください。または、開始時に検証済みとなるSELF_DECLARATIONの証明。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
        '410':
          description: セッションが期限切れになったか、サトシテストの期間が終了した場合はコードWINDOW_EXPIRED。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/
            \
              -H 'Content-Type: application/json' \
              -d '{"signature": "0x..."}'
components:
  schemas:
    TravelRuleWidgetProofVerifyResult:
      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
        is_ownership_verified:
          type: boolean
          description: 証明がVERIFIEDの場合に含まれます。アドレス帳のエントリは所有権が検証済みになります。
        transfer_status:
          type: string
          nullable: true
          description: 証明がVERIFIEDの場合に含まれます。紐づいた送金のステータスで、送金がない場合はnullです。
        detail:
          type: string
          description: 証明がPENDINGのままの間に含まれます。レビュー待ちの送信済みスクリーンショット、またはまだ確認されていないテスト入金です。
        code:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: 保留中のテスト入金に含まれます。まだ確認されていない理由を示します。
    TravelRuleWidgetProofError:
      type: object
      properties:
        detail:
          type: string
          description: 人が読める英語のメッセージ。
        code:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: 機械可読な理由です。クライアントはこれを使って独自に翻訳したメッセージを表示できます。
        status:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
          description: >-
            証明がクローズされた場合に含まれます。送信した入金によってREJECTEDになった場合（400）、またはすでにクローズされた証明に証拠を送信した場合のREJECTEDまたはEXPIRED（409）です。
        proof_id:
          type: string
          format: uuid
          description: statusとともに含まれます。クローズされた証明です。
        method:
          type: string
          enum:
            - MESSAGE_SIGNING
            - SATOSHI_TEST
            - SCREENSHOT
            - SELF_DECLARATION
          description: statusとともに含まれます。クローズされた証明の方法です。
        max_attempts:
          type: integer
          description: statusとともに含まれます。このセッションで許容されるウォレット証明の却下回数です。
        attempts_used:
          type: integer
          description: statusとともに含まれます。これまでに却下された証明の数です。
        attempts_remaining:
          type: integer
          description: statusとともに含まれます。0の場合、新たな証明を開始すると409が返されるため、新しいウィジェットセッションを発行してください。
    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.