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

# Daftar Laporan Asinkron API

> Daftar laporan ekspor asinkron Didit, filter berdasarkan tipe atau status, dan periksa jumlah kegagalan dengan izin per aplikasi dan paginasi.

Reports API asinkron Didit mencantumkan pekerjaan ekspor yang dapat Anda baca, diurutkan dari yang terbaru. Gunakan `failed_count` dan `failed_item_ids` untuk mengidentifikasi ekspor verifikasi yang memiliki kegagalan pada masing-masing item.

Lihat [panduan ekspor dan coba lagi](https://docs.didit.me/id/console/export-pdf-csv.md#coba-lagi-item-ekspor-yang-gagal), [ambil satu laporan](https://docs.didit.me/id/management-api/reports/retrieve.md), atau [coba lagi ekspor](https://docs.didit.me/id/management-api/reports/retry.md).


## OpenAPI

````yaml id/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 Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/reports/:
    get:
      tags:
        - Reports
      summary: Daftar laporan asinkron
      description: >-
        Memerlukan izin baca untuk setiap resource yang tercakup dalam laporan.
        Kredensial aplikasi/kunci API harus milik aplikasi di path. Token Bearer
        anggota harus memiliki akses ke aplikasi. Mengembalikan laporan yang
        dapat dibaca, dari yang terbaru. Pekerjaan ekspor asinkron ini terpisah
        dari API Laporan Regulasi. Lihat [Ekspor data
        verifikasi](https://docs.didit.me/id/console/export-pdf-csv).
      operationId: list_reports
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: ID organisasi.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: ID aplikasi.
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
          description: Jumlah hasil maksimum per halaman.
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
          description: Jumlah hasil yang dilewati.
        - name: status
          in: query
          schema:
            type: string
          description: >-
            Nilai status yang dipisahkan koma atau diulang: PENDING, PROCESSING,
            READY, FAILED.
        - name: report_type
          in: query
          schema:
            type: string
          description: Nilai report_type yang dipisahkan koma atau diulang.
        - name: q
          in: query
          schema:
            type: string
          description: >-
            Cari berdasarkan fragmen ID laporan atau nama/email pemohon (paling
            banyak 255 karakter).
      responses:
        '200':
          description: Daftar laporan asinkron.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReportList'
        '400':
          description: Filter status, report_type, atau pencarian tidak valid.
        '401':
          description: Kredensial tidak ada, tidak valid, atau sudah kedaluwarsa.
        '403':
          description: >-
            Pemanggil tidak memiliki akses ke aplikasi ini atau izin yang
            diperlukan.
        '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: >-
            Jumlah hasil, biasanya dibatasi hingga 100; bisa berupa perkiraan.
            Ikuti next, bukan menggunakan count untuk menghentikan paginasi.
        next:
          type: string
          description: URL halaman berikutnya, atau null.
          nullable: true
        previous:
          type: string
          description: URL halaman sebelumnya, atau null.
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/AsyncReport'
        counts:
          type: object
          required:
            - report_type
            - status
          description: >-
            Jumlah semua laporan yang dapat dibaca pemanggil, sebelum filter
            daftar diterapkan.
          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: ID laporan.
          format: uuid
        report_type:
          type: string
          description: Jenis ekspor atau laporan kepatuhan.
          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: Label tampilan untuk jenis laporan.
        status:
          type: string
          description: >-
            Status pembuatan. READY dapat menyertakan kegagalan individual;
            periksa failed_count.
          enum:
            - PENDING
            - PROCESSING
            - READY
            - FAILED
        status_display:
          type: string
          description: Label tampilan untuk status pembuatan.
        parameters:
          type: object
          description: Opsi ekspor asli; kunci bergantung pada report_type.
          additionalProperties: true
        requested_by_user_id:
          type: string
          description: >-
            Identitas pemohon asli, atau null untuk pemanggil tanpa identitas
            pengguna.
          format: uuid
          nullable: true
        requested_by_email:
          type: string
          description: Email pemohon, jika tersedia.
          nullable: true
        requested_by_name:
          type: string
          description: Nama tampilan pemohon, jika tersedia.
          nullable: true
        row_count:
          type: integer
          description: Jumlah rekaman yang diekspor, atau null sebelum pembuatan.
          nullable: true
        failed_item_ids:
          type: array
          description: >-
            UUID sesi langsung yang gagal dalam ekspor verifikasi ini. Sesi yang
            dihapus tidak disertakan. Gunakan ID ini untuk coba lagi secara
            selektif.
          items:
            type: string
            format: uuid
        failed_count:
          type: integer
          description: Jumlah entri dalam failed_item_ids.
          minimum: 0
        file_size:
          type: integer
          description: >-
            Total ukuran file yang dihasilkan dalam byte, atau null sebelum
            pembuatan.
          format: int64
          nullable: true
        files:
          type: array
          description: Metadata file yang dihasilkan; tidak berisi URL unduhan.
          items:
            $ref: '#/components/schemas/AsyncReportFile'
        scheduled_report:
          type: string
          description: ID jadwal, atau null untuk laporan yang tidak dijadwalkan.
          format: uuid
          nullable: true
        error_message:
          type: string
          description: Error pembuatan, jika tersedia.
          nullable: true
        deletion_pending:
          type: boolean
          description: Apakah penghapusan yang diminta masih berlangsung.
        eta_seconds:
          type: integer
          description: >-
            Perkiraan detik hingga selesai untuk laporan yang tertunda atau
            sedang diproses; null jika tidak ada riwayat atau jika sudah
            selesai.
          nullable: true
        started_at:
          type: string
          description: Waktu mulai pembuatan.
          format: date-time
          nullable: true
        completed_at:
          type: string
          description: Waktu penyelesaian pembuatan.
          format: date-time
          nullable: true
        expires_at:
          type: string
          description: Waktu kedaluwarsa laporan.
          format: date-time
        created_at:
          type: string
          description: Waktu pembuatan.
          format: date-time
        updated_at:
          type: string
          description: Waktu pembaruan terakhir.
          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: >-
        Hanya dikembalikan untuk penolakan anggaran batas laju middleware.
        Kesalahan 429 lainnya, termasuk konflik idempotensi dan batas khusus
        endpoint, tidak menjamin bidang metadata ini.
      required:
        - detail
        - reference
        - limit
        - remaining
        - reset
        - window_seconds
      properties:
        detail:
          type: string
          description: Pesan penolakan anggaran yang sudah ada dan mudah dibaca manusia.
        reference:
          type: string
          pattern: ^RL-[0-9a-f]{32}$
          description: >-
            Referensi dukungan (tidak transparan): RL- diikuti 32 karakter
            heksadesimal UUID huruf kecil.
        limit:
          type: integer
          description: >-
            Anggaran untuk cakupan yang terlampaui; sama dengan
            X-RateLimit-Limit.
        remaining:
          type: integer
          minimum: 0
          description: >-
            Sisa anggaran, dibatasi hingga nol; sama dengan
            X-RateLimit-Remaining.
        reset:
          type: integer
          format: int64
          description: Waktu reset jendela dalam detik Unix; sama dengan X-RateLimit-Reset.
        window_seconds:
          type: integer
          description: >-
            Durasi jendela tetap dalam detik, bukan sisa waktu tunggu. Patuhi
            Retry-After sebelum mencoba lagi.
      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: Nama file.
        format:
          type: string
          description: Format file.
        rows:
          type: integer
          description: Catatan yang diekspor dalam file ini, jika berlaku.
          nullable: true
        bytes:
          type: integer
          description: Ukuran file dalam byte.
          format: int64
  responses:
    RateLimitedRead:
      description: >-
        Anggaran baca middleware terlampaui. Patuhi Retry-After sebelum mencoba
        lagi.
      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: >-
        Detik untuk menunggu, dibulatkan ke atas ke jendela berikutnya. Tersedia
        pada penolakan anggaran middleware.
      schema:
        type: integer
    BudgetXRateLimitScope:
      description: >-
        Cakupan yang anggarannya terlampaui. Tersedia pada penolakan anggaran
        middleware.
      schema:
        type: string
    BudgetXRateLimitLimit:
      description: >-
        Anggaran untuk cakupan yang terlampaui; sama dengan batas pada body.
        Hadir pada penolakan anggaran middleware.
      schema:
        type: integer
    BudgetXRateLimitRemaining:
      description: >-
        Sisa anggaran, dibatasi hingga nol; sama dengan remaining pada body. Ada
        pada penolakan anggaran middleware.
      schema:
        type: integer
    BudgetXRateLimitReset:
      description: >-
        Waktu reset dalam detik Unix; sama dengan reset di body. Tersedia pada
        penolakan anggaran middleware.
      schema:
        type: integer
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.
    BearerAuth:
      type: http
      scheme: bearer
      description: Token akses client-credentials milik aplikasi.

````

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