> ## 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 Analitik Aplikasi Didit: Analitik Verifikasi

> Baca analitik verifikasi aplikasi Anda untuk rentang tanggal tertentu: total sesi KYC, tingkat konversi, funnel, atau widget dasbor KYB dan transaksi di Didit.



Dapatkan Prompt API Analitik Aplikasi
        Salin prompt ke papan klip



      
      

\<pre>

\`Read the verification analytics of my Didit application for a date range.

Endpoint:
GET https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/analytics/

Authentication:
Use the x-api-key header with my Didit API key. Only a full-access key works: any scoped key gets 403 "This API key has no access to this endpoint.". application_id must be the application the key belongs to.

Goal:
\- Pull KYC session totals, conversion rate and breakdowns into my own reporting, or fetch the same KYB and transaction widgets the Business Console dashboard shows.

Query parameters:
\- start_date, end_date - YYYY-MM-DD, inclusive, UTC. Send both or neither; without both the range runs from 30 days ago through today. A future end_date counts as today. At most 730 days.
\- scope - "kyc", "kyb", "transactions" or "home". Omit it for the KYC summary.
\- widget_keys - comma-separated widget keys, in order. Unknown keys are dropped; with none left you get the scope's defaults.
\- workflow_ids - comma-separated workflow IDs, limits KYC and KYB numbers. versions and branch_path_ids apply only together with workflow_ids (branch_path_ids to KYC numbers only; only the default branch path has figures, so any other value returns empty figures).
\- tag, transaction_type, action_type - filters for transaction widgets only.

Behavior:
\- Without scope and widget_keys the response is the KYC summary: data_points (one per day), request_breakdown, conversion_rate, previous_data_points and previous_request_breakdown for the period of equal length before start_date, location_stats, demographic_stats, device_details, workflow_funnel_stats, verification_time_stats, resubmission_stats, warning_stats, original_status_stats and time series grouped by grouping_mode ("day" up to 14 days, "week" up to 90, "month" beyond). data_points and the grouping span start at the first day with sessions inside the range, not at start_date.
\- With scope (or widget_keys) the response is {scope, available_widget_keys, requested_widget_keys, widgets}; widgets is keyed by widget key and each widget has kind, title and the fields of its kind.
\- Invalid workflow IDs and versions are ignored rather than rejected.
\- Counts come from daily rollups refreshed in the background, so the newest activity can take a short while to appear.

Example call:
curl -X GET "https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/analytics/?start_date=2026-10-01&end_date=2026-10-15" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
\- request_breakdown.total_approved, total_declined, total_in_review - status totals for the range.
\- conversion_rate - approved / (approved + declined + in review) x 100; null when nothing finished.
\- workflow_funnel_stats.<workflow_id>.steps.<STEP>.reached - sessions that reached each step.
\- widgets.<widget_key> - with scope, the widget payloads.

Failure modes:
\- 400 - {"start_date": "Invalid date format. Use YYYY-MM-DD (e.g., 2024-01-15)."}, {"start_date": "Start date must be before or equal to end date."}, {"date_range": "Date range cannot exceed 730 days (2 years)."} or {"scope": "Unsupported analytics scope."}.
\- 401 - the API key has expired.
\- 403 - missing key (a wrong, revoked or expired key gets 401) ({"detail": "Authentication credentials were not provided or are invalid."}), a key of another application ({"detail": "You do not have permission to perform this action."}), any scoped key, or a request from outside the key's IP list.
\- 429 - more than 600 GET requests per minute with this key.

Side effects: none. Not billed.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

Endpoint ini mengembalikan angka di balik [dasbor analitik](https://docs.didit.me/id/console/analytics.md) di Business Console. Endpoint ini memiliki dua bentuk respons:| Anda kirim | Anda terima |
| - | - |
| Baik `scope` maupun `widget_keys` tidak ada | Ringkasan Verifikasi Pengguna (KYC) untuk rentang tersebut |
| `scope`, `widget_keys`, atau keduanya | Widget dasbor untuk satu tab: `kyc`, `kyb`, `transactions`, atau `home` (bebas dikombinasikan dari ketiganya) |Setiap widget memuat `kind` dan `title`; kolom lainnya bergantung pada jenisnya. Kirim `scope` tanpa `widget_keys` sekali untuk membaca `available_widget_keys`, lalu minta hanya widget yang Anda butuhkan.> [!NOTE]
>
> Hanya kunci API dengan akses penuh yang dapat memanggil endpoint ini. Kunci dengan cakupan terbatas akan menerima `403` apa pun akses yang dimilikinya, begitu juga kunci milik aplikasi lain. Lihat [kunci API](https://docs.didit.me/id/console/api-keys.md).## Terkait- [Dapatkan verifikasi hari ini berdasarkan jam](https://docs.didit.me/id/management-api/analytics/today-by-hour.md)
- [Dasbor analitik](https://docs.didit.me/id/console/analytics.md)
- [Kunci API dan akses dengan cakupan](https://docs.didit.me/id/console/api-keys.md)


## OpenAPI

````yaml id/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/analytics/
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}/analytics/:
    get:
      tags:
        - Analytics
      summary: Dapatkan analitik aplikasi
      description: >-
        Baca angka-angka di balik [dasbor
        analitik](https://docs.didit.me/id/console/analytics) Business Console
        untuk rentang tanggal tertentu. Tanpa `scope` dan `widget_keys`,
        responsnya adalah ringkasan verifikasi pengguna (KYC)
        (`ApplicationAnalyticsSummary`): jumlah sesi harian, total status,
        tingkat konversi, angka yang sama untuk periode sebelumnya dengan durasi
        yang sama, lokasi, demografi, perangkat, funnel alur kerja, waktu
        verifikasi aktif, pengiriman ulang, peringatan, dan deret waktu. Dengan
        `scope` atau `widget_keys`, responsnya adalah widget dari satu tab
        dasbor (`ApplicationAnalyticsWidgetResponse`): `kyc`, `kyb`,
        `transactions`, atau `home`.


        Jumlah sesi dihitung berdasarkan tanggal pembuatan sesi (UTC) dan
        mencerminkan status terkini dari setiap sesi. Angka ini berasal dari
        kompilasi harian yang diperbarui di latar belakang, sehingga aktivitas
        terbaru mungkin memerlukan waktu sebentar untuk muncul. ID alur kerja
        dan versi yang tidak valid akan diabaikan alih-alih ditolak. Tidak ada
        biaya yang dikenakan.


        Hanya kunci API akses penuh yang dapat memanggil endpoint ini: setiap
        kunci dengan cakupan terbatas akan menerima `403`, apa pun akses yang
        dimilikinya, begitu pula kunci milik aplikasi lain. Lihat [Kunci
        API](https://docs.didit.me/id/console/api-keys).
      operationId: get_application_analytics
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID organisasi.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID aplikasi. Harus berupa aplikasi pemilik kunci API tersebut:
            kunci yang digunakan pada aplikasi lain mana pun akan mendapatkan
            `403`.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-01'
          description: >-
            Hari pertama dari rentang, `YYYY-MM-DD`, inklusif (UTC). Kirim
            bersama dengan `end_date`: jika salah satu tidak ada, keduanya akan
            diabaikan dan rentang berlangsung dari 30 hari sebelum hari ini
            hingga hari ini.
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-15'
          description: >-
            Hari terakhir dari rentang, `YYYY-MM-DD`, inklusif (UTC). Tanggal di
            masa mendatang dihitung sebagai hari ini. Rentang tidak boleh
            melebihi 730 hari.
        - name: scope
          in: query
          required: false
          schema:
            type: string
            enum:
              - home
              - kyc
              - kyb
              - transactions
          description: >-
            Tab dasbor tempat widget akan dikembalikan (tidak peka huruf
            besar/kecil). Hilangkan parameter ini, bersama dengan `widget_keys`,
            untuk ringkasan KYC. Mengirimkan `widget_keys` saja berarti
            mengasumsikan `kyc`. `home` menerima widget KYC, KYB, atau transaksi
            apa pun dan secara default menggunakan tata letak beranda tersimpan
            milik aplikasi.
        - name: widget_keys
          in: query
          required: false
          schema:
            type: string
            example: tx_count_total,tx_count_daily
          description: >-
            Kunci widget yang dipisahkan dengan koma, dikembalikan dalam urutan
            ini. Kunci yang tidak didukung oleh cakupan akan diabaikan; jika
            tidak ada yang tersisa, Anda akan mendapatkan nilai default cakupan.
            KYC: `kyc_sessions_volume`, `kyc_warning_insights`,
            `kyc_id_locations`, `kyc_ip_locations`, `kyc_workflow_funnel`,
            `kyc_average_verification_time`, `kyc_conversion_rate`,
            `kyc_conversion_by_country`, `kyc_resubmission_insights`,
            `kyc_original_status_distribution`,
            `kyc_database_validation_coverage`,
            `kyc_database_validation_latency`, `kyc_demographics`,
            `kyc_device_details`. KYB: `kyb_sessions_volume`,
            `kyb_workflow_funnel`, `kyb_average_verification_time`,
            `kyb_ip_locations`, `kyb_business_country_distribution`,
            `kyb_warning_insights`, `kyb_conversion_rate`,
            `kyb_conversion_by_country`, `kyb_industry_breakdown`,
            `kyb_resubmission_insights`, `kyb_original_status_distribution`,
            `kyb_registry_coverage`, `kyb_registry_data_completeness`,
            `kyb_device_details`. Transaksi: `tx_count_total`, `tx_count_daily`,
            `tx_volume_total_preferred_currency`,
            `tx_volume_daily_preferred_currency`, `tx_average_amount`,
            `tx_average_amount_daily`, `tx_transaction_category_breakdown`,
            `tx_action_type_breakdown`, `tx_status_volume_trend`,
            `tx_user_ip_or_country_distribution`, `tx_tag_breakdown`,
            `tx_top_rules_triggered`, `tx_team_member_performance`,
            `tx_score_histogram`.
        - name: workflow_ids
          in: query
          required: false
          schema:
            type: string
            example: 33333333-4444-5555-6666-777777777777
          description: >-
            ID alur kerja yang dipisahkan koma. Membatasi ringkasan KYC serta
            widget KYC dan KYB ke alur kerja tersebut. Nilai yang bukan UUID
            akan diabaikan; jika tidak ada yang valid, filter akan dihapus.
            Ringkasan ini juga menerima `workflow_id`.
        - name: versions
          in: query
          required: false
          schema:
            type: string
            example: 3,4
          description: >-
            Nomor versi alur kerja yang dipisahkan koma. Hanya berlaku bersamaan
            dengan `workflow_ids`; nilai yang bukan bilangan bulat akan
            diabaikan. `version` diterima sebagai alias.
        - name: branch_path_ids
          in: query
          required: false
          schema:
            type: string
            example: default
          description: >-
            ID jalur cabang yang dipisahkan koma. Hanya berlaku bersama dengan
            `workflow_ids`, dan hanya untuk angka KYC. Angka saat ini hanya
            dicatat untuk `default` (semua jalur digabungkan), sehingga nilai
            lain apa pun akan mengembalikan angka kosong. `branch_path_id`
            diterima sebagai alias.
        - name: tag
          in: query
          required: false
          schema:
            type: string
          description: >-
            Khusus widget transaksi: UUID tag atau nama tag yang dipisahkan
            koma.
        - name: transaction_type
          in: query
          required: false
          schema:
            type: string
            example: finance
          description: 'Khusus widget transaksi: kategori transaksi yang dipisahkan koma.'
        - name: action_type
          in: query
          required: false
          schema:
            type: string
            example: withdrawal
          description: >-
            Khusus widget transaksi: tipe tindakan yang dipisahkan koma (tidak
            peka huruf besar/kecil).
      responses:
        '200':
          description: >-
            Ringkasan KYC, atau widget yang diminta saat `scope` atau
            `widget_keys` dikirim.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ApplicationAnalyticsSummary'
                  - $ref: '#/components/schemas/ApplicationAnalyticsWidgetResponse'
              examples:
                KYC summary:
                  value:
                    grouping_mode: day
                    data_points:
                      - rounded_date: '2026-10-14'
                        total: 12
                        approved: 8
                        declined: 1
                        canceled: 1
                        pending: 2
                        in_review: 1
                        expired: 1
                        abandoned: 0
                        in_progress: 1
                        not_started: 0
                        manually_approved: 1
                        manually_declined: 0
                      - rounded_date: '2026-10-15'
                        total: 10
                        approved: 6
                        declined: 2
                        canceled: 0
                        pending: 2
                        in_review: 2
                        expired: 0
                        abandoned: 0
                        in_progress: 0
                        not_started: 0
                        manually_approved: 0
                        manually_declined: 1
                    request_breakdown:
                      total_approved: 14
                      total_in_review: 3
                      total_declined: 3
                      total_canceled: 1
                      total_pending: 4
                      total_expired: 1
                      total_abandoned: 0
                      total_in_progress: 1
                      total_not_started: 0
                      total_manually_approved: 1
                      total_manually_declined: 1
                    conversion_rate: 70
                    location_stats:
                      countries:
                        - session_count: 15
                          country: Spain
                          country_code: ES
                        - session_count: 7
                          country: Portugal
                          country_code: PT
                      ip_countries:
                        - session_count: 15
                          country: Spain
                          country_code: ES
                        - session_count: 7
                          country: Portugal
                          country_code: PT
                      id_countries:
                        - country: Spain
                          country_code: ES
                          session_count: 14
                        - country: Portugal
                          country_code: PT
                          session_count: 6
                      conversion_by_country:
                        - country: Spain
                          country_code: ES
                          finished: 13
                          approved: 10
                        - country: Portugal
                          country_code: PT
                          finished: 6
                          approved: 4
                      cities:
                        - session_count: 9
                          location: Madrid, Spain
                          latitude: 40.4168
                          longitude: -3.7038
                    demographic_stats:
                      age_distribution:
                        under_18: 0
                        18_24: 5
                        25_34: 8
                        35_44: 4
                        45_64: 2
                        65_plus: 1
                      gender_distribution:
                        M: 11
                        F: 9
                    device_details:
                      device_models:
                        - device: Apple
                          count: 12
                        - device: Android
                          count: 10
                      browsers:
                        - browser: Safari
                          count: 12
                        - browser: Chrome
                          count: 10
                      operating_systems:
                        - os: iOS
                          count: 12
                        - os: Android
                          count: 10
                    workflow_funnel_stats:
                      33333333-4444-5555-6666-777777777777:
                        total: 22
                        steps:
                          OCR:
                            reached: 21
                          LIVENESS:
                            reached: 19
                          FACE_MATCH:
                            reached: 19
                          AML:
                            reached: 18
                    verification_time_stats:
                      overall_avg_seconds: 64
                      overall_count: 18
                      per_feature:
                        OCR:
                          avg_seconds: 41.2
                          total_seconds: 741.6
                          count: 18
                        LIVENESS:
                          avg_seconds: 22.8
                          total_seconds: 410.4
                          count: 18
                      per_sub_step:
                        OCR:
                          front_id_photo:
                            avg_seconds: 18.3
                            total_seconds: 329.4
                            count: 18
                    resubmission_stats:
                      first_pass: 17
                      second: 2
                      third_plus: 1
                      abandoned: 0
                    warning_stats:
                      ID_VERIFICATION:
                        total: 21
                        risks:
                          DOCUMENT_EXPIRED:
                            error: 1
                            warning: 0
                            information: 0
                      LIVENESS:
                        total: 19
                        risks:
                          LOW_LIVENESS_SCORE:
                            error: 0
                            warning: 2
                            information: 0
                    original_status_stats:
                      approved: 13
                      in_review: 5
                      declined: 2
                    demographic_time_series:
                      - date: '2026-10-14'
                        age_distribution:
                          under_18: 0
                          18_24: 3
                          25_34: 4
                          35_44: 2
                          45_64: 1
                          65_plus: 0
                        gender_distribution:
                          M: 6
                          F: 4
                      - date: '2026-10-15'
                        age_distribution:
                          under_18: 0
                          18_24: 2
                          25_34: 4
                          35_44: 2
                          45_64: 1
                          65_plus: 1
                        gender_distribution:
                          M: 5
                          F: 5
                    device_time_series:
                      - date: '2026-10-14'
                        devices:
                          Apple: 7
                          Android: 5
                        browsers:
                          Safari: 7
                          Chrome: 5
                        operating_systems:
                          iOS: 7
                          Android: 5
                      - date: '2026-10-15'
                        devices:
                          Apple: 5
                          Android: 5
                        browsers:
                          Safari: 5
                          Chrome: 5
                        operating_systems:
                          iOS: 5
                          Android: 5
                    verification_time_time_series:
                      - date: '2026-10-14'
                        overall_avg: 66.1
                        per_feature:
                          OCR: 42
                          LIVENESS: 24.1
                      - date: '2026-10-15'
                        overall_avg: 61.5
                        per_feature:
                          OCR: 40.2
                          LIVENESS: 21.3
                    resubmission_time_series:
                      - date: '2026-10-14'
                        first_pass: 9
                        second: 1
                        third_plus: 0
                        abandoned: 0
                      - date: '2026-10-15'
                        first_pass: 8
                        second: 1
                        third_plus: 1
                        abandoned: 0
                    original_status_time_series:
                      - date: '2026-10-14'
                        approved: 7
                        in_review: 3
                        declined: 1
                      - date: '2026-10-15'
                        approved: 6
                        in_review: 2
                        declined: 1
                    previous_data_points:
                      - rounded_date: '2026-10-12'
                        total: 9
                        approved: 6
                        declined: 1
                        canceled: 1
                        pending: 1
                      - rounded_date: '2026-10-13'
                        total: 11
                        approved: 7
                        declined: 2
                        canceled: 0
                        pending: 2
                    previous_request_breakdown:
                      total_approved: 13
                      total_in_review: 2
                      total_declined: 3
                      total_canceled: 1
                      total_pending: 3
                Transaction widgets:
                  value:
                    scope: transactions
                    available_widget_keys:
                      - tx_count_total
                      - tx_count_daily
                      - tx_volume_total_preferred_currency
                      - tx_volume_daily_preferred_currency
                      - tx_average_amount
                      - tx_average_amount_daily
                      - tx_transaction_category_breakdown
                      - tx_action_type_breakdown
                      - tx_status_volume_trend
                      - tx_user_ip_or_country_distribution
                      - tx_tag_breakdown
                      - tx_top_rules_triggered
                      - tx_team_member_performance
                      - tx_score_histogram
                    requested_widget_keys:
                      - tx_count_total
                      - tx_count_daily
                    widgets:
                      tx_count_total:
                        kind: metric
                        title: Transaction count
                        value: 42
                      tx_count_daily:
                        kind: time_series
                        title: Transaction count
                        items:
                          - date: '2026-10-14'
                            value: 20
                          - date: '2026-10-15'
                            value: 22
                        previous_items:
                          - date: '2026-10-12'
                            value: 18
                          - date: '2026-10-13'
                            value: 15
        '400':
          description: >-
            Rentang tanggal atau cakupan tidak valid. Body berupa objek yang
            diberi kunci berdasarkan parameter yang bermasalah, dengan pesan
            string.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
              examples:
                Bad date format:
                  value:
                    start_date: Invalid date format. Use YYYY-MM-DD (e.g., 2024-01-15).
                Start after end:
                  value:
                    start_date: Start date must be before or equal to end date.
                Range too long:
                  value:
                    date_range: Date range cannot exceed 730 days (2 years).
                Unknown scope:
                  value:
                    scope: Unsupported analytics scope.
        '401':
          description: >-
            Kunci API telah kedaluwarsa. Hanya kunci yang dibuat dengan tanggal
            kedaluwarsa yang dapat kedaluwarsa; setelah tanggal tersebut, setiap
            permintaan dengannya menghasilkan respons `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Permintaan tidak diizinkan. Baca `detail`: kunci API yang hilang
            (kunci yang salah, dicabut, atau kedaluwarsa akan menghasilkan
            `401`), kunci dari aplikasi lain, kunci dengan cakupan terbatas apa
            pun, atau permintaan dari luar daftar IP kunci.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid key:
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Another application:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key:
                  value:
                    detail: This API key has no access to this endpoint.
                Outside the key's IP list:
                  value:
                    detail: This API key can't be used from this IP address.
        '429':
          description: >-
            Lebih dari 600 permintaan GET per menit dengan kunci API ini. Tunggu
            selama jumlah detik di `Retry-After`, lalu coba lagi.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Throttled:
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
          headers:
            Retry-After:
              description: Detik hingga jendela satu menit saat ini direset.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Permintaan yang diizinkan per menit dalam anggaran ini.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Permintaan tersisa dalam jendela saat ini.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Waktu Unix saat jendela direset.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/analytics/?start_date=2026-10-01&end_date=2026-10-15'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

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

            result = client.analytics.retrieve()
            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.analytics.retrieve();
            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.Analytics.Retrieve(ctx, didit.AnalyticsRetrieveParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

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

            var result = client.analytics().retrieve();
            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->analytics->retrieve();
            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.analytics.retrieve
            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.Analytics.RetrieveAsync();
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    ApplicationAnalyticsSummary:
      type: object
      description: >-
        Ringkasan verifikasi pengguna (KYC), dikembalikan saat `scope` maupun
        `widget_keys` tidak dikirim.
      required:
        - data_points
        - request_breakdown
        - previous_data_points
        - previous_request_breakdown
        - conversion_rate
        - location_stats
        - demographic_stats
        - device_details
        - workflow_funnel_stats
        - verification_time_stats
        - resubmission_stats
        - warning_stats
        - original_status_stats
        - grouping_mode
        - demographic_time_series
        - device_time_series
        - verification_time_time_series
        - resubmission_time_series
        - original_status_time_series
      properties:
        data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
          description: >-
            Satu titik per hari, dari hari pertama yang memiliki sesi dalam
            rentang tersebut hingga `end_date`. Selalu harian, apa pun nilai
            `grouping_mode`.
        request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        previous_data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
          description: >-
            Poin harian untuk periode dengan panjang yang sama tepat sebelum
            `start_date`.
        previous_request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        conversion_rate:
          type: number
          nullable: true
          description: >-
            `total_approved / (total_approved + total_declined +
            total_in_review) x 100`, satu desimal. `null` saat belum ada yang
            selesai.
        location_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsLocationStats'
        demographic_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsDemographicStats'
        device_details:
          $ref: '#/components/schemas/ApplicationAnalyticsDeviceDetails'
        workflow_funnel_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsWorkflowFunnel'
        verification_time_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsVerificationTimeStats'
        resubmission_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsResubmissionStats'
        warning_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsWarningStats'
        original_status_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsOriginalStatusStats'
        grouping_mode:
          type: string
          enum:
            - day
            - week
            - month
          description: >-
            Bagaimana daftar `*_time_series` dikelompokkan: `day` untuk hingga
            14 hari, `week` hingga 90, `month` untuk selebihnya. Diukur dari
            hari pertama yang memiliki sesi dalam rentang tersebut.
        demographic_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDemographicPoint'
        device_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDevicePoint'
        verification_time_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsVerificationTimePoint'
        resubmission_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsResubmissionPoint'
        original_status_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsOriginalStatusPoint'
    ApplicationAnalyticsWidgetResponse:
      type: object
      description: Widget dasbor, dikembalikan saat `scope` atau `widget_keys` dikirim.
      required:
        - scope
        - available_widget_keys
        - requested_widget_keys
        - widgets
      properties:
        scope:
          type: string
          enum:
            - home
            - kyc
            - kyb
            - transactions
          description: Tab dasbor.
        available_widget_keys:
          type: array
          items:
            type: string
          description: Setiap kunci widget yang diterima oleh cakupan ini.
        requested_widget_keys:
          type: array
          items:
            type: string
          description: >-
            Kunci widget yang dijawab, secara berurutan: `widget_keys` Anda yang
            valid, atau default dari cakupan tersebut.
        widgets:
          type: object
          description: >-
            Menggunakan kunci widget sebagai kunci, sesuai urutan
            `requested_widget_keys`.
          additionalProperties:
            $ref: '#/components/schemas/ApplicationAnalyticsWidget'
    ApplicationAnalyticsDataPoint:
      type: object
      description: >-
        Jumlah sesi untuk satu hari, berdasarkan tanggal pembuatan (UTC). Setiap
        jumlah mencerminkan status sesi saat ini. Titik-titik data dari periode
        sebelumnya membawa setidaknya kolom yang wajib diisi.
      required:
        - rounded_date
        - total
        - approved
        - declined
        - canceled
        - pending
      properties:
        rounded_date:
          type: string
          format: date
          description: Hari, `YYYY-MM-DD`.
        total:
          type: integer
          description: Sesi yang dibuat pada hari tersebut.
        approved:
          type: integer
          description: >-
            Dari jumlah tersebut, sesi dengan status `Approved` atau `Kyc
            Expired`.
        declined:
          type: integer
          description: Sesi `Declined`.
        canceled:
          type: integer
          description: Sesi `Expired` atau `Abandoned`.
        pending:
          type: integer
          description: Sesi `Not Started`, `In Progress`, atau `In Review`.
        in_review:
          type: integer
          description: Sesi `In Review`.
        expired:
          type: integer
          description: Sesi `Expired`.
        abandoned:
          type: integer
          description: Sesi `Abandoned`.
        in_progress:
          type: integer
          description: Sesi `In Progress`.
        not_started:
          type: integer
          description: Sesi `Not Started`.
        manually_approved:
          type: integer
          description: >-
            Sesi yang disetujui oleh peninjau setelah alur kerja memberikan
            keputusan lain.
        manually_declined:
          type: integer
          description: >-
            Sesi yang ditolak oleh peninjau setelah alur kerja memberikan
            keputusan lain.
    ApplicationAnalyticsRequestBreakdown:
      type: object
      description: >-
        Total status untuk rentang tersebut. Rincian periode sebelumnya memuat
        setidaknya kolom yang wajib diisi.
      required:
        - total_approved
        - total_in_review
        - total_declined
        - total_canceled
        - total_pending
      properties:
        total_approved:
          type: integer
          description: Sesi `Approved` atau `Kyc Expired`.
        total_in_review:
          type: integer
          description: Sesi `In Review`.
        total_declined:
          type: integer
          description: Sesi `Declined`.
        total_canceled:
          type: integer
          description: Sesi `Expired` atau `Abandoned`.
        total_pending:
          type: integer
          description: >-
            Sesi `Not Started`, `In Progress`, atau `In Review` (termasuk
            `total_in_review`).
        total_expired:
          type: integer
          description: Sesi `Expired`.
        total_abandoned:
          type: integer
          description: Sesi `Abandoned`.
        total_in_progress:
          type: integer
          description: Sesi `In Progress`.
        total_not_started:
          type: integer
          description: Sesi `Not Started`.
        total_manually_approved:
          type: integer
          description: Disetujui oleh peninjau.
        total_manually_declined:
          type: integer
          description: Ditolak oleh peninjau.
    ApplicationAnalyticsLocationStats:
      type: object
      properties:
        ip_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: Negara dari alamat IP pengguna, sesi terbanyak terlebih dahulu.
        countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: Daftar yang sama dengan `ip_countries`.
        id_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: >-
            Negara penerbit dari dokumen identitas yang diverifikasi, sesi
            terbanyak terlebih dahulu.
        conversion_by_country:
          type: array
          description: >-
            Per negara penerbit dokumen: sesi yang selesai (disetujui, ditolak,
            atau dalam peninjauan) dan berapa banyak yang disetujui. Sesi yang
            paling banyak selesai ditampilkan terlebih dahulu.
          items:
            type: object
            properties:
              country:
                type: string
              country_code:
                type: string
              finished:
                type: integer
              approved:
                type: integer
        cities:
          type: array
          description: Hingga 100 kota IP, sesi terbanyak terlebih dahulu.
          items:
            type: object
            properties:
              location:
                type: string
                description: '`City, Country`.'
              session_count:
                type: integer
              latitude:
                type: number
                nullable: true
              longitude:
                type: number
                nullable: true
    ApplicationAnalyticsDemographicStats:
      type: object
      properties:
        age_distribution:
          type: object
          description: >-
            Sesi per kelompok usia dari dokumen identitas. Kosong jika tidak ada
            data.
          properties:
            under_18:
              type: integer
            18_24:
              type: integer
            25_34:
              type: integer
            35_44:
              type: integer
            45_64:
              type: integer
            65_plus:
              type: integer
          additionalProperties:
            type: integer
        gender_distribution:
          type: object
          description: >-
            Sesi per kode jenis kelamin dokumen: `M`, `F`, atau `U` (tidak
            diketahui).
          additionalProperties:
            type: integer
    ApplicationAnalyticsDeviceDetails:
      type: object
      description: Lima teratas dari masing-masing, sesi terbanyak terlebih dahulu.
      properties:
        device_models:
          type: array
          description: >-
            Merek perangkat: `Apple`, `Android`, `LG`, selebihnya dikelompokkan
            sebagai `Other`.
          items:
            type: object
            properties:
              device:
                type: string
              count:
                type: integer
        browsers:
          type: array
          description: >-
            Browser: `Chrome`, `Safari`, `Didit App`, `Firefox`, selebihnya
            dikelompokkan sebagai `Other`.
          items:
            type: object
            properties:
              browser:
                type: string
              count:
                type: integer
        operating_systems:
          type: array
          description: Sistem operasi.
          items:
            type: object
            properties:
              os:
                type: string
              count:
                type: integer
    ApplicationAnalyticsWorkflowFunnel:
      type: object
      description: >-
        Menggunakan ID alur kerja sebagai kunci. `total` adalah sesi yang
        dimulai pada alur kerja tersebut; `steps` menghitung sesi yang mencapai
        setiap langkah (`OCR`, `LIVENESS`, `FACE_MATCH`, `AML`, `POA`, `PHONE`,
        `EMAIL`, `NFC`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `IP_ANALYSIS`,
        `AGE_ESTIMATION`, `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`).
        Mencapai suatu langkah bukan berarti lolos dari langkah tersebut.
      additionalProperties:
        type: object
        properties:
          total:
            type: integer
          steps:
            type: object
            additionalProperties:
              type: object
              properties:
                reached:
                  type: integer
    ApplicationAnalyticsVerificationTimeStats:
      type: object
      description: >-
        Waktu aktif yang dihabiskan pengguna untuk memverifikasi, mengabaikan
        jeda tidak aktif. Berupa objek kosong jika tidak ada data.
      properties:
        overall_avg_seconds:
          type: number
          description: Rata-rata per sesi, satu desimal.
        overall_count:
          type: integer
          description: Sesi yang diukur.
        per_feature:
          type: object
          description: Menggunakan fitur sebagai kunci, misalnya `OCR` atau `LIVENESS`.
          additionalProperties:
            type: object
            properties:
              avg_seconds:
                type: number
              total_seconds:
                type: number
              count:
                type: integer
        per_sub_step:
          type: object
          description: >-
            Menggunakan fitur sebagai kunci, lalu sub-langkah sebagai kunci
            berikutnya, misalnya `front_id_photo`.
          additionalProperties:
            type: object
            additionalProperties:
              type: object
              properties:
                avg_seconds:
                  type: number
                total_seconds:
                  type: number
                count:
                  type: integer
    ApplicationAnalyticsResubmissionStats:
      type: object
      properties:
        first_pass:
          type: integer
          description: Sesi selesai tanpa pengajuan ulang.
        second:
          type: integer
          description: Sesi selesai yang diajukan ulang satu kali.
        third_plus:
          type: integer
          description: Sesi selesai yang diajukan ulang dua kali atau lebih.
        abandoned:
          type: integer
          description: Sesi yang ditinggalkan.
    ApplicationAnalyticsWarningStats:
      type: object
      description: >-
        Menggunakan fitur sebagai kunci (`ID_VERIFICATION`, `LIVENESS`,
        `FACEMATCH`, `AML`, `PROOF_OF_ADDRESS`, `PHONE`, `EMAIL`, `NFC`,
        `LOCATION`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`, dan fitur-fitur
        KYB). `total` adalah sesi yang mencapai fitur tersebut; `risks`
        menghitung sesi per kode dan tingkat peringatan.
      additionalProperties:
        type: object
        properties:
          total:
            type: integer
          risks:
            type: object
            additionalProperties:
              type: object
              properties:
                error:
                  type: integer
                warning:
                  type: integer
                information:
                  type: integer
    ApplicationAnalyticsOriginalStatusStats:
      type: object
      description: Putusan otomatis alur kerja, sebelum peninjau mana pun mengubahnya.
      properties:
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsDemographicPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Kunci periode: `YYYY-MM-DD` untuk hari, hari Senin dalam seminggu,
            atau `YYYY-MM` untuk bulan, mengikuti `grouping_mode`.
        age_distribution:
          type: object
          additionalProperties:
            type: integer
        gender_distribution:
          type: object
          additionalProperties:
            type: integer
    ApplicationAnalyticsDevicePoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Kunci periode: `YYYY-MM-DD` untuk hari, hari Senin dalam seminggu,
            atau `YYYY-MM` untuk bulan, mengikuti `grouping_mode`.
        devices:
          type: object
          additionalProperties:
            type: integer
        browsers:
          type: object
          additionalProperties:
            type: integer
        operating_systems:
          type: object
          additionalProperties:
            type: integer
    ApplicationAnalyticsVerificationTimePoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Kunci periode: `YYYY-MM-DD` untuk hari, hari Senin dalam seminggu,
            atau `YYYY-MM` untuk bulan, mengikuti `grouping_mode`.
        overall_avg:
          type: number
          description: Rata-rata detik aktif per sesi.
        per_feature:
          type: object
          description: Rata-rata detik aktif per fitur.
          additionalProperties:
            type: number
    ApplicationAnalyticsResubmissionPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Kunci periode: `YYYY-MM-DD` untuk hari, hari Senin dalam seminggu,
            atau `YYYY-MM` untuk bulan, mengikuti `grouping_mode`.
        first_pass:
          type: integer
        second:
          type: integer
        third_plus:
          type: integer
        abandoned:
          type: integer
    ApplicationAnalyticsOriginalStatusPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Kunci periode: `YYYY-MM-DD` untuk hari, hari Senin dalam seminggu,
            atau `YYYY-MM` untuk bulan, mengikuti `grouping_mode`.
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsWidget:
      type: object
      description: >-
        Satu widget dasbor. Setiap widget memiliki `kind` dan `title`; kolom
        lainnya bergantung pada `kind`. Widget sesi menggunakan kembali objek
        ringkasan (`data_points`, `request_breakdown`, `workflow_funnel_stats`,
        dan seterusnya); widget daftar menempatkan entrinya di `items`; metrik
        transaksi menggunakan `value`.
      required:
        - kind
        - title
      properties:
        kind:
          type: string
          enum:
            - sessions_volume
            - workflow_funnel
            - average_verification_time
            - country_distribution
            - warning_insights
            - conversion_rate
            - conversion_by_country
            - resubmission_insights
            - original_status_distribution
            - database_validation_coverage
            - database_validation_latency
            - demographics
            - device_details
            - horizontal_bar
            - kyb_registry_coverage
            - kyb_registry_data_completeness
            - metric
            - time_series
            - breakdown
            - status_time_series
            - leaderboard
            - histogram
          description: Tipe widget.
        title:
          type: string
          description: Judul tampilan, misalnya `Verification volume`.
        grouping_mode:
          type: string
          enum:
            - day
            - week
            - month
          description: >-
            Bagaimana daftar `*_time_series` dikelompokkan: `day` untuk hingga
            14 hari, `week` hingga 90, `month` untuk selebihnya. Diukur dari
            hari pertama yang memiliki sesi dalam rentang tersebut.
        data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
        request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        previous_data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
        previous_request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        conversion_rate:
          type: number
          nullable: true
        workflow_funnel_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsWorkflowFunnel'
        verification_time_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsVerificationTimeStats'
        verification_time_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsVerificationTimePoint'
        warning_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsWarningStats'
        resubmission_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsResubmissionStats'
        resubmission_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsResubmissionPoint'
        original_status_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsOriginalStatusStats'
        original_status_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsOriginalStatusPoint'
        demographic_stats:
          $ref: '#/components/schemas/ApplicationAnalyticsDemographicStats'
        demographic_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDemographicPoint'
        device_details:
          $ref: '#/components/schemas/ApplicationAnalyticsDeviceDetails'
        device_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDevicePoint'
        items:
          type: array
          description: >-
            Entri dari widget daftar. `country_distribution` (KYC): `country`,
            `country_code`, `session_count`. `conversion_by_country`: `country`,
            `country_code`, `finished`, `approved`. `time_series`: `date`,
            `value`. `status_time_series`: `date`, `approved`, `declined`,
            `flagged`. `breakdown`: `transaction_type` atau `action_type` dengan
            `count` dan `volume`, atau `tag_id`, `tag_name`, `count`.
            `leaderboard`: `rule_title`, `trigger_count` atau `assignee`,
            `handled_count`, `average_processing_seconds`, masing-masing dengan
            `approved_percentage`, `declined_percentage`, `flagged_percentage`.
            `histogram`: `score`, `count`.
          items:
            type: object
            additionalProperties: {}
        previous_items:
          type: array
          description: >-
            Rangkaian waktu transaksi untuk periode dengan panjang yang sama
            tepat sebelum `start_date`.
          items:
            type: object
            additionalProperties: {}
        value:
          type: number
          description: 'Widget `metric`: angka untuk rentang tersebut.'
        currency:
          type: string
          nullable: true
          description: >-
            Widget volume dan jumlah transaksi: mata uang transaksi default
            aplikasi.
        thresholds:
          type: object
          description: >-
            Widget `histogram`: ambang batas skor peninjauan dan penolakan
            aplikasi.
          properties:
            review:
              type: integer
            decline:
              type: integer
        search:
          type: object
          description: 'Widget `kyb_registry_coverage`: total pencarian registri.'
          properties:
            searches_total:
              type: integer
            searches_with_no_candidates:
              type: integer
    ApplicationAnalyticsCountryCount:
      type: object
      properties:
        country:
          type: string
          description: Nama negara.
        country_code:
          type: string
          description: Kode negara dua huruf.
        session_count:
          type: integer
          description: Sesi dari negara tersebut.
  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.

````

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