> ## 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 de destino de webhook

> Total de entregas, taxa de falhas e tempos de resposta de um destino de webhook da Didit, no geral e por dia UTC, em qualquer período.



Prompt da API de análise do destino do webhook
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em

Use este endpoint para acompanhar um destino ao longo de um período que você escolher. Para ver as tentativas individuais por trás de uma falha, liste-as com [Listar entregas do destino do webhook](https://docs.didit.me/pt-br/management-api/webhook/list-deliveries.md) e abra uma delas com [Obter entrega do destino do webhook](https://docs.didit.me/pt-br/management-api/webhook/get-delivery.md).As respostas para as quais o Didit tenta novamente de forma automática estão descritas na [política de novas tentativas](https://docs.didit.me/pt-br/integration/webhooks.md#política-de-novas-tentativas).


## OpenAPI

````yaml pt-br/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 verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/destinations/{destination_uuid}/analytics/:
    get:
      tags:
        - Webhook
      summary: Obter as análises do destino do webhook
      description: >-
        Totais de entrega, taxa de falha e tempos de resposta de um destino do
        webhook, no intervalo completo (`summary`) e por dia UTC (`points`).
        Toda tentativa conta como uma entrega: o primeiro envio de um evento,
        cada [nova
        tentativa](https://docs.didit.me/pt-br/integration/webhooks#política-de-novas-tentativas)
        automática e cada reenvio. Uma entrega falha quando o status HTTP
        registrado é 400 ou superior, então timeouts (registrados como `504`) e
        falhas de conexão (`503`) contam como falhas; uma entrega que ainda está
        na fila conta apenas em `total_deliveries`. Os registros de entrega
        ficam disponíveis por cerca de 30 dias. Uma chave de API com escopo
        precisa de `webhooks: read`.
      operationId: get_webhook_destination_analytics
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: >-
            UUID do destino (o `uuid` retornado por `GET
            /v3/webhook/destinations/`).
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
        - name: date_from
          in: query
          required: false
          description: >-
            Primeiro dia UTC a incluir, no formato `YYYY-MM-DD` (inclusive).
            Omita para começar pela entrega mais antiga disponível. `dateFrom` é
            aceito como alias.
          schema:
            type: string
            format: date
          example: '2026-10-01'
        - name: date_to
          in: query
          required: false
          description: >-
            Último dia UTC a incluir, no formato `YYYY-MM-DD` (inclusivo). Não
            pode ser anterior a `date_from`. `dateTo` é aceito como alias.
          schema:
            type: string
            format: date
          example: '2026-10-16'
      responses:
        '200':
          description: Estatísticas de entrega do destino.
          content:
            application/json:
              schema:
                type: object
                required:
                  - summary
                  - points
                properties:
                  summary:
                    type: object
                    description: Totais no intervalo solicitado.
                    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: Tentativas de entrega, incluindo as que estão na fila.
                      failed_deliveries:
                        type: integer
                        minimum: 0
                        description: >-
                          Tentativas cujo status HTTP registrado é 400 ou
                          superior.
                      min_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Tentativa mais rápida em milissegundos, ou `null`
                          quando nenhuma tentativa tem tempo registrado.
                      avg_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Tempo médio por tentativa em milissegundos,
                          arredondado, ou `null` quando nenhuma tentativa tem
                          tempo registrado.
                      max_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Tentativa mais lenta em milissegundos, ou `null`
                          quando nenhuma tentativa tem tempo registrado.
                      error_rate_percentage:
                        type: integer
                        minimum: 0
                        maximum: 100
                        description: >-
                          `failed_deliveries` / `total_deliveries` x 100,
                          arredondado para um número inteiro. `0` quando não há
                          entregas.
                  points:
                    type: array
                    description: >-
                      Uma entrada por dia UTC que teve entregas, da mais antiga
                      para a mais recente. Os dias sem entregas são omitidos,
                      então preencha as lacunas com zeros ao montar gráficos.
                    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 em UTC, `YYYY-MM-DD`.
                        total_deliveries:
                          type: integer
                          minimum: 0
                          description: >-
                            Tentativas de entrega, incluindo as que estão na
                            fila.
                        failed_deliveries:
                          type: integer
                          minimum: 0
                          description: >-
                            Tentativas cujo status HTTP registrado é 400 ou
                            superior.
                        min_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Tentativa mais rápida em milissegundos, ou `null`
                            quando nenhuma tentativa tem tempo registrado.
                        avg_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Tempo médio por tentativa em milissegundos,
                            arredondado, ou `null` quando nenhuma tentativa tem
                            tempo registrado.
                        max_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Tentativa mais lenta em milissegundos, ou `null`
                            quando nenhuma tentativa tem tempo registrado.
              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` ou `date_to` não é uma data `YYYY-MM-DD`, ou `date_to` é
            anterior a `date_from`.
          content:
            application/json:
              schema:
                type: object
                description: Cada campo inválido mapeado para uma lista de mensagens.
                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: >-
            A chave de API expirou: ela foi criada com uma data de validade que
            já passou. Uma chave incorreta ou revogada também recebe `401`; uma
            chave ausente recebe `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            A requisição não é permitida. Um `x-api-key` ausente, inválido ou
            revogado recebe `You do not have permission to perform this action.`
            Uma chave com escopo sem o acesso exigido por este endpoint recebe
            uma mensagem que indica o acesso ausente, e uma chave usada de fora
            da sua lista de IPs permitidos recebe `This API key can't be used
            from this IP address.`
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              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: >-
            Não existe nenhum destino com este UUID para a aplicação, ou ele foi
            excluído.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Destination not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: >-
            Limite de requisições excedido: mais de 600 requisições GET na
            janela atual de um minuto para esta chave de API. Aguarde
            `Retry-After` segundos antes de tentar novamente.
          headers:
            Retry-After:
              description: Segundos de espera antes de tentar novamente.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: Requisições permitidas na janela de um minuto (600).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: Requisições restantes na janela atual.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: Horário Unix (segundos) em que a janela atual é reiniciada.
              schema:
                type: integer
                example: 1792056120
            X-RateLimit-Scope:
              description: Nome do orçamento que foi excedido.
              schema:
                type: string
                example: generic-get
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              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: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, 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á errada, 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 a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

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