> ## 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 аналитики адреса назначения webhook

> Итоги доставки, доля ошибок и время ответа для одного адреса назначения webhook в Didit: за всё время и по дням UTC за любой период.



Промпт API для получения аналитики адреса назначения webhook
        Скопировать промпт в буфер обмена



      
      

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



      
      

Вставьте в

Используйте этот endpoint, чтобы отслеживать адрес назначения за выбранный вами период. Чтобы увидеть отдельные попытки, приведшие к сбою, получите их список через [Список доставок адреса назначения webhook](https://docs.didit.me/ru/management-api/webhook/list-deliveries.md) и откройте нужную через [Получение доставки адреса назначения webhook](https://docs.didit.me/ru/management-api/webhook/get-delivery.md).О том, для каких ответов Didit автоматически выполняет повторную попытку, рассказано в [политике повторных попыток](https://docs.didit.me/ru/integration/webhooks.md#политика-повторных-попыток).


## OpenAPI

````yaml ru/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 верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/destinations/{destination_uuid}/analytics/:
    get:
      tags:
        - Webhook
      summary: Получить аналитику адреса назначения webhook
      description: >-
        Общие показатели доставки, доля неудачных доставок и время ответа для
        одного адреса назначения webhook за весь диапазон (`summary`) и по дням
        UTC (`points`). Каждая попытка считается доставкой: первая отправка
        события, каждая автоматическая [повторная
        попытка](https://docs.didit.me/ru/integration/webhooks#политика-повторных-попыток)
        и каждая повторная отправка. Доставка считается неудачной, если
        зафиксированный статус HTTP равен 400 или выше, поэтому таймауты
        (фиксируемые как `504`) и сбои соединения (`503`) считаются неудачными;
        доставка, которая всё ещё находится в очереди, учитывается только в
        `total_deliveries`. Записи о доставке доступны приблизительно в течение
        30 дней. Для API-ключа с ограниченной областью действия требуется
        `webhooks: read`.
      operationId: get_webhook_destination_analytics
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: >-
            UUID адреса назначения webhook (`uuid`, возвращаемый методом `GET
            /v3/webhook/destinations/`).
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
        - name: date_from
          in: query
          required: false
          description: >-
            Первый день по UTC, который нужно включить, в формате `YYYY-MM-DD`
            (включительно). Опустите, чтобы начать с самой ранней доступной
            доставки. В качестве псевдонима принимается `dateFrom`.
          schema:
            type: string
            format: date
          example: '2026-10-01'
        - name: date_to
          in: query
          required: false
          description: >-
            Последний день по UTC для включения в выборку, в формате
            `YYYY-MM-DD` (включительно). Не должен быть раньше `date_from`. В
            качестве псевдонима принимается `dateTo`.
          schema:
            type: string
            format: date
          example: '2026-10-16'
      responses:
        '200':
          description: Статистика доставки для адреса назначения.
          content:
            application/json:
              schema:
                type: object
                required:
                  - summary
                  - points
                properties:
                  summary:
                    type: object
                    description: Итоговые значения за запрошенный диапазон.
                    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: Попытки доставки, включая те, что находятся в очереди.
                      failed_deliveries:
                        type: integer
                        minimum: 0
                        description: >-
                          Попытки, для которых зафиксирован HTTP-статус 400 или
                          выше.
                      min_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Самая быстрая попытка в миллисекундах или `null`, если
                          ни у одной попытки нет зафиксированного времени.
                      avg_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Среднее время попытки в миллисекундах, округлённое,
                          или `null`, если ни у одной попытки нет
                          зафиксированного времени.
                      max_response_time_ms:
                        type: integer
                        nullable: true
                        description: >-
                          Самая медленная попытка в миллисекундах или `null`,
                          если ни у одной попытки нет зафиксированного времени.
                      error_rate_percentage:
                        type: integer
                        minimum: 0
                        maximum: 100
                        description: >-
                          `failed_deliveries` / `total_deliveries` x 100,
                          округлённое до целого числа. `0`, если доставок нет.
                  points:
                    type: array
                    description: >-
                      Одна запись на каждый день по UTC, в который были
                      доставки, начиная с самых старых. Дни без доставок
                      опущены, поэтому при построении графиков заполняйте
                      пропуски нулями.
                    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: День по UTC, `YYYY-MM-DD`.
                        total_deliveries:
                          type: integer
                          minimum: 0
                          description: >-
                            Попытки доставки, включая те, что находятся в
                            очереди.
                        failed_deliveries:
                          type: integer
                          minimum: 0
                          description: >-
                            Попытки, для которых зафиксирован HTTP-статус 400
                            или выше.
                        min_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Самая быстрая попытка в миллисекундах или `null`,
                            если ни у одной попытки нет зафиксированного
                            времени.
                        avg_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Среднее время попытки в миллисекундах, округлённое,
                            или `null`, если ни у одной попытки нет
                            зафиксированного времени.
                        max_response_time_ms:
                          type: integer
                          nullable: true
                          description: >-
                            Самая медленная попытка в миллисекундах или `null`,
                            если ни у одной попытки нет зафиксированного
                            времени.
              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` или `date_to` не являются датой в формате `YYYY-MM-DD`,
            либо `date_to` раньше `date_from`.
          content:
            application/json:
              schema:
                type: object
                description: Каждое некорректное поле, сопоставленное со списком сообщений.
                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: >-
            Срок действия API-ключа истёк: он был создан со сроком действия,
            который уже прошёл. Неверный или отозванный ключ также возвращает
            `401`; отсутствующий ключ возвращает `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Понятное сообщение об ошибке.
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Запрос не разрешён. Отсутствующий, недействительный или отозванный
            `x-api-key` возвращает `You do not have permission to perform this
            action.` Ключ с ограниченной областью действия без требуемых для
            этого endpoint прав возвращает сообщение с указанием недостающих
            разрешений, а ключ, используемый не из разрешённого списка
            IP-адресов, возвращает `This API key can't be used from this IP
            address.`
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Понятное сообщение об ошибке.
              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: >-
            Адреса назначения с таким UUID для этого приложения не существует,
            или он был удален.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Понятное сообщение об ошибке.
              examples:
                Destination not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: >-
            Лимит запросов превышен: более 600 GET-запросов в текущем минутном
            окне для этого API-ключа. Подождите `Retry-After` секунд перед
            повторной попыткой.
          headers:
            Retry-After:
              description: Количество секунд ожидания перед повторной попыткой.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: Количество разрешённых запросов в минутном окне (600).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: Количество оставшихся запросов в текущем окне.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: Unix-время (в секундах), когда текущее окно сбрасывается.
              schema:
                type: integer
                example: 1792056120
            X-RateLimit-Scope:
              description: Название бюджета, который был превышен.
              schema:
                type: string
                example: generic-get
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Понятное сообщение об ошибке.
              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: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

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