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

# Didit 应用分析 API：查询验证数据指标

> 通过 Didit 按日期范围读取应用的验证分析数据，包括 KYC 会话总数、转化率、漏斗，以及 KYB 和交易监控仪表板组件数据。



获取应用分析 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/zh/console/analytics.md)的数据。它有两种响应格式：| 您的请求 | 您获得的结果 |
| - | - |
| 既不包含 `scope`，也不包含 `widget_keys` | 所选时间范围内的用户验证（KYC）汇总 |
| 包含 `scope`、`widget_keys`，或两者都包含 | 某一标签页的仪表板组件：`kyc`、`kyb`、`transactions` 或 `home`（三者可任意组合） |每个组件都包含 `kind` 和 `title`，其余字段取决于组件的类型。先只发送一次 `scope`（不带 `widget_keys`），以读取 `available_widget_keys`，然后只请求所需的组件。> [!NOTE]
>
> 只有具备完全访问权限的 API 密钥才能调用此端点。权限受限的密钥无论拥有何种访问权限，都会收到 `403`，其他应用的密钥也是如此。详见 [API 密钥](https://docs.didit.me/zh/console/api-keys.md)。## 相关内容- [按小时查看今日验证](https://docs.didit.me/zh/management-api/analytics/today-by-hour.md)
- [分析仪表板](https://docs.didit.me/zh/console/analytics.md)
- [API 密钥与权限受限访问](https://docs.didit.me/zh/console/api-keys.md)


## OpenAPI

````yaml zh/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/zh/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/zh/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: >-
            范围的起始日期，格式为 `YYYY-MM-DD`，含当日（UTC）。须与 `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: >-
            要返回微件的仪表板标签页（不区分大小写）。与 `widget_keys` 一同省略时，返回 KYC 摘要。仅发送
            `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`。交易：`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: KYC 摘要，或者当发送了 `scope` 或 `widget_keys` 时请求的微件。
          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 密钥的 GET 请求每分钟超过 600 次。请等待 `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: 距离当前一分钟窗口重置的秒数。
              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: 各项的前五名，会话数最多的排在前面。
      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: 重新提交过一次的已结束会话。
        third_plus:
          type: integer
          description: 重新提交过两次或以上的已结束会话。
        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: >-
        一个仪表板小组件。每个小组件都包含 `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: >-
        您的应用 API 密钥，可在 Business Console 的“开发者 -> API
        密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域：针对每个资源设为无权限、只读或读写，限定于特定工作流或已通过的会话、限定于
        IP 地址列表，以及设置到期日期。401 表示密钥错误、已撤销或已过期；403 表示未发送密钥、密钥无权访问该资源或操作，或请求来自其 IP
        列表之外的地址；在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF
        URL 将为 null；没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅
        https://docs.didit.me/console/api-keys。

````

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