> ## 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 de análise da aplicação

> Consulte as análises da sua aplicação Didit por intervalo de datas: sessões KYC, conversão, funis ou widgets KYB e de transações.



Prompt da API para obter análises da aplicação
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em

O endpoint devolve os números por trás do [painel de análise](https://docs.didit.me/pt/console/analytics.md) da Business Console. Tem duas formas de resposta:| O que envia | O que recebe |
| - | - |
| Nem `scope` nem `widget_keys` | O resumo de verificação de utilizadores (KYC) do intervalo |
| `scope`, `widget_keys` ou ambos | Widgets do painel para um separador: `kyc`, `kyb`, `transactions` ou `home` (qualquer combinação dos três) |Cada widget tem um `kind` e um `title`; os restantes campos dependem do kind. Envie uma vez `scope` sem `widget_keys` para ler `available_widget_keys` e, depois, peça apenas os widgets de que precisa.> [!NOTE]
>
> Só uma chave de API com acesso total pode chamar este endpoint. Uma chave com acesso limitado recebe `403`, independentemente do acesso que tenha, e o mesmo acontece com a chave de outra aplicação. Consulte [Chaves de API](https://docs.didit.me/pt/console/api-keys.md).## Relacionados- [Obter as verificações de hoje por hora](https://docs.didit.me/pt/management-api/analytics/today-by-hour.md)
- [Painel de análise](https://docs.didit.me/pt/console/analytics.md)
- [Chaves de API e acesso limitado](https://docs.didit.me/pt/console/api-keys.md)


## OpenAPI

````yaml pt/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 de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/analytics/:
    get:
      tags:
        - Analytics
      summary: Obter métricas da aplicação
      description: >-
        Consulte os números por detrás do [painel
        analítico](https://docs.didit.me/pt/console/analytics) da Business
        Console para um intervalo de datas. Sem `scope` e `widget_keys`, a
        resposta é o resumo da verificação de utilizadores (KYC)
        (`ApplicationAnalyticsSummary`): contagens diárias de sessões, totais de
        estados, taxa de conversão, os mesmos valores para o período anterior de
        igual duração, localizações, dados demográficos, dispositivos, funis de
        fluxos, tempo de verificação ativo, reenvios, avisos e séries temporais.
        Com `scope` ou `widget_keys`, corresponde aos widgets de um separador do
        painel (`ApplicationAnalyticsWidgetResponse`): `kyc`, `kyb`,
        `transactions` ou `home`.


        As contagens de sessões são feitas pela data de criação da sessão (UTC)
        e refletem o estado atual de cada sessão. Têm origem em consolidações
        diárias atualizadas em segundo plano, pelo que a atividade mais recente
        pode demorar alguns instantes a surgir. Os IDs e versões de fluxos
        inválidos são ignorados em vez de serem rejeitados. Nada é faturado.


        Apenas uma chave de API de acesso total pode chamar este endpoint:
        qualquer chave com âmbito obtém `403`, independentemente do acesso que
        possua, assim como a chave de outra aplicação. Consulte [Chaves de
        API](https://docs.didit.me/pt/console/api-keys).
      operationId: get_application_analytics
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID da organização.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID da aplicação. Deve ser a aplicação à qual a chave de API
            pertence: uma chave usada em qualquer outra aplicação recebe `403`.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-01'
          description: >-
            Primeiro dia do intervalo, `YYYY-MM-DD`, inclusive (UTC). Envie-o
            juntamente com `end_date`: quando algum estiver em falta, ambos são
            ignorados e o intervalo abrange desde 30 dias antes de hoje até
            hoje.
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date
            example: '2026-10-15'
          description: >-
            Último dia do intervalo, `YYYY-MM-DD`, inclusive (UTC). Uma data
            futura conta como hoje. O intervalo não pode exceder 730 dias.
        - name: scope
          in: query
          required: false
          schema:
            type: string
            enum:
              - home
              - kyc
              - kyb
              - transactions
          description: >-
            Separador do painel para o qual devolver widgets (insensível a
            maiúsculas e minúsculas). Omita-o, juntamente com `widget_keys`,
            para o resumo de KYC. Enviar apenas `widget_keys` pressupõe `kyc`.
            `home` aceita qualquer widget de KYC, KYB ou transação e usa por
            predefinição o esquema inicial guardado da aplicação.
        - name: widget_keys
          in: query
          required: false
          schema:
            type: string
            example: tx_count_total,tx_count_daily
          description: >-
            Chaves de widgets separadas por vírgulas, respondidas por esta
            ordem. As chaves não aceites pelo âmbito são ignoradas; se nenhuma
            restar, obtém as predefinições do âmbito. 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`. Transações: `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: >-
            IDs de fluxos separados por vírgulas. Limita o resumo de KYC e os
            widgets de KYC e KYB a esses fluxos. Os valores que não sejam UUIDs
            são ignorados; quando nenhum for válido, o filtro é descartado. O
            resumo também aceita `workflow_id`.
        - name: versions
          in: query
          required: false
          schema:
            type: string
            example: 3,4
          description: >-
            Números de versão do fluxo separados por vírgulas. Aplica-se apenas
            em conjunto com `workflow_ids`; os valores que não sejam números
            inteiros são ignorados. `version` é aceite como alias.
        - name: branch_path_ids
          in: query
          required: false
          schema:
            type: string
            example: default
          description: >-
            IDs de caminhos de ramificação separados por vírgulas. Aplica-se
            apenas em conjunto com `workflow_ids` e apenas a números de KYC. Os
            números são registados atualmente apenas para `default` (todos os
            caminhos combinados), pelo que qualquer outro valor devolve valores
            vazios. `branch_path_id` é aceite como alias.
        - name: tag
          in: query
          required: false
          schema:
            type: string
          description: >-
            Apenas widgets de transações: UUIDs de etiquetas ou nomes de
            etiquetas separados por vírgulas.
        - name: transaction_type
          in: query
          required: false
          schema:
            type: string
            example: finance
          description: >-
            Apenas widgets de transações: categorias de transação separadas por
            vírgulas.
        - name: action_type
          in: query
          required: false
          schema:
            type: string
            example: withdrawal
          description: >-
            Apenas widgets de transações: tipos de ação separados por vírgulas
            (insensível a maiúsculas/minúsculas).
      responses:
        '200':
          description: >-
            O resumo de KYC, ou os widgets solicitados quando `scope` ou
            `widget_keys` é enviado.
          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: >-
            Intervalo de datas ou âmbito inválido. O corpo é um objeto com uma
            chave correspondente ao parâmetro problemático, com uma mensagem de
            texto.
          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: >-
            A chave de API expirou. Apenas uma chave criada com uma data de
            validade pode expirar; após essa data, cada pedido com ela responde
            `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            O pedido não é permitido. Consulte `detail`: uma chave de API em
            falta (uma chave incorreta, revogada ou expirada recebe `401`), uma
            chave de outra aplicação, qualquer chave com âmbito ou um pedido
            efetuado fora da lista de IPs da chave.
          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: >-
            Mais de 600 pedidos GET por minuto com esta chave de API. Aguarde o
            número de segundos indicado em `Retry-After` e tente novamente.
          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: Segundos até que a janela atual de um minuto seja reposta.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Pedidos permitidos por minuto neste orçamento.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Pedidos restantes na janela atual.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Hora Unix em que a janela é reposta.
              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: >-
        Resumo da verificação de utilizadores (KYC), devolvido quando não é
        enviado nem `scope` nem `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: >-
            Um ponto por dia, desde o primeiro dia com sessões no intervalo até
            `end_date`. Sempre diário, independentemente do que indicar
            `grouping_mode`.
        request_breakdown:
          $ref: '#/components/schemas/ApplicationAnalyticsRequestBreakdown'
        previous_data_points:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsDataPoint'
          description: >-
            Pontos diários para o período da mesma duração imediatamente
            anterior 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`, uma casa decimal. `null` quando nada tiver
            terminado.
        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: >-
            Como as listas `*_time_series` são agrupadas: `day` para até 14
            dias, `week` até 90, `month` para períodos superiores. Medido a
            partir do primeiro dia com sessões no intervalo.
        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: Widgets do painel, devolvidos quando `scope` ou `widget_keys` é enviado.
      required:
        - scope
        - available_widget_keys
        - requested_widget_keys
        - widgets
      properties:
        scope:
          type: string
          enum:
            - home
            - kyc
            - kyb
            - transactions
          description: Separador do painel.
        available_widget_keys:
          type: array
          items:
            type: string
          description: Cada chave de widget que este âmbito aceita.
        requested_widget_keys:
          type: array
          items:
            type: string
          description: >-
            As chaves do widget devolvidas na resposta, por ordem: as suas
            `widget_keys` válidas ou as predefinições do âmbito.
        widgets:
          type: object
          description: >-
            Indexado pela chave do widget, pela ordem de
            `requested_widget_keys`.
          additionalProperties:
            $ref: '#/components/schemas/ApplicationAnalyticsWidget'
    ApplicationAnalyticsDataPoint:
      type: object
      description: >-
        Contagens de sessões para um dia, por data de criação (UTC). Cada
        contagem reflete o estado atual da sessão. Os pontos do período anterior
        contêm, pelo menos, os campos obrigatórios.
      required:
        - rounded_date
        - total
        - approved
        - declined
        - canceled
        - pending
      properties:
        rounded_date:
          type: string
          format: date
          description: O dia, `YYYY-MM-DD`.
        total:
          type: integer
          description: Sessões criadas nesse dia.
        approved:
          type: integer
          description: Destas, sessões `Approved` ou `Kyc Expired`.
        declined:
          type: integer
          description: Sessões `Declined`.
        canceled:
          type: integer
          description: Sessões `Expired` ou `Abandoned`.
        pending:
          type: integer
          description: Sessões `Not Started`, `In Progress` ou `In Review`.
        in_review:
          type: integer
          description: Sessões `In Review`.
        expired:
          type: integer
          description: Sessões `Expired`.
        abandoned:
          type: integer
          description: Sessões `Abandoned`.
        in_progress:
          type: integer
          description: Sessões `In Progress`.
        not_started:
          type: integer
          description: Sessões `Not Started`.
        manually_approved:
          type: integer
          description: Sessões que um revisor aprovou após o fluxo ter dado outro veredito.
        manually_declined:
          type: integer
          description: Sessões que um revisor recusou após o fluxo ter dado outro veredito.
    ApplicationAnalyticsRequestBreakdown:
      type: object
      description: >-
        Totais de estado para o intervalo. A discriminação do período anterior
        contém, no mínimo, os campos obrigatórios.
      required:
        - total_approved
        - total_in_review
        - total_declined
        - total_canceled
        - total_pending
      properties:
        total_approved:
          type: integer
          description: Sessões `Approved` ou `Kyc Expired`.
        total_in_review:
          type: integer
          description: Sessões `In Review`.
        total_declined:
          type: integer
          description: Sessões `Declined`.
        total_canceled:
          type: integer
          description: Sessões `Expired` ou `Abandoned`.
        total_pending:
          type: integer
          description: >-
            Sessões `Not Started`, `In Progress` ou `In Review` (inclui
            `total_in_review`).
        total_expired:
          type: integer
          description: Sessões `Expired`.
        total_abandoned:
          type: integer
          description: Sessões `Abandoned`.
        total_in_progress:
          type: integer
          description: Sessões `In Progress`.
        total_not_started:
          type: integer
          description: Sessões `Not Started`.
        total_manually_approved:
          type: integer
          description: Aprovada por um revisor.
        total_manually_declined:
          type: integer
          description: Recusada por um revisor.
    ApplicationAnalyticsLocationStats:
      type: object
      properties:
        ip_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: Países dos endereços dos utilizadores, com mais sessões primeiro.
        countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: A mesma lista que `ip_countries`.
        id_countries:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationAnalyticsCountryCount'
          description: >-
            Países emissores dos documentos de identificação verificados, com
            mais sessões primeiro.
        conversion_by_country:
          type: array
          description: >-
            Por país emissor do documento: sessões terminadas (aprovada,
            recusada ou em análise) e quantas foram aprovadas. As que têm mais
            sessões terminadas aparecem primeiro.
          items:
            type: object
            properties:
              country:
                type: string
              country_code:
                type: string
              finished:
                type: integer
              approved:
                type: integer
        cities:
          type: array
          description: Até 100 cidades de IP, com as cidades com mais sessões primeiro.
          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: >-
            Sessões por faixa etária a partir do documento de identificação.
            Vazio quando não existem dados.
          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: >-
            Sessões por código de género do documento: `M`, `F` ou `U`
            (desconhecido).
          additionalProperties:
            type: integer
    ApplicationAnalyticsDeviceDetails:
      type: object
      description: Os cinco principais de cada, primeiro as sessões mais frequentes.
      properties:
        device_models:
          type: array
          description: >-
            Marcas de dispositivos: `Apple`, `Android`, `LG`, tudo o resto
            agrupado como `Other`.
          items:
            type: object
            properties:
              device:
                type: string
              count:
                type: integer
        browsers:
          type: array
          description: >-
            Navegadores: `Chrome`, `Safari`, `Didit App`, `Firefox`, com todos
            os outros agrupados como `Other`.
          items:
            type: object
            properties:
              browser:
                type: string
              count:
                type: integer
        operating_systems:
          type: array
          description: Sistemas operativos.
          items:
            type: object
            properties:
              os:
                type: string
              count:
                type: integer
    ApplicationAnalyticsWorkflowFunnel:
      type: object
      description: >-
        Indexado por ID do fluxo. `total` representa as sessões iniciadas nesse
        fluxo; `steps` contabiliza as sessões que alcançaram cada passo (`OCR`,
        `LIVENESS`, `FACE_MATCH`, `AML`, `POA`, `PHONE`, `EMAIL`, `NFC`,
        `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `IP_ANALYSIS`, `AGE_ESTIMATION`,
        `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`). Alcançar um passo
        não significa concluí-lo.
      additionalProperties:
        type: object
        properties:
          total:
            type: integer
          steps:
            type: object
            additionalProperties:
              type: object
              properties:
                reached:
                  type: integer
    ApplicationAnalyticsVerificationTimeStats:
      type: object
      description: >-
        Tempo ativo que os utilizadores passaram a verificar-se, ignorando
        intervalos de inatividade. Um objeto vazio quando não existem dados.
      properties:
        overall_avg_seconds:
          type: number
          description: Média por sessão, uma casa decimal.
        overall_count:
          type: integer
          description: Sessões medidas.
        per_feature:
          type: object
          description: Indexado por funcionalidade, por exemplo `OCR` ou `LIVENESS`.
          additionalProperties:
            type: object
            properties:
              avg_seconds:
                type: number
              total_seconds:
                type: number
              count:
                type: integer
        per_sub_step:
          type: object
          description: >-
            Indexado por funcionalidade e depois por subpasso, por exemplo
            `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: Sessões concluídas sem nenhum reenvio.
        second:
          type: integer
          description: Sessões concluídas reenviadas uma vez.
        third_plus:
          type: integer
          description: Sessões concluídas reenviadas duas ou mais vezes.
        abandoned:
          type: integer
          description: Sessões abandonadas.
    ApplicationAnalyticsWarningStats:
      type: object
      description: >-
        Indexado por funcionalidade (`ID_VERIFICATION`, `LIVENESS`, `FACEMATCH`,
        `AML`, `PROOF_OF_ADDRESS`, `PHONE`, `EMAIL`, `NFC`, `LOCATION`,
        `DATABASE_VALIDATION`, `QUESTIONNAIRE` e as funcionalidades de KYB).
        `total` representa as sessões que alcançaram a funcionalidade; `risks`
        contabiliza as sessões por código e nível de aviso.
      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: O veredicto automático do fluxo, antes de qualquer revisor o alterar.
      properties:
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsDemographicPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chave do período: `YYYY-MM-DD` para um dia, a segunda-feira de uma
            semana ou `YYYY-MM` para um mês, consoante o `grouping_mode`.
        age_distribution:
          type: object
          additionalProperties:
            type: integer
        gender_distribution:
          type: object
          additionalProperties:
            type: integer
    ApplicationAnalyticsDevicePoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chave do período: `YYYY-MM-DD` para um dia, a segunda-feira de uma
            semana ou `YYYY-MM` para um mês, consoante o `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: >-
            Chave do período: `YYYY-MM-DD` para um dia, a segunda-feira de uma
            semana ou `YYYY-MM` para um mês, consoante o `grouping_mode`.
        overall_avg:
          type: number
          description: Média de segundos ativos por sessão.
        per_feature:
          type: object
          description: Média de segundos ativos por funcionalidade.
          additionalProperties:
            type: number
    ApplicationAnalyticsResubmissionPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chave do período: `YYYY-MM-DD` para um dia, a segunda-feira de uma
            semana ou `YYYY-MM` para um mês, consoante o `grouping_mode`.
        first_pass:
          type: integer
        second:
          type: integer
        third_plus:
          type: integer
        abandoned:
          type: integer
    ApplicationAnalyticsOriginalStatusPoint:
      type: object
      properties:
        date:
          type: string
          description: >-
            Chave do período: `YYYY-MM-DD` para um dia, a segunda-feira de uma
            semana ou `YYYY-MM` para um mês, consoante o `grouping_mode`.
        approved:
          type: integer
        in_review:
          type: integer
        declined:
          type: integer
    ApplicationAnalyticsWidget:
      type: object
      description: >-
        Um widget do painel. Todos os widgets têm `kind` e `title`; os outros
        campos dependem de `kind`. Os widgets de sessão reutilizam os objetos de
        resumo (`data_points`, `request_breakdown`, `workflow_funnel_stats`,
        entre outros); os widgets de lista colocam as suas entradas em `items`;
        as métricas de transações utilizam `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 de widget.
        title:
          type: string
          description: Título de apresentação, por exemplo `Verification volume`.
        grouping_mode:
          type: string
          enum:
            - day
            - week
            - month
          description: >-
            Como as listas `*_time_series` são agrupadas: `day` para até 14
            dias, `week` até 90, `month` para períodos superiores. Medido a
            partir do primeiro dia com sessões no intervalo.
        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: >-
            Entradas de um widget de lista. `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` ou
            `action_type` com `count` e `volume`, ou `tag_id`, `tag_name`,
            `count`. `leaderboard`: `rule_title`, `trigger_count` ou `assignee`,
            `handled_count`, `average_processing_seconds`, cada um com
            `approved_percentage`, `declined_percentage`, `flagged_percentage`.
            `histogram`: `score`, `count`.
          items:
            type: object
            additionalProperties: {}
        previous_items:
          type: array
          description: >-
            Série temporal de transações para o período com a mesma duração
            imediatamente anterior a `start_date`.
          items:
            type: object
            additionalProperties: {}
        value:
          type: number
          description: 'widgets `metric`: o valor para o intervalo.'
        currency:
          type: string
          nullable: true
          description: >-
            Widgets de volume e montante de transações: a moeda de transação
            predefinida da aplicação.
        thresholds:
          type: object
          description: >-
            widget `histogram`: os limiares de pontuação de revisão e de recusa
            da aplicação.
          properties:
            review:
              type: integer
            decline:
              type: integer
        search:
          type: object
          description: 'widget `kyb_registry_coverage`: totais de pesquisa de registo.'
          properties:
            searches_total:
              type: integer
            searches_with_no_candidates:
              type: integer
    ApplicationAnalyticsCountryCount:
      type: object
      properties:
        country:
          type: string
          description: Nome do país.
        country_code:
          type: string
          description: Código de país de duas letras.
        session_count:
          type: integer
          description: Sessões desse país.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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