> ## 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 (List Async Reports)

> Didit 비동기 내보내기 보고서를 조회하고 유형이나 상태로 필터링하며, 애플리케이션 범위 권한과 페이지네이션으로 실패 건수를 확인합니다.

Didit의 비동기 Reports API는 읽을 수 있는 내보내기 작업을 최신순으로 나열합니다. 개별 실패가 있는 인증 내보내기를 식별하려면 `failed_count`와 `failed_item_ids`를 사용합니다.

[내보내기 및 재시도 안내](https://docs.didit.me/ko/console/export-pdf-csv.md#실패한-내보내기-항목-재시도), [보고서 단건 조회](https://docs.didit.me/ko/management-api/reports/retrieve.md), [내보내기 재시도](https://docs.didit.me/ko/management-api/reports/retry.md)를 참조합니다.


## OpenAPI

````yaml ko/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/reports/
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/:
    get:
      tags:
        - Reports
      summary: 비동기 보고서 목록 조회
      description: >-
        보고서에 포함된 모든 리소스에 대한 읽기 권한이 필요합니다. 애플리케이션/API 키 자격 증명은 경로에 있는 애플리케이션에 속해야
        합니다. 멤버 Bearer 토큰은 해당 애플리케이션에 대한 접근 권한이 있어야 합니다. 조회할 수 있는 보고서를 최신순으로
        반환합니다. 이 비동기 내보내기 작업은 Regulatory Reports API와 별개입니다. [인증 데이터
        내보내기](https://docs.didit.me/ko/console/export-pdf-csv)를 참조하세요.
      operationId: list_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: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
          description: 페이지당 최대 결과 수입니다.
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
          description: 건너뛸 결과 수입니다.
        - name: status
          in: query
          schema:
            type: string
          description: '쉼표로 구분하거나 반복해서 지정하는 status 값입니다: PENDING, PROCESSING, READY, FAILED.'
        - name: report_type
          in: query
          schema:
            type: string
          description: 쉼표로 구분하거나 반복해서 지정하는 report_type 값입니다.
        - name: q
          in: query
          schema:
            type: string
          description: 보고서 ID 일부 또는 요청자 이름/이메일로 검색합니다(최대 255자).
      responses:
        '200':
          description: 비동기 보고서 목록을 조회합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReportList'
        '400':
          description: 잘못된 status, report_type 또는 검색 필터입니다.
        '401':
          description: 자격 증명이 없거나, 유효하지 않거나, 만료되었습니다.
        '403':
          description: 호출자에게 이 애플리케이션에 대한 액세스 권한이나 필요한 권한이 없습니다.
        '429':
          $ref: '#/components/responses/RateLimitedRead'
      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()

            for item in client.reports.list():
                print(item)
        - 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();

            for await (const item of didit.reports.list()) {
              console.log(item);
            }
        - 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\niter := client.Reports.ListAutoPaging(ctx, didit.ReportsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            // and DIDIT_APPLICATION_ID.
            Didit client = new Didit();

            for (var item : client.reports().list()) {
                System.out.println(item);
            }
        - 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();

            foreach ($didit->reports->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            didit.reports.list.auto_paging_each do |item|
              puts item.to_h
            end
        - 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();

            await foreach (var item in await client.Reports.ListAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    AsyncReportList:
      type: object
      required:
        - count
        - next
        - previous
        - results
        - counts
      properties:
        count:
          type: integer
          description: >-
            결과 개수이며 일반적으로 100으로 제한되고 추정값일 수 있습니다. 페이지네이션을 중단할 때는 count 대신 next를
            따르세요.
        next:
          type: string
          description: 다음 페이지 URL이며, 없으면 null입니다.
          nullable: true
        previous:
          type: string
          description: 이전 페이지 URL이며, 없으면 null입니다.
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/AsyncReport'
        counts:
          type: object
          required:
            - report_type
            - status
          description: 목록 필터를 적용하기 전에, 호출자가 읽을 수 있는 모든 보고서의 개수입니다.
          properties:
            report_type:
              type: object
              additionalProperties:
                type: integer
            status:
              type: object
              additionalProperties:
                type: integer
    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입니다. 사용자 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'
    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- 뒤에 소문자 UUID 16진수 문자 32자가 이어집니다.
        limit:
          type: integer
          description: 초과된 범위의 예산입니다. X-RateLimit-Limit 값과 같습니다.
        remaining:
          type: integer
          minimum: 0
          description: 남은 예산이며 0 미만으로 내려가지 않습니다. 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
    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
  responses:
    RateLimitedRead:
      description: 미들웨어 읽기 예산을 초과했습니다. 재시도하기 전에 Retry-After를 따르세요.
      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'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitBudgetError'
          example:
            detail: >-
              GET request rate limit exceeded. You can make up to 600 requests
              per minute.
            reference: RL-00000000000040008000000000000001
            limit: 600
            remaining: 0
            reset: 1794358860
            window_seconds: 60
  headers:
    BudgetRetryAfter:
      description: 다음 윈도우까지 기다려야 하는 시간(초)을 올림한 값입니다. 미들웨어 예산 거부 응답에 포함됩니다.
      schema:
        type: integer
    BudgetXRateLimitScope:
      description: 예산을 초과한 범위입니다. 미들웨어 예산 거부 응답에 포함됩니다.
      schema:
        type: string
    BudgetXRateLimitLimit:
      description: 초과된 범위의 예산입니다. 본문 한도와 같습니다. 미들웨어 예산 거부 응답에 포함됩니다.
      schema:
        type: integer
    BudgetXRateLimitRemaining:
      description: 남은 예산이며 0 미만으로 내려가지 않습니다. 본문의 remaining과 같습니다. 미들웨어 예산 거부 응답에만 있습니다.
      schema:
        type: integer
    BudgetXRateLimitReset:
      description: Unix 초 단위의 재설정 시간이며 본문의 reset 값과 같습니다. 미들웨어 예산 거부 응답에 포함됩니다.
      schema:
        type: integer
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.
    BearerAuth:
      type: http
      scheme: bearer
      description: 애플리케이션의 클라이언트 자격 증명 액세스 token입니다.

````

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