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

# Analítica de destinació de webhook API

> Totals d'entregues, taxa d'errors i temps de resposta d'una destinació de webhook de Didit, globals i per dia UTC, en qualsevol interval.



Prompt de l'API per obtenir l'analítica de la destinació del webhook
        Copia el prompt al porta-retalls



      
      

\<pre>

\`Read delivery statistics for one Didit webhook destination through the Management API.

Endpoint:
GET https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/analytics/

Authentication:
Use the x-api-key header with my Didit API key. A scoped API key needs webhooks: read.

Goal:
\- Measure how reliably and how fast my endpoint accepts webhooks, to alert on failures or chart delivery health.

Path parameter:
\- destination_uuid: the destination uuid from GET /v3/webhook/destinations/.

Query parameters (optional):
\- date_from, date_to: UTC days as YYYY-MM-DD, both inclusive. Without them, every delivery of the destination is included. Delivery records are available for about 30 days, so no range reaches further back.

Behavior:
\- summary: total_deliveries, failed_deliveries, error_rate_percentage (whole number, 0 when there are no deliveries), min_response_time_ms, avg_response_time_ms, max_response_time_ms (null when there is no data). A delivery not attempted yet counts in total_deliveries, never in failed_deliveries, and has no response time.
\- points: one entry per UTC day that had deliveries, oldest first, with the same counters plus date. Days without deliveries are omitted, so fill the gaps with zeros when you chart them.
\- Every attempt counts: the first send of an event, each automatic retry and each resend.
\- Failed means HTTP 400 or above. A timeout is recorded as 504 and a connection failure as 503, so both count as failed.

Example call:
curl -X GET "https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/analytics/?date_from=2026-05-01&date_to=2026-05-31" \
-H "x-api-key: YOUR_API_KEY"

Failure modes:
\- 400: { "date_from": ["Date has wrong format. Use one of these formats instead: YYYY-MM-DD."] } or { "date_to": ["date_to must be greater than or equal to date_from."] }
\- 401: { "detail": "This API key has expired." }
\- 403: { "detail": "You do not have permission to perform this action." } or { "detail": "This API key has no read access to webhooks." }
\- 404: { "detail": "Webhook destination not found." }
\- 429: more than 600 GET requests per minute with this key; wait for Retry-After.

Side effects: none. This is a pure read.

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

\</pre>



      
      

Enganxa a

Fes servir aquest endpoint per supervisar una destinació durant un període que tu triïs. Per veure els intents individuals associats a un error, llista'ls amb [Llista els lliuraments de la destinació del webhook](https://docs.didit.me/ca/management-api/webhook/list-deliveries.md) i obre'n un amb [Obtén un lliurament de la destinació del webhook](https://docs.didit.me/ca/management-api/webhook/get-delivery.md).Les respostes que Didit reintenta automàticament es descriuen a la [política de reintents](https://docs.didit.me/ca/integration/webhooks.md#política-de-reintents).


## OpenAPI

````yaml ca/openapi-25.json GET /v3/webhook/destinations/{destination_uuid}/analytics/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificació d'identitat. Autentica't amb la capçalera x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/destinations/{destination_uuid}/analytics/:
    get:
      tags:
        - Webhook
      summary: Obtenir les analítiques de la destinació del webhook
      description: >-
        Totals de lliuraments, taxa d'errors i temps de resposta per a una
        destinació del webhook, al llarg de tot el rang (`summary`) i per dia
        UTC (`points`). Cada intent compta com a lliurament: el primer enviament
        d'un esdeveniment, cada
        [reintent](https://docs.didit.me/ca/integration/webhooks#política-de-reintents)
        automàtic i cada reenviament. Un lliurament es considera fallit quan el
        seu estat HTTP registrat és 400 o superior, de manera que els temps
        d'espera esgotats (registrats com a `504`) i els errors de connexió
        (`503`) compten com a fallits; un lliurament que encara està a la cua
        només compta en `total_deliveries`. Els registres de lliurament estan
        disponibles durant uns 30 dies. Una clau d'API amb àmbit necessita
        `webhooks: read`.
      operationId: get_webhook_destination_analytics
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: >-
            UUID de la destinació (el `uuid` retornat per `GET
            /v3/webhook/destinations/`).
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
        - name: date_from
          in: query
          required: false
          description: >-
            Primer dia UTC a incloure, en format `YYYY-MM-DD` (inclusiu).
            Omet-ho per començar des del lliurament més antic disponible.
            S'accepta `dateFrom` com a àlies.
          schema:
            type: string
            format: date
          example: '2026-10-01'
        - name: date_to
          in: query
          required: false
          description: >-
            Últim dia UTC a incloure, com a `YYYY-MM-DD` (inclusiu). No pot ser
            anterior a `date_from`. S'accepta `dateTo` com a àlies.
          schema:
            type: string
            format: date
          example: '2026-10-16'
      responses:
        '200':
          description: Estadístiques de lliurament per a la destinació.
          content:
            application/json:
              schema:
                type: object
                required:
                  - summary
                  - points
                properties:
                  summary:
                    type: object
                    description: Totals durant l'interval sol·licitat.
                    required:
                      - total_deliveries
                      - failed_deliveries
                      - min_response_time_ms
                      - avg_response_time_ms
                      - max_response_time_ms
                      - error_rate_percentage
                    properties:
                      total_deliveries:
                        type: integer
                        minimum: 0
                        description: >-
                          Intents de lliurament, inclosos els que estan a la
                          cua.
                      failed_deliveries:
                        type: integer
                        minimum: 0
                        description: >-
                          Intents amb un codi d'estat HTTP registrat de 400 o
                          superior.
                      min_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Intent més ràpid en mil·lisegons, o `null` si cap
                          intent té un temps registrat.
                      avg_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Temps mitjà per intent en mil·lisegons, arrodonit, o
                          `null` quan cap intent té un temps registrat.
                      max_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          L'intent més lent en mil·lisegons, o `null` quan cap
                          intent té un temps registrat.
                      error_rate_percentage:
                        type: integer
                        minimum: 0
                        maximum: 100
                        description: >-
                          `failed_deliveries` / `total_deliveries` x 100,
                          arrodonit a un nombre enter. `0` quan no hi ha
                          lliuraments.
                  points:
                    type: array
                    description: >-
                      Una entrada per dia UTC que hagi tingut lliuraments, el
                      més antic primer. Els dies sense lliuraments s'ometen,
                      així que omple els buits amb zeros quan els representis
                      gràficament.
                    items:
                      type: object
                      required:
                        - date
                        - total_deliveries
                        - failed_deliveries
                        - min_response_time_ms
                        - avg_response_time_ms
                        - max_response_time_ms
                      properties:
                        date:
                          type: string
                          format: date
                          description: Dia UTC, `YYYY-MM-DD`.
                        total_deliveries:
                          type: integer
                          minimum: 0
                          description: >-
                            Intents de lliurament, inclosos els que estan a la
                            cua.
                        failed_deliveries:
                          type: integer
                          minimum: 0
                          description: >-
                            Intents amb un codi d'estat HTTP registrat de 400 o
                            superior.
                        min_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Intent més ràpid en mil·lisegons, o `null` si cap
                            intent té un temps registrat.
                        avg_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Temps mitjà per intent en mil·lisegons, arrodonit, o
                            `null` quan cap intent té un temps registrat.
                        max_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            L'intent més lent en mil·lisegons, o `null` quan cap
                            intent té un temps registrat.
              examples:
                Three days of deliveries:
                  value:
                    summary:
                      total_deliveries: 1250
                      failed_deliveries: 12
                      min_response_time_ms: 38
                      avg_response_time_ms: 164
                      max_response_time_ms: 5004
                      error_rate_percentage: 1
                    points:
                      - date: '2026-10-14'
                        total_deliveries: 410
                        failed_deliveries: 0
                        min_response_time_ms: 38
                        avg_response_time_ms: 152
                        max_response_time_ms: 911
                      - date: '2026-10-15'
                        total_deliveries: 395
                        failed_deliveries: 12
                        min_response_time_ms: 41
                        avg_response_time_ms: 190
                        max_response_time_ms: 5004
                      - date: '2026-10-16'
                        total_deliveries: 445
                        failed_deliveries: 0
                        min_response_time_ms: 40
                        avg_response_time_ms: 151
                        max_response_time_ms: 1220
                No deliveries in range:
                  value:
                    summary:
                      total_deliveries: 0
                      failed_deliveries: 0
                      min_response_time_ms: null
                      avg_response_time_ms: null
                      max_response_time_ms: null
                      error_rate_percentage: 0
                    points: []
        '400':
          description: >-
            `date_from` o `date_to` no és una data `YYYY-MM-DD`, o `date_to` és
            anterior a `date_from`.
          content:
            application/json:
              schema:
                type: object
                description: Cada camp no vàlid associat a una llista de missatges.
                additionalProperties:
                  type: array
                  items:
                    type: string
              examples:
                Malformed date:
                  value:
                    date_from:
                      - >-
                        Date has wrong format. Use one of these formats instead:
                        YYYY-MM-DD.
                Reversed range:
                  value:
                    date_to:
                      - date_to must be greater than or equal to date_from.
        '401':
          description: >-
            La clau d'API ha caducat: es va crear amb una data de caducitat que
            ja ha passat. Una clau incorrecta o revocada també rep `401`; si
            falta la clau, es rep `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Missatge d'error fàcil de llegir.
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            La sol·licitud no està permesa. Si falta la `x-api-key`, o bé és
            invàlida o revocada, es rep `You do not have permission to perform
            this action.` Una clau amb àmbit que no tingui l'accés que aquest
            endpoint necessita rep un missatge indicant l'accés que falta, i una
            clau utilitzada des de fora de la seva llista d'adreces IP permeses
            rep `This API key can't be used from this IP address.`
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Missatge d'error fàcil de llegir.
              examples:
                Missing or invalid key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without webhooks read:
                  value:
                    detail: This API key has no read access to webhooks.
                Outside the IP allowlist:
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            No existeix cap destinació amb aquest UUID per a l'aplicació, o s'ha
            suprimit.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Missatge d'error fàcil de llegir.
              examples:
                Destination not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: >-
            S'ha superat el límit de freqüència: més de 600 sol·licituds GET en
            la finestra d'un minut actual per a aquesta clau d'API. Espera els
            segons indicats a `Retry-After` abans de reintentar.
          headers:
            Retry-After:
              description: Segons que cal esperar abans de reintentar.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: Sol·licituds permeses a la finestra d'un minut (600).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: Sol·licituds restants a la finestra actual.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: Temps Unix (segons) en què es reinicia la finestra actual.
              schema:
                type: integer
                example: 1792056120
            X-RateLimit-Scope:
              description: Nom del pressupost que s'ha superat.
              schema:
                type: string
                example: generic-get
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Missatge d'error fàcil de llegir.
              examples:
                Throttled:
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/analytics/?date_from=2026-10-01&date_to=2026-10-16'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.webhooks.destinations.retrieve_analytics(
                "11111111-2222-3333-4444-555555555555",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.webhooks.destinations.retrieveAnalytics("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.RetrieveAnalytics(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsRetrieveAnalyticsParams{})\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 client = new Didit();


            var result =
            client.webhooks().destinations().retrieveAnalytics("11111111-2222-3333-4444-555555555555");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->webhooks->destinations->retrieveAnalytics('11111111-2222-3333-4444-555555555555');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.webhooks.destinations.retrieve_analytics("11111111-2222-3333-4444-555555555555")

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Webhooks.Destinations.RetrieveAnalyticsAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clau d'API de la teva aplicació, des de Developers -> API keys a la
        Business Console. La clau primària té accés complet. Una clau amb nom
        pot tenir l'abast limitat: cap, lectura o escriptura per recurs,
        limitada a determinats fluxos de treball o a sessions aprovades, a una
        llista d'adreces IP i a una data de caducitat. 401 significa que la clau
        és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap
        clau, que la clau no té accés a aquest recurs o acció, o que la
        sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una
        ruta de sessió significa que la sessió està fora dels fluxos de treball
        o estats de la clau. Una clau sense accés a fitxers multimèdia rep els
        URL d'imatge, vídeo i PDF com a null, i una clau sense permís
        d'escriptura de sessions rep els enllaços de sessió i els tokens com a
        null. Consulta https://docs.didit.me/console/api-keys.

````

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