> ## 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 の非同期エクスポートを再試行したり、失敗した認証項目を選んで再実行したりできます。リクエスト者のみアクセス可能で、削除済みセッションは除外、リプレイ処理に対応。

Didit の非同期 Reports API は、エクスポートを再実行するか、失敗した認証項目を選択してキューに追加します。新しい再試行は`201`を返し、同一の失敗項目の選択は既存のレポートを`200`で返します。

> [!WARNING]
>
> 選択的な再試行には、元のリクエストを行ったユーザーのIDが必要です。そのIDを持たないAPIキーまたはアプリケーショントークンは、自身のアプリケーションであっても、`item_ids`を送信すると`403`を受け取ります。生成されたAPIキーの例は、空のボディでエクスポート全体を再実行します。

実際のIDは[非同期レポートの取得](https://docs.didit.me/ja/management-api/reports/retrieve.md)で取得し、[失敗項目の再試行ガイダンス](https://docs.didit.me/ja/console/export-pdf-csv.md#失敗したエクスポート項目を再試行する)に従ってください。置換用の日付範囲を指定せずに、`READY`または`FAILED`の`SESSION_EXPORT`から1から1000件のIDを送信します。削除されたセッションは再試行できません。


## OpenAPI

````yaml ja/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/retry/
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/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/retry/:
    post:
      tags:
        - Reports
      summary: 非同期レポートを再試行
      description: >-
        対象となるすべてのリソースに対する読み取り権限が必要です。アプリケーションまたはAPIキーの認証情報は、パス内のアプリケーションに属している必要があります。メンバーのBearerトークンは、そのアプリケーションへのアクセス権を持っている必要があります。また、エクスポート対象のリソースに対する書き込み権限も必要です。item_idsを省略すると、元のエクスポートを再実行します。任意で、置き換えの日付範囲を指定することもできます。失敗項目の再試行として作成されたレポートでは、以降の再試行にitem_idsによる明示的な選択が必要です。item_idsを指定した場合、READYまたはFAILEDのSESSION_EXPORTを再試行できるのは、元のリクエスト者のみです（requested_by_user_idがnullでなく、認証済みユーザーと一致する必要があります）。ユーザーIDを伴わないAPIキーまたはアプリケーショントークンで選択的な再試行を行うと、403が返されます。元のエクスポートで失敗した有効なセッションのみを選択してください。削除されたセッションは再エクスポートできません。元のレポートは変更されません。最初の選択では新しいレポートが作成されます（201）。同じ選択内容を再送すると、既存の再試行レポートが返されます（200）。すでに別の再試行に割り当てられている重複する選択や異なる選択は、400を返します。詳しくは[失敗したエクスポート項目を再試行](https://docs.didit.me/ja/console/export-pdf-csv#失敗したエクスポート項目を再試行する)を参照してください。
      operationId: retry_reports
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 組織ID。
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: アプリケーションID。
        - name: report_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: レポートのUUID。
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncReportRetryRequest'
            example: {}
      responses:
        '200':
          description: 同一の失敗項目の選択を再送した場合のリプレイです。新たにキューへ追加せず、既存の再試行レポートを返します。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '201':
          description: 新しいエクスポートがキューに追加されました。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '400':
          description: >-
            選択が無効または空である場合、IDが1000件を超える場合、IDがこのレポートの有効な失敗セッションに含まれない場合、完了していない、またはセッションではないエクスポートの場合、再試行の選択が競合している場合、日付範囲が無効または混在している場合。
        '401':
          description: 認証情報がない、無効である、または期限切れです。
        '403':
          description: 読み取り/書き込み権限がないか、元のリクエスト者以外（ユーザーIDのない呼び出し元を含む）が選択的な再試行を行いました。
        '404':
          description: このアプリケーションにレポートが見つかりません。
        '409':
          description: レポートは削除中のため、再試行できません。
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.reports.retry(
                "11111111-2222-3333-4444-555555555555",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.reports.retry("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Reports.Retry(ctx, \"11111111-2222-3333-4444-555555555555\", didit.AsyncReportRetryRequest{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.AsyncReportRetryRequest;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.reports().retry("11111111-2222-3333-4444-555555555555");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->reports->retry('11111111-2222-3333-4444-555555555555');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            didit = Didit::Client.new

            result = didit.reports.retry("11111111-2222-3333-4444-555555555555")
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Reports.RetryAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    AsyncReportRetryRequest:
      type: object
      properties:
        item_ids:
          type: array
          description: >-
            任意。このエクスポートに含まれる本番環境の失敗したセッションのUUIDを1〜1000件選択します。重複は1つにまとめられます。サブセットの再試行は元のリクエスト者のみ可能です。date_from/date_toとは併用できません。
          items:
            type: string
            format: uuid
          minItems: 1
          maxItems: 1000
        date_from:
          type: string
          description: 任意。置き換え後の期間の開始日。両方の日付を正しい順序で送信してください。失敗項目の再試行の場合は省略します。
          format: date
        date_to:
          type: string
          description: 任意。置き換え後の期間の終了日。date_from以降の日付である必要があります。
          format: date
        notify_on_ready:
          type: boolean
          description: レポートを依頼した人のメールアドレスが利用可能な場合、準備完了時にメールで通知します。
          default: false
    AsyncReport:
      type: object
      required:
        - uuid
        - report_type
        - report_type_display
        - status
        - status_display
        - parameters
        - requested_by_user_id
        - requested_by_email
        - requested_by_name
        - row_count
        - failed_item_ids
        - failed_count
        - file_size
        - files
        - scheduled_report
        - error_message
        - deletion_pending
        - eta_seconds
        - started_at
        - completed_at
        - expires_at
        - created_at
        - updated_at
      properties:
        uuid:
          type: string
          description: レポート識別子。
          format: uuid
        report_type:
          type: string
          description: エクスポートまたはコンプライアンスレポートの種類。
          enum:
            - SESSION_EXPORT
            - TRANSACTION_EXPORT
            - BUSINESS_EXPORT
            - VENDOR_USER_EXPORT
            - VENDOR_BUSINESS_EXPORT
            - CASE_EXPORT
            - CASE_SLA_EXPORT
            - LIST_ENTRY_EXPORT
            - EVENT_EXPORT
            - COMPLIANCE_KYC_KYB
            - COMPLIANCE_AML_LOG
            - COMPLIANCE_TRAVEL_RULE
            - COMPLIANCE_SANCTIONS_PEP
            - COMPLIANCE_RISK_SUMMARY
            - COMPLIANCE_SAR_STR_DRAFT
            - COMPLIANCE_CTR
            - COMPLIANCE_CASE_SUMMARY
        report_type_display:
          type: string
          description: レポートの種類の表示ラベル。
        status:
          type: string
          description: 生成状態。READYの場合も個別の失敗が含まれることがあるため、failed_count を確認してください。
          enum:
            - PENDING
            - PROCESSING
            - READY
            - FAILED
        status_display:
          type: string
          description: 生成状態の表示ラベル。
        parameters:
          type: object
          description: 元のエクスポートオプション。キーは report_type によって異なります。
          additionalProperties: true
        requested_by_user_id:
          type: string
          description: 元のリクエスト者の識別情報。ユーザーIDのない呼び出し元の場合は null。
          format: uuid
          nullable: true
        requested_by_email:
          type: string
          description: リクエスト者のメールアドレス（利用可能な場合）。
          nullable: true
        requested_by_name:
          type: string
          description: リクエスト者の表示名（利用可能な場合）。
          nullable: true
        row_count:
          type: integer
          description: エクスポートされたレコードの数。生成前は null。
          nullable: true
        failed_item_ids:
          type: array
          description: >-
            削除されたセッションを除き、このエクスポートで失敗した本番環境のセッションのUUIDです。選択的な再試行にはこれらのIDを使用してください。
          items:
            type: string
            format: uuid
        failed_count:
          type: integer
          description: failed_item_ids のエントリー数。
          minimum: 0
        file_size:
          type: integer
          description: 生成されたファイルの合計サイズ（バイト）。生成前はnullです。
          format: int64
          nullable: true
        files:
          type: array
          description: 生成されたファイルのメタデータです。ダウンロードURLは含まれません。
          items:
            $ref: '#/components/schemas/AsyncReportFile'
        scheduled_report:
          type: string
          description: スケジュールの識別子。スケジュールされていないレポートの場合はnullです。
          format: uuid
          nullable: true
        error_message:
          type: string
          description: 生成時のエラー（取得できる場合）。
          nullable: true
        deletion_pending:
          type: boolean
          description: 要求された削除がまだ進行中かどうか。
        eta_seconds:
          type: integer
          description: 保留中または処理中のレポートの完了までの推定秒数です。履歴がない場合、または完了している場合は null です。
          nullable: true
        started_at:
          type: string
          description: 生成開始日時。
          format: date-time
          nullable: true
        completed_at:
          type: string
          description: 生成完了日時。
          format: date-time
          nullable: true
        expires_at:
          type: string
          description: レポートの有効期限。
          format: date-time
        created_at:
          type: string
          description: 作成日時。
          format: date-time
        updated_at:
          type: string
          description: 最終更新日時。
          format: date-time
      example:
        uuid: 00000000-0000-4000-8000-000000000002
        report_type: SESSION_EXPORT
        report_type_display: Verifications
        status: READY
        status_display: Ready
        parameters: {}
        requested_by_user_id: null
        requested_by_email: null
        requested_by_name: null
        row_count: 9
        failed_item_ids:
          - 00000000-0000-4000-8000-000000000001
        failed_count: 1
        file_size: 1200
        files:
          - name: verifications.csv
            format: csv
            rows: 9
            bytes: 1200
        scheduled_report: null
        error_message: null
        deletion_pending: false
        eta_seconds: null
        started_at: '2026-11-11T01:00:00Z'
        completed_at: '2026-11-11T01:01:00Z'
        expires_at: '2026-12-11T01:00:00Z'
        created_at: '2026-11-11T01:00:00Z'
        updated_at: '2026-11-11T01:01:00Z'
    AsyncReportFile:
      type: object
      required:
        - name
        - format
        - rows
        - bytes
      properties:
        name:
          type: string
          description: ファイル名。
        format:
          type: string
          description: ファイル形式。
        rows:
          type: integer
          description: このファイル内のエクスポートされたレコード（該当する場合）。
          nullable: true
        bytes:
          type: integer
          description: ファイルサイズ(バイト)。
          format: int64
    RateLimitBudgetError:
      type: object
      description: >-
        レート制限ミドルウェアの予算超過による拒否の場合にのみ返されます。その他の429エラー（冪等性の競合やエンドポイント固有の上限を含む）では、これらのメタデータフィールドは保証されません。
      required:
        - detail
        - reference
        - limit
        - remaining
        - reset
        - window_seconds
      properties:
        detail:
          type: string
          description: 既存の、人が読める形式のバジェット拒否メッセージです。
        reference:
          type: string
          pattern: ^RL-[0-9a-f]{32}$
          description: RL-で始まり、その後に小文字の16進数文字32文字（UUID形式）が続く不透明なサポート参照番号。
        limit:
          type: integer
          description: 超過した範囲のバジェット。X-RateLimit-Limit と同じ値です。
        remaining:
          type: integer
          minimum: 0
          description: 残りの予算。ゼロ未満にならないよう下限をゼロに制限しています。X-RateLimit-Remaining と等しくなります。
        reset:
          type: integer
          format: int64
          description: ウィンドウのリセット時刻（Unix秒）。X-RateLimit-Resetと同じ値です。
        window_seconds:
          type: integer
          description: 固定ウィンドウの期間（秒）です。残りの待機時間ではありません。再試行する前に Retry-Afterに従ってください。
      example:
        detail: >-
          Write request rate limit exceeded. You can make up to 300 requests per
          minute.
        reference: RL-00000000000040008000000000000001
        limit: 300
        remaining: 0
        reset: 1794358860
        window_seconds: 60
  responses:
    RateLimitedWrite:
      description: APIキーあたり毎分300リクエストの共有書き込み制限を超えました。再試行する前に`Retry-After`に従ってください。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitBudgetError'
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
            reference: RL-00000000000040008000000000000001
            limit: 300
            remaining: 0
            reset: 1794358860
            window_seconds: 60
      headers:
        Retry-After:
          $ref: '#/components/headers/BudgetRetryAfter'
        X-RateLimit-Scope:
          $ref: '#/components/headers/BudgetXRateLimitScope'
        X-RateLimit-Limit:
          $ref: '#/components/headers/BudgetXRateLimitLimit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/BudgetXRateLimitRemaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/BudgetXRateLimitReset'
  headers:
    BudgetRetryAfter:
      description: 次のウィンドウまでの待機秒数（切り上げ）。ミドルウェアの予算超過による拒否の場合にのみ含まれます。
      schema:
        type: integer
    BudgetXRateLimitScope:
      description: 予算を超過した範囲。ミドルウェアによる拒否の場合にのみ含まれます。
      schema:
        type: string
    BudgetXRateLimitLimit:
      description: 超過した範囲のバジェット。ボディの制限値と同じ値です。ミドルウェアのバジェットによる拒否の場合にのみ含まれます。
      schema:
        type: integer
    BudgetXRateLimitRemaining:
      description: >-
        残りの予算。ゼロ未満にならないよう下限をゼロに制限しています。ボディの remaining
        と等しくなります。ミドルウェアの予算による拒否の場合に存在します。
      schema:
        type: integer
    BudgetXRateLimitReset:
      description: リセット時刻はUnix秒です。本文のresetと同じ値です。ミドルウェアの予算超過による拒否レスポンスに含まれます。
      schema:
        type: integer
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API
        keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権（なし、読み取り、書き込み）、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください:
        https://docs.didit.me/console/api-keys
    BearerAuth:
      type: http
      scheme: bearer
      description: アプリケーションのクライアントクレデンシャルのアクセストークン。

````

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