> ## 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 가져오기

> 날짜 범위의 애플리케이션 인증 분석 데이터를 조회하세요. KYC 세션 합계, 전환율, 퍼널, KYB 및 거래 모니터링 대시보드 위젯을 Didit에서 제공합니다.



애플리케이션 분석 API 조회 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<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>



      
      

붙여넣을 곳

이 엔드포인트는 Business Console의 [분석 대시보드](https://docs.didit.me/ko/console/analytics.md)에 표시되는 수치를 반환합니다. 응답 형식은 두 가지입니다.| 보내는 값 | 받는 값 |
| - | - |
| `scope`와 `widget_keys`를 모두 보내지 않음 | 해당 기간의 사용자 인증(KYC) 요약 |
| `scope`, `widget_keys`, 또는 둘 다 | 한 탭의 대시보드 위젯: `kyc`, `kyb`, `transactions`, `home` 중 하나(세 가지를 임의로 조합 가능) |모든 위젯에는 `kind`와 `title`이 포함되며, 나머지 필드는 위젯 종류에 따라 달라집니다. `widget_keys` 없이 `scope`만 한 번 보내 `available_widget_keys`를 조회한 다음, 필요한 위젯만 요청하십시오.> [!NOTE]
>
> 전체 액세스 API 키만 이 엔드포인트를 호출할 수 있습니다. 범위가 제한된 키는 보유한 액세스 권한과 관계없이 `403`을 받으며, 다른 애플리케이션의 키도 마찬가지입니다. [API 키](https://docs.didit.me/ko/console/api-keys.md)를 참조하십시오.## 관련 항목- [시간대별 오늘의 인증 조회](https://docs.didit.me/ko/management-api/analytics/today-by-hour.md)
- [분석 대시보드](https://docs.didit.me/ko/console/analytics.md)
- [API 키 및 범위 제한 액세스](https://docs.didit.me/ko/console/api-keys.md)


## OpenAPI

````yaml ko/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입니다. x-api-key 헤더로 인증합니다.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/analytics/:
    get:
      tags:
        - Analytics
      summary: 애플리케이션 분석 조회
      description: >-
        지정된 날짜 범위 동안 Business Console [분석
        대시보드](https://docs.didit.me/ko/console/analytics)의 기반 데이터를 조회합니다.
        `scope` 및 `widget_keys`가 없으면 응답은 사용자 인증(KYC)
        요약(`ApplicationAnalyticsSummary`)입니다: 일일 세션 수, 상태별 합계, 전환율, 동일한 길이의 이전
        기간 수치, 위치, 인구 통계, 기기, 워크플로 퍼널, 활성 인증 시간, 재제출, 경고 및 시계열 데이터가 포함됩니다.
        `scope` 또는 `widget_keys`가 있으면 하나의 대시보드 탭
        위젯(`ApplicationAnalyticsWidgetResponse`)이 반환됩니다: `kyc`, `kyb`,
        `transactions` 또는 `home`.


        세션 수는 세션 생성 날짜(UTC) 기준이며 각 세션의 현재 상태를 반영합니다. 백그라운드에서 갱신되는 일일 롤업 데이터를
        바탕으로 하므로 가장 최근 활동이 표시되는 데 약간의 시간이 걸릴 수 있습니다. 유효하지 않은 워크플로 ID 및 버전은 거부되지
        않고 무시됩니다. 비용은 청구되지 않습니다.


        전체 액세스 API 키만 이 endpoint를 호출할 수 있습니다. 어떤 권한을 보유하든 범위가 지정된 모든 키에는 `403`이
        반환되며, 다른 애플리케이션의 키도 마찬가지입니다. [API
        키](https://docs.didit.me/ko/console/api-keys)를 참고하세요.
      operationId: get_application_analytics
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 조직 UUID입니다.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            애플리케이션 UUID입니다. API 키가 속한 애플리케이션이어야 합니다. 다른 애플리케이션에 사용된 키는 `403`을
            받습니다.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-01'
          description: >-
            조회 기간의 시작일(UTC)로, `YYYY-MM-DD` 형식(포함)입니다. `end_date`와 함께 전송해야 합니다. 둘
            중 하나라도 누락되면 둘 다 무시되고 오늘 기준 30일 전부터 오늘까지로 조회 기간이 설정됩니다.
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-15'
          description: >-
            범위의 마지막 날(`YYYY-MM-DD`, 해당 일자 포함, UTC)입니다. 미래 날짜는 오늘로 간주됩니다. 범위는
            730일을 초과할 수 없습니다.
        - name: scope
          in: query
          required: false
          schema:
            type: string
            enum:
              - home
              - kyc
              - kyb
              - transactions
          description: >-
            위젯을 반환할 대시보드 탭입니다(대소문자 구분 없음). KYC 요약의 경우 `widget_keys`와 함께 생략합니다.
            `widget_keys`만 전송하면 `kyc`로 간주됩니다. `home`은 모든 KYC, KYB 또는 거래 위젯을 허용하며
            애플리케이션에 저장된 홈 레이아웃을 기본값으로 사용합니다.
        - name: widget_keys
          in: query
          required: false
          schema:
            type: string
            example: tx_count_total,tx_count_daily
          description: >-
            쉼표로 구분된 위젯 키 목록으로, 이 순서대로 반환됩니다. 스코프에서 허용하지 않는 키는 제외되며, 유효한 키가 남지
            않으면 해당 스코프의 기본값이 제공됩니다. 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`. Transactions: `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 목록입니다. KYC 요약 및 KYC, KYB 위젯을 해당 워크플로로 제한합니다. UUID가
            아닌 값은 무시되며, 유효한 값이 없으면 필터가 적용되지 않습니다. 요약에서는 `workflow_id`도 사용할 수
            있습니다.
        - name: versions
          in: query
          required: false
          schema:
            type: string
            example: 3,4
          description: >-
            쉼표로 구분된 워크플로 버전 번호 목록입니다. `workflow_ids`와 함께 사용할 때만 적용되며, 정수가 아닌 값은
            무시됩니다. 별칭으로 `version`도 사용할 수 있습니다.
        - name: branch_path_ids
          in: query
          required: false
          schema:
            type: string
            example: default
          description: >-
            쉼표로 구분된 분기 경로 ID. `workflow_ids`와 함께 사용할 때만 적용되며 KYC 수치에만 해당합니다. 현재
            수치는 `default`(모든 경로 합산)에 대해서만 기록되므로 다른 값을 지정하면 빈 수치가 반환됩니다.
            `branch_path_id`는 별칭으로 허용됩니다.
        - name: tag
          in: query
          required: false
          schema:
            type: string
          description: '거래 위젯 전용: 쉼표로 구분된 태그 UUID 또는 태그 이름입니다.'
        - name: transaction_type
          in: query
          required: false
          schema:
            type: string
            example: finance
          description: '거래 위젯 전용: 쉼표로 구분된 거래 카테고리입니다.'
        - name: action_type
          in: query
          required: false
          schema:
            type: string
            example: withdrawal
          description: '거래 위젯 전용: 쉼표로 구분된 작업 유형(대소문자 구분 없음).'
      responses:
        '200':
          description: '`scope` 또는 `widget_keys`가 전송된 경우 KYC 요약 또는 요청된 위젯입니다.'
          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: >-
            날짜 범위 또는 적용 범위가 유효하지 않습니다. 본문은 문제가 발생한 파라미터를 키로 하고 문자열 메시지를 값으로 갖는
            객체입니다.
          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: >-
            API 키가 만료되었습니다. 만료일이 지정되어 생성된 키만 만료될 수 있으며, 해당 날짜 이후에는 이를 사용한 모든 요청에
            `401`이 반환됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            요청이 허용되지 않습니다. `detail`을 확인하십시오. API 키 누락(잘못되었거나 폐기되었거나 만료된 키는 `401`
            수신), 다른 애플리케이션의 키, 모든 범위 지정 키 또는 키의 IP 목록 외부에서의 요청 등이 해당됩니다.
          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: >-
            이 API 키로 분당 600건을 초과하는 GET 요청이 발생했습니다. `Retry-After`에 명시된 시간(초)만큼
            대기한 후 다시 시도하세요.
          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: 현재 1분 기간이 초기화될 때까지 남은 시간(초)입니다.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: 이 예산에서 분당 허용되는 요청 수입니다.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: 현재 윈도우에 남은 요청 수입니다.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: 윈도우가 리셋되는 Unix 시간입니다.
              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: 사용자 인증(KYC) 요약으로, `scope`와 `widget_keys`가 모두 전송되지 않은 경우 반환됩니다.
      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: >-
            해당 범위 내 세션이 있는 첫날부터 `end_date`까지 하루당 하나의 포인트입니다. `grouping_mode` 설정과
            관계없이 항상 일별로 제공됩니다.
        request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        previous_data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
          description: '`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`, 소수점 한 자리입니다. 완료된 항목이 없으면 `null`입니다.
        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: >-
            `*_time_series` 목록이 그룹화되는 방식입니다. 최대 14일까지는 `day`, 90일까지는 `week`, 그
            이상은 `month`입니다. 해당 범위에서 세션이 발생한 첫날부터 측정됩니다.
        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: 대시보드 위젯으로, `scope` 또는 `widget_keys`가 전송되었을 때 반환됩니다.
      required:
        - scope
        - available_widget_keys
        - requested_widget_keys
        - widgets
      properties:
        scope:
          type: string
          enum:
            - home
            - kyc
            - kyb
            - transactions
          description: 대시보드 탭입니다.
        available_widget_keys:
          type: array
          items:
            type: string
          description: 이 범위에서 허용되는 모든 위젯 키입니다.
        requested_widget_keys:
          type: array
          items:
            type: string
          description: '응답된 위젯 키(순서대로): 유효한 `widget_keys` 또는 스코프의 기본값입니다.'
        widgets:
          type: object
          description: 위젯 키별로 키가 지정되며, `requested_widget_keys`의 순서를 따릅니다.
          additionalProperties:
            $ref: '#/components/schemas/ApplicationAnalyticsWidget'
    ApplicationAnalyticsDataPoint:
      type: object
      description: >-
        생성 날짜(UTC) 기준 하루 동안의 세션 수입니다. 각 개수는 세션의 현재 상태를 반영합니다. 이전 기간의 데이터 포인트는
        최소한 필수 필드를 포함합니다.
      required:
        - rounded_date
        - total
        - approved
        - declined
        - canceled
        - pending
      properties:
        rounded_date:
          type: string
          format: date
          description: 날짜, `YYYY-MM-DD`.
        total:
          type: integer
          description: 해당 날짜에 생성된 세션입니다.
        approved:
          type: integer
          description: 그 중 `Approved` 또는 `Kyc Expired` 상태인 세션입니다.
        declined:
          type: integer
          description: '`Declined` 상태의 세션입니다.'
        canceled:
          type: integer
          description: '`Expired` 또는 `Abandoned` 상태의 세션입니다.'
        pending:
          type: integer
          description: '`Not Started`, `In Progress` 또는 `In Review` 상태의 세션입니다.'
        in_review:
          type: integer
          description: '`In Review` 상태의 세션입니다.'
        expired:
          type: integer
          description: '`Expired` 상태의 세션입니다.'
        abandoned:
          type: integer
          description: '`Abandoned` 상태의 세션입니다.'
        in_progress:
          type: integer
          description: '`In Progress` 상태의 세션입니다.'
        not_started:
          type: integer
          description: '`Not Started` 상태의 세션입니다.'
        manually_approved:
          type: integer
          description: 워크플로에서 다른 판정을 내린 후 검토자가 승인한 세션입니다.
        manually_declined:
          type: integer
          description: 워크플로에서 다른 판정을 내린 후 검토자가 거부한 세션입니다.
    ApplicationAnalyticsRequestBreakdown:
      type: object
      description: 해당 범위의 상태 합계입니다. 이전 기간 세부 내역에는 최소한 필수 필드가 포함됩니다.
      required:
        - total_approved
        - total_in_review
        - total_declined
        - total_canceled
        - total_pending
      properties:
        total_approved:
          type: integer
          description: '`Approved` 또는 `Kyc Expired` 상태의 세션입니다.'
        total_in_review:
          type: integer
          description: '`In Review` 상태의 세션입니다.'
        total_declined:
          type: integer
          description: '`Declined` 상태의 세션입니다.'
        total_canceled:
          type: integer
          description: '`Expired` 또는 `Abandoned` 상태의 세션입니다.'
        total_pending:
          type: integer
          description: >-
            `Not Started`, `In Progress` 또는 `In Review` 상태의
            세션입니다(`total_in_review` 포함).
        total_expired:
          type: integer
          description: '`Expired` 상태의 세션입니다.'
        total_abandoned:
          type: integer
          description: '`Abandoned` 상태의 세션입니다.'
        total_in_progress:
          type: integer
          description: '`In Progress` 상태의 세션입니다.'
        total_not_started:
          type: integer
          description: '`Not Started` 상태의 세션입니다.'
        total_manually_approved:
          type: integer
          description: 검토자가 승인함.
        total_manually_declined:
          type: integer
          description: 검토자에 의해 거부됨.
    ApplicationAnalyticsLocationStats:
      type: object
      properties:
        ip_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: 사용자 IP 주소의 국가 목록이며, 세션 수가 가장 많은 순서대로 정렬됩니다.
        countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: '`ip_countries`와 동일한 목록입니다.'
        id_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: 인증된 신분증 문서의 발급 국가 목록이며, 세션 수가 가장 많은 순서로 정렬됩니다.
        conversion_by_country:
          type: array
          description: >-
            문서 발급 국가별: 완료된 세션(승인됨, 거부됨 또는 검토 중) 및 승인된 세션 수입니다. 완료 건수가 가장 많은 순으로
            정렬됩니다.
          items:
            type: object
            properties:
              country:
                type: string
              country_code:
                type: string
              finished:
                type: integer
              approved:
                type: integer
        cities:
          type: array
          description: 최대 100개의 IP 도시 목록이며, 세션 수가 많은 순서대로 정렬됩니다.
          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: 신분증 문서 기준 연령대별 세션입니다. 데이터가 없으면 비어 있습니다.
          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: 문서 성별 코드(`M`, `F` 또는 `U`(알 수 없음))별 세션입니다.
          additionalProperties:
            type: integer
    ApplicationAnalyticsDeviceDetails:
      type: object
      description: 세션 수가 가장 많은 순으로 각각 상위 5개입니다.
      properties:
        device_models:
          type: array
          description: '기기 브랜드: `Apple`, `Android`, `LG`, 기타 나머지는 `Other`로 그룹화됩니다.'
          items:
            type: object
            properties:
              device:
                type: string
              count:
                type: integer
        browsers:
          type: array
          description: >-
            브라우저: `Chrome`, `Safari`, `Didit App`, `Firefox`, 그 외 모든 항목은
            `Other`로 그룹화됩니다.
          items:
            type: object
            properties:
              browser:
                type: string
              count:
                type: integer
        operating_systems:
          type: array
          description: 운영체제입니다.
          items:
            type: object
            properties:
              os:
                type: string
              count:
                type: integer
    ApplicationAnalyticsWorkflowFunnel:
      type: object
      description: >-
        워크플로 ID별로 키가 지정됩니다. `total`은 해당 워크플로에서 시작된 세션 수이며, `steps`는 각 단계(`OCR`,
        `LIVENESS`, `FACE_MATCH`, `AML`, `POA`, `PHONE`, `EMAIL`, `NFC`,
        `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `IP_ANALYSIS`, `AGE_ESTIMATION`,
        `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`)에 도달한 세션 수를 집계합니다. 단계에
        도달한 것이 해당 단계를 통과한 것을 의미하지는 않습니다.
      additionalProperties:
        type: object
        properties:
          total:
            type: integer
          steps:
            type: object
            additionalProperties:
              type: object
              properties:
                reached:
                  type: integer
    ApplicationAnalyticsVerificationTimeStats:
      type: object
      description: 유휴 시간을 제외하고 사용자가 인증에 소비한 실제 활동 시간입니다. 데이터가 없으면 빈 객체입니다.
      properties:
        overall_avg_seconds:
          type: number
          description: 세션당 평균으로, 소수점 한 자리까지 표시됩니다.
        overall_count:
          type: integer
          description: 측정된 세션입니다.
        per_feature:
          type: object
          description: '기능별로 키가 지정됩니다(예: `OCR` 또는 `LIVENESS`).'
          additionalProperties:
            type: object
            properties:
              avg_seconds:
                type: number
              total_seconds:
                type: number
              count:
                type: integer
        per_sub_step:
          type: object
          description: '기능별로 키가 지정된 후 하위 단계별로 지정됩니다(예: `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: 재제출이 없는 완료 세션입니다.
        second:
          type: integer
          description: 1회 재제출된 완료 세션입니다.
        third_plus:
          type: integer
          description: 2회 이상 재제출된 완료 세션입니다.
        abandoned:
          type: integer
          description: 중단된 세션입니다.
    ApplicationAnalyticsWarningStats:
      type: object
      description: >-
        기능별로 키가 지정됩니다(`ID_VERIFICATION`, `LIVENESS`, `FACEMATCH`, `AML`,
        `PROOF_OF_ADDRESS`, `PHONE`, `EMAIL`, `NFC`, `LOCATION`,
        `DATABASE_VALIDATION`, `QUESTIONNAIRE` 및 KYB 기능). `total`은 해당 기능에 도달한 세션
        수이며, `risks`는 경고 코드 및 수준별 세션 수를 집계합니다.
      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: 검토자가 변경하기 전 워크플로의 자동 판정 결과입니다.
      properties:
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsDemographicPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            기간 키: `grouping_mode`에 따라 일의 경우 `YYYY-MM-DD`, 주의 경우 해당 주의 월요일, 월의 경우
            `YYYY-MM`입니다.
        age_distribution:
          type: object
          additionalProperties:
            type: integer
        gender_distribution:
          type: object
          additionalProperties:
            type: integer
    ApplicationAnalyticsDevicePoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            기간 키: `grouping_mode`에 따라 일의 경우 `YYYY-MM-DD`, 주의 경우 해당 주의 월요일, 월의 경우
            `YYYY-MM`입니다.
        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: >-
            기간 키: `grouping_mode`에 따라 일의 경우 `YYYY-MM-DD`, 주의 경우 해당 주의 월요일, 월의 경우
            `YYYY-MM`입니다.
        overall_avg:
          type: number
          description: 세션당 평균 활성 시간(초)입니다.
        per_feature:
          type: object
          description: 기능당 평균 활성 시간(초)입니다.
          additionalProperties:
            type: number
    ApplicationAnalyticsResubmissionPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            기간 키: `grouping_mode`에 따라 일의 경우 `YYYY-MM-DD`, 주의 경우 해당 주의 월요일, 월의 경우
            `YYYY-MM`입니다.
        first_pass:
          type: integer
        second:
          type: integer
        third_plus:
          type: integer
        abandoned:
          type: integer
    ApplicationAnalyticsOriginalStatusPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            기간 키: `grouping_mode`에 따라 일의 경우 `YYYY-MM-DD`, 주의 경우 해당 주의 월요일, 월의 경우
            `YYYY-MM`입니다.
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsWidget:
      type: object
      description: >-
        대시보드 위젯 1개입니다. 모든 위젯에는 `kind` 및 `title`이 있으며, 기타 필드는 `kind`에 따라 달라집니다.
        세션 위젯은 요약 객체(`data_points`, `request_breakdown`, `workflow_funnel_stats`
        등)를 재사용하고, 목록 위젯은 해당 항목을 `items`에 배치하며, 거래 지표는 `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: 위젯 유형입니다.
        title:
          type: string
          description: '표시 제목입니다(예: `Verification volume`).'
        grouping_mode:
          type: string
          enum:
            - day
            - week
            - month
          description: >-
            `*_time_series` 목록이 그룹화되는 방식입니다. 최대 14일까지는 `day`, 90일까지는 `week`, 그
            이상은 `month`입니다. 해당 범위에서 세션이 발생한 첫날부터 측정됩니다.
        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: >-
            목록 위젯의 항목. `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`: `count` 및 `volume`이 포함된 `transaction_type` 또는
            `action_type`, 또는 `tag_id`, `tag_name`, `count`. `leaderboard`:
            `rule_title`, `trigger_count` 또는 `assignee`, `handled_count`,
            `average_processing_seconds`(각각 `approved_percentage`,
            `declined_percentage`, `flagged_percentage` 포함). `histogram`:
            `score`, `count`.
          items:
            type: object
            additionalProperties: {}
        previous_items:
          type: array
          description: '`start_date` 바로 이전의 동일한 길이 기간에 대한 거래 시계열입니다.'
          items:
            type: object
            additionalProperties: {}
        value:
          type: number
          description: '`metric` 위젯: 해당 범위의 수치입니다.'
        currency:
          type: string
          nullable: true
          description: '거래량 및 금액 위젯: 애플리케이션의 기본 거래 통화입니다.'
        thresholds:
          type: object
          description: '`histogram` 위젯: 애플리케이션의 검토 및 거부 점수 임계값입니다.'
          properties:
            review:
              type: integer
            decline:
              type: integer
        search:
          type: object
          description: '`kyb_registry_coverage` 위젯: 등기부 검색 총계입니다.'
          properties:
            searches_total:
              type: integer
            searches_with_no_candidates:
              type: integer
    ApplicationAnalyticsCountryCount:
      type: object
      properties:
        country:
          type: string
          description: 국가명.
        country_code:
          type: string
          description: 두 글자 국가 코드입니다.
        session_count:
          type: integer
          description: 해당 국가의 세션입니다.
  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 를 참고하십시오.

````

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