> ## 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 analytics di verifica dell'applicazione

> Analytics di verifica della tua applicazione Didit per un intervallo di date: sessioni KYC, conversione, funnel e widget KYB e transazioni.



Ottieni il prompt dell'API di analisi dell'applicazione
        Copia il prompt negli appunti



      
      

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



      
      

Incolla in

L'endpoint restituisce i dati alla base della [dashboard di analisi](https://docs.didit.me/it/console/analytics.md) della Business Console. Ha due formati di risposta:| Invii | Ricevi |
| - | - |
| Né `scope` né `widget_keys` | Il riepilogo della verifica degli utenti (KYC) per l'intervallo |
| `scope`, `widget_keys`, o entrambi | I widget della dashboard per una scheda: `kyc`, `kyb`, `transactions` o `home` (qualsiasi combinazione delle tre) |Ogni widget contiene un `kind` e un `title`; gli altri campi dipendono dal tipo. Invia `scope` senza `widget_keys` una volta per leggere `available_widget_keys`, poi richiedi solo i widget di cui hai bisogno.> [!NOTE]
>
> Solo una chiave API con accesso completo può chiamare questo endpoint. Una chiave con ambito limitato riceve `403` indipendentemente dalle autorizzazioni di cui dispone, e lo stesso vale per una chiave di un'altra applicazione. Vedi [Chiavi API](https://docs.didit.me/it/console/api-keys.md).## Correlati- [Ottieni le verifiche di oggi per ora](https://docs.didit.me/it/management-api/analytics/today-by-hour.md)
- [Dashboard di analisi](https://docs.didit.me/it/console/analytics.md)
- [Chiavi API e accesso con ambito limitato](https://docs.didit.me/it/console/api-keys.md)


## OpenAPI

````yaml it/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 di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/analytics/:
    get:
      tags:
        - Analytics
      summary: Recupera le metriche dell'applicazione
      description: >-
        Legge i dati numerici alla base della [dashboard di
        analisi](https://docs.didit.me/it/console/analytics) della Business
        Console per un intervallo di date. Senza `scope` e `widget_keys`, la
        risposta è il riepilogo della verifica degli utenti (KYC)
        (`ApplicationAnalyticsSummary`): conteggi giornalieri delle sessioni,
        totali per stato, tasso di conversione, le stesse metriche per il
        periodo precedente di pari durata, posizioni geografiche, dati
        demografici, dispositivi, funnel del workflow, tempo attivo di verifica,
        nuovi invii, avvisi e serie temporali. Con `scope` o `widget_keys`,
        restituisce i widget di una specifica scheda della dashboard
        (`ApplicationAnalyticsWidgetResponse`): `kyc`, `kyb`, `transactions` o
        `home`.


        I conteggi delle sessioni sono calcolati in base alla data di creazione
        della sessione (UTC) e riflettono lo stato corrente di ciascuna
        sessione. Provengono da aggregazioni giornaliere aggiornate in
        background, quindi l'attività più recente potrebbe richiedere qualche
        istante per comparire. Gli ID workflow e le versioni non validi vengono
        ignorati anziché rifiutati. Nessun costo viene fatturato.


        Solo una chiave API con accesso completo può chiamare questo endpoint:
        qualsiasi chiave con ambito limitato riceve `403`, indipendentemente dai
        permessi di cui dispone, così come la chiave di un'altra applicazione.
        Consulta [Chiavi API](https://docs.didit.me/it/console/api-keys).
      operationId: get_application_analytics
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID dell'organizzazione.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID dell'applicazione. Deve essere l'applicazione a cui appartiene
            la chiave API: una chiave utilizzata su qualsiasi altra applicazione
            riceve `403`.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-01'
          description: >-
            Primo giorno dell'intervallo, `YYYY-MM-DD`, incluso (UTC). Da
            inviare insieme a `end_date`: se uno dei due manca, entrambi vengono
            ignorati e l'intervallo copre dai 30 giorni precedenti a oggi fino a
            oggi.
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-15'
          description: >-
            Ultimo giorno dell'intervallo, `YYYY-MM-DD`, incluso (UTC). Una data
            futura viene considerata come oggi. L'intervallo non può superare
            730 giorni.
        - name: scope
          in: query
          required: false
          schema:
            type: string
            enum:
              - home
              - kyc
              - kyb
              - transactions
          description: >-
            Scheda della dashboard per cui restituire i widget (senza
            distinzione tra maiuscole e minuscole). Omettila, insieme a
            `widget_keys`, per il riepilogo KYC. L'invio del solo `widget_keys`
            implica `kyc`. `home` accetta qualsiasi widget KYC, KYB o delle
            transazioni e usa come impostazione predefinita il layout della
            schermata iniziale salvato dell'applicazione.
        - name: widget_keys
          in: query
          required: false
          schema:
            type: string
            example: tx_count_total,tx_count_daily
          description: >-
            Chiavi dei widget separate da virgola, restituite in questo ordine.
            Le chiavi non accettate dall'ambito vengono scartate; se non ne
            rimane nessuna, vengono utilizzati i valori predefiniti dell'ambito.
            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`. Transazioni: `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 dei workflow separati da virgola. Limita il riepilogo KYC e i
            widget KYC e KYB a tali workflow. I valori che non sono UUID vengono
            ignorati; se nessuno è valido, il filtro viene ignorato. Il
            riepilogo accetta anche `workflow_id`.
        - name: versions
          in: query
          required: false
          schema:
            type: string
            example: 3,4
          description: >-
            Numeri di versione dei workflow separati da virgola. Si applica solo
            insieme a `workflow_ids`; i valori che non sono numeri interi
            vengono ignorati. `version` è accettato come alias.
        - name: branch_path_ids
          in: query
          required: false
          schema:
            type: string
            example: default
          description: >-
            ID dei percorsi dei rami separati da virgole. Si applica solo
            insieme a `workflow_ids` e solo ai dati KYC. I dati sono attualmente
            registrati solo per `default` (tutti i percorsi combinati), quindi
            qualsiasi altro valore restituisce dati vuoti. `branch_path_id` è
            accettato come alias.
        - name: tag
          in: query
          required: false
          schema:
            type: string
          description: >-
            Solo widget delle transazioni: UUID dei tag o nomi dei tag separati
            da virgole.
        - name: transaction_type
          in: query
          required: false
          schema:
            type: string
            example: finance
          description: >-
            Solo widget delle transazioni: categorie di transazione separate da
            virgole.
        - name: action_type
          in: query
          required: false
          schema:
            type: string
            example: withdrawal
          description: >-
            Solo widget delle transazioni: tipi di azione separati da virgole
            (senza distinzione tra maiuscole e minuscole).
      responses:
        '200':
          description: >-
            Il riepilogo KYC, oppure i widget richiesti quando viene inviato
            `scope` o `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: >-
            Intervallo di date o ambito non valido. Il corpo è un oggetto
            indicizzato per il parametro errato, con un messaggio di tipo
            stringa.
          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: >-
            La chiave API è scaduta. Solo una chiave creata con una data di
            scadenza può scadere; dopo tale data ogni richiesta inviata con essa
            risponde con `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            La richiesta non è consentita. Consulta `detail`: chiave API
            mancante (una chiave errata, revocata o scaduta restituisce `401`),
            chiave di un'altra applicazione, qualsiasi chiave con ambito o una
            richiesta proveniente dall'esterno dell'elenco IP della chiave.
          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: >-
            Più di 600 richieste GET al minuto con questa chiave API. Attendi il
            numero di secondi indicato in `Retry-After`, quindi riprova.
          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: >-
                Secondi fino al ripristino della finestra temporale corrente di
                un minuto.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Richieste consentite al minuto per questo budget.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Richieste rimanenti nell'intervallo corrente.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Ora Unix in cui la finestra si azzera.
              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: >-
        Riepilogo della verifica degli utenti (KYC), restituito quando non
        vengono inviati né `scope` né `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: >-
            Un punto al giorno, dal primo giorno con sessioni nell'intervallo
            fino a `end_date`. Sempre giornaliero, indipendentemente dal valore
            di `grouping_mode`.
        request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        previous_data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
          description: >-
            Punti giornalieri per il periodo della stessa durata immediatamente
            precedente a `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`, con un decimale. `null` se nessuna
            operazione è terminata.
        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: >-
            In che modo sono raggruppati gli elenchi `*_time_series`: `day` fino
            a 14 giorni, `week` fino a 90, `month` oltre. Misurato a partire dal
            primo giorno con sessioni nell'intervallo.
        demographic_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDemographicPoint'
        device_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDevicePoint'
        verification_time_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsVerificationTimePoint'
        resubmission_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsResubmissionPoint'
        original_status_time_series:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsOriginalStatusPoint'
    ApplicationAnalyticsWidgetResponse:
      type: object
      description: >-
        Widget della dashboard, restituiti quando viene inviato `scope` o
        `widget_keys`.
      required:
        - scope
        - available_widget_keys
        - requested_widget_keys
        - widgets
      properties:
        scope:
          type: string
          enum:
            - home
            - kyc
            - kyb
            - transactions
          description: Scheda della dashboard.
        available_widget_keys:
          type: array
          items:
            type: string
          description: Ogni chiave widget accettata da questo ambito.
        requested_widget_keys:
          type: array
          items:
            type: string
          description: >-
            Le chiavi del widget a cui è stata data risposta, in ordine: le tue
            `widget_keys` valide o i valori predefiniti dell'ambito.
        widgets:
          type: object
          description: >-
            Indicizzato per chiave del widget, nell'ordine di
            `requested_widget_keys`.
          additionalProperties:
            $ref: '#/components/schemas/ApplicationAnalyticsWidget'
    ApplicationAnalyticsDataPoint:
      type: object
      description: >-
        Conteggi delle sessioni per un giorno, per data di creazione (UTC).
        Ciascun conteggio riflette lo stato corrente della sessione. I punti del
        periodo precedente contengono almeno i campi obbligatori.
      required:
        - rounded_date
        - total
        - approved
        - declined
        - canceled
        - pending
      properties:
        rounded_date:
          type: string
          format: date
          description: Il giorno, `YYYY-MM-DD`.
        total:
          type: integer
          description: Sessioni create in quel giorno.
        approved:
          type: integer
          description: Di queste, sessioni `Approved` o `Kyc Expired`.
        declined:
          type: integer
          description: Sessioni `Declined`.
        canceled:
          type: integer
          description: Sessioni `Expired` o `Abandoned`.
        pending:
          type: integer
          description: Sessioni `Not Started`, `In Progress` o `In Review`.
        in_review:
          type: integer
          description: Sessioni `In Review`.
        expired:
          type: integer
          description: Sessioni `Expired`.
        abandoned:
          type: integer
          description: Sessioni `Abandoned`.
        in_progress:
          type: integer
          description: Sessioni `In Progress`.
        not_started:
          type: integer
          description: Sessioni `Not Started`.
        manually_approved:
          type: integer
          description: >-
            Sessioni approvate da un revisore dopo che il workflow ha emesso un
            altro verdetto.
        manually_declined:
          type: integer
          description: >-
            Sessioni rifiutate da un revisore dopo che il workflow ha emesso un
            altro verdetto.
    ApplicationAnalyticsRequestBreakdown:
      type: object
      description: >-
        Totali degli stati per l'intervallo. La suddivisione del periodo
        precedente contiene almeno i campi obbligatori.
      required:
        - total_approved
        - total_in_review
        - total_declined
        - total_canceled
        - total_pending
      properties:
        total_approved:
          type: integer
          description: Sessioni `Approved` o `Kyc Expired`.
        total_in_review:
          type: integer
          description: Sessioni `In Review`.
        total_declined:
          type: integer
          description: Sessioni `Declined`.
        total_canceled:
          type: integer
          description: Sessioni `Expired` o `Abandoned`.
        total_pending:
          type: integer
          description: >-
            Sessioni `Not Started`, `In Progress` o `In Review` (include
            `total_in_review`).
        total_expired:
          type: integer
          description: Sessioni `Expired`.
        total_abandoned:
          type: integer
          description: Sessioni `Abandoned`.
        total_in_progress:
          type: integer
          description: Sessioni `In Progress`.
        total_not_started:
          type: integer
          description: Sessioni `Not Started`.
        total_manually_approved:
          type: integer
          description: Approvata da un revisore.
        total_manually_declined:
          type: integer
          description: Rifiutata da un revisore.
    ApplicationAnalyticsLocationStats:
      type: object
      properties:
        ip_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: >-
            Paesi degli indirizzi degli utenti, ordinati per numero decrescente
            di sessioni.
        countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: Stesso elenco di `ip_countries`.
        id_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: >-
            Paesi di emissione dei documenti d'identità verificati, con il
            maggior numero di sessioni per primi.
        conversion_by_country:
          type: array
          description: >-
            Per paese di emissione del documento: sessioni concluse (approvata,
            rifiutata o in revisione) e quante sono state approvate. Ordinate
            per numero di completate decrescente.
          items:
            type: object
            properties:
              country:
                type: string
              country_code:
                type: string
              finished:
                type: integer
              approved:
                type: integer
        cities:
          type: array
          description: Fino a 100 città IP, ordinate a partire da quelle con più sessioni.
          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: >-
            Sessioni per fascia d'età rilevata dal documento d'identità. Vuoto
            in assenza di dati.
          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: >-
            Sessioni per codice di genere del documento: `M`, `F` o `U`
            (sconosciuto).
          additionalProperties:
            type: integer
    ApplicationAnalyticsDeviceDetails:
      type: object
      description: >-
        I primi cinque per ciascuno, ordinati per numero decrescente di
        sessioni.
      properties:
        device_models:
          type: array
          description: >-
            Brand dei dispositivi: `Apple`, `Android`, `LG`, tutti gli altri
            raggruppati come `Other`.
          items:
            type: object
            properties:
              device:
                type: string
              count:
                type: integer
        browsers:
          type: array
          description: >-
            Browser: `Chrome`, `Safari`, `Didit App`, `Firefox`, tutto il resto
            raggruppato come `Other`.
          items:
            type: object
            properties:
              browser:
                type: string
              count:
                type: integer
        operating_systems:
          type: array
          description: Sistemi operativi.
          items:
            type: object
            properties:
              os:
                type: string
              count:
                type: integer
    ApplicationAnalyticsWorkflowFunnel:
      type: object
      description: >-
        Indicizzato per ID del workflow. `total` indica le sessioni avviate su
        quel workflow; `steps` conta le sessioni che hanno raggiunto ciascun
        passaggio (`OCR`, `LIVENESS`, `FACE_MATCH`, `AML`, `POA`, `PHONE`,
        `EMAIL`, `NFC`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `IP_ANALYSIS`,
        `AGE_ESTIMATION`, `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`). Il
        raggiungimento di un passaggio non equivale al suo superamento.
      additionalProperties:
        type: object
        properties:
          total:
            type: integer
          steps:
            type: object
            additionalProperties:
              type: object
              properties:
                reached:
                  type: integer
    ApplicationAnalyticsVerificationTimeStats:
      type: object
      description: >-
        Tempo attivo trascorso dagli utenti durante la verifica, ignorando i
        periodi di inattività. Un oggetto vuoto in assenza di dati.
      properties:
        overall_avg_seconds:
          type: number
          description: Media per sessione, un decimale.
        overall_count:
          type: integer
          description: Sessioni misurate.
        per_feature:
          type: object
          description: Indicizzato per funzionalità, ad esempio `OCR` o `LIVENESS`.
          additionalProperties:
            type: object
            properties:
              avg_seconds:
                type: number
              total_seconds:
                type: number
              count:
                type: integer
        per_sub_step:
          type: object
          description: >-
            Indicizzato per funzionalità, quindi per sotto-passaggio, ad esempio
            `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: Sessioni completate senza nuovo invio.
        second:
          type: integer
          description: Sessioni completate inviate nuovamente una volta.
        third_plus:
          type: integer
          description: Sessioni completate inviate nuovamente due o più volte.
        abandoned:
          type: integer
          description: Sessioni abbandonate.
    ApplicationAnalyticsWarningStats:
      type: object
      description: >-
        Indicizzato per funzionalità (`ID_VERIFICATION`, `LIVENESS`,
        `FACEMATCH`, `AML`, `PROOF_OF_ADDRESS`, `PHONE`, `EMAIL`, `NFC`,
        `LOCATION`, `DATABASE_VALIDATION`, `QUESTIONNAIRE` e le funzionalità
        KYB). `total` indica le sessioni che hanno raggiunto la funzionalità;
        `risks` conta le sessioni per codice e livello di avviso.
      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: >-
        Il verdetto automatico del workflow, prima che qualsiasi revisore lo
        modificasse.
      properties:
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsDemographicPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chiave del periodo: `YYYY-MM-DD` per un giorno, il lunedì di una
            settimana, o `YYYY-MM` per un mese, in base a `grouping_mode`.
        age_distribution:
          type: object
          additionalProperties:
            type: integer
        gender_distribution:
          type: object
          additionalProperties:
            type: integer
    ApplicationAnalyticsDevicePoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chiave del periodo: `YYYY-MM-DD` per un giorno, il lunedì di una
            settimana, o `YYYY-MM` per un mese, in base a `grouping_mode`.
        devices:
          type: object
          additionalProperties:
            type: integer
        browsers:
          type: object
          additionalProperties:
            type: integer
        operating_systems:
          type: object
          additionalProperties:
            type: integer
    ApplicationAnalyticsVerificationTimePoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chiave del periodo: `YYYY-MM-DD` per un giorno, il lunedì di una
            settimana, o `YYYY-MM` per un mese, in base a `grouping_mode`.
        overall_avg:
          type: number
          description: Secondi attivi medi per sessione.
        per_feature:
          type: object
          description: Secondi attivi medi per funzionalità.
          additionalProperties:
            type: number
    ApplicationAnalyticsResubmissionPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chiave del periodo: `YYYY-MM-DD` per un giorno, il lunedì di una
            settimana, o `YYYY-MM` per un mese, in base a `grouping_mode`.
        first_pass:
          type: integer
        second:
          type: integer
        third_plus:
          type: integer
        abandoned:
          type: integer
    ApplicationAnalyticsOriginalStatusPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chiave del periodo: `YYYY-MM-DD` per un giorno, il lunedì di una
            settimana, o `YYYY-MM` per un mese, in base a `grouping_mode`.
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsWidget:
      type: object
      description: >-
        Un widget della dashboard. Ogni widget ha `kind` e `title`; gli altri
        campi dipendono da `kind`. I widget della sessione riutilizzano gli
        oggetti di riepilogo (`data_points`, `request_breakdown`,
        `workflow_funnel_stats` e così via); i widget di tipo elenco inseriscono
        le voci in `items`; le metriche delle transazioni usano `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: Tipo di widget.
        title:
          type: string
          description: Titolo visualizzato, ad esempio `Verification volume`.
        grouping_mode:
          type: string
          enum:
            - day
            - week
            - month
          description: >-
            In che modo sono raggruppati gli elenchi `*_time_series`: `day` fino
            a 14 giorni, `week` fino a 90, `month` oltre. Misurato a partire dal
            primo giorno con sessioni nell'intervallo.
        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: >-
            Voci di un widget a elenco. `country_distribution` (KYC): `country`,
            `country_code`, `session_count`. `conversion_by_country`: `country`,
            `country_code`, `finished`, `approved`. `time_series`: `date`,
            `value`. `status_time_series`: `date`, `approved`, `declined`,
            `flagged`. `breakdown`: `transaction_type` o `action_type` con
            `count` e `volume`, oppure `tag_id`, `tag_name`, `count`.
            `leaderboard`: `rule_title`, `trigger_count` o `assignee`,
            `handled_count`, `average_processing_seconds`, ciascuno con
            `approved_percentage`, `declined_percentage`, `flagged_percentage`.
            `histogram`: `score`, `count`.
          items:
            type: object
            additionalProperties: {}
        previous_items:
          type: array
          description: >-
            Serie temporale delle transazioni per il periodo della stessa durata
            immediatamente precedente a `start_date`.
          items:
            type: object
            additionalProperties: {}
        value:
          type: number
          description: 'Widget `metric`: il valore relativo all''intervallo.'
        currency:
          type: string
          nullable: true
          description: >-
            Widget per volume e importo delle transazioni: valuta predefinita
            delle transazioni dell'applicazione.
        thresholds:
          type: object
          description: >-
            Widget `histogram`: le soglie di punteggio per la revisione e il
            rifiuto dell'applicazione.
          properties:
            review:
              type: integer
            decline:
              type: integer
        search:
          type: object
          description: 'Widget `kyb_registry_coverage`: totali delle ricerche nel registro.'
          properties:
            searches_total:
              type: integer
            searches_with_no_candidates:
              type: integer
    ApplicationAnalyticsCountryCount:
      type: object
      properties:
        country:
          type: string
          description: Nome del paese.
        country_code:
          type: string
          description: Codice paese a due lettere.
        session_count:
          type: integer
          description: Sessioni provenienti da quel paese.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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