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

# Webhook 대상 분석 API - 전송 지표 및 실패율 조회

> Didit Management API로 특정 webhook 대상의 전송 총계, 실패율, 응답 시간을 전체 및 UTC 일별로 원하는 기간만큼 조회합니다.



webhook 대상 분석 API 조회 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<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/ko/management-api/webhook/list-deliveries.md)로 목록을 확인하고, [webhook 대상 전송 조회](https://docs.didit.me/ko/management-api/webhook/get-delivery.md)에서 항목 하나를 여십시오.Didit이 자동으로 재시도하는 응답은 [재시도 정책](https://docs.didit.me/ko/integration/webhooks.md#재시도-정책)에 설명되어 있습니다.


## OpenAPI

````yaml ko/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/ko/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: webhook 대상의 UUID입니다(`GET /v3/webhook/destinations/`에서 반환된 `uuid`).
          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 일자당 항목 1개(가장 오래된 항목부터 정렬)입니다. 전송이 없었던 날은 생략되므로
                      차트로 표시할 때는 빈 구간을 0으로 채우세요.
                    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: >-
            속도 제한 초과: 이 API 키의 현재 1분 시간 창에서 600개를 초과하는 GET 요청이 발생했습니다. 재시도하기 전에
            `Retry-After`초 동안 대기하세요.
          headers:
            Retry-After:
              description: 재시도하기 전 대기할 시간(초)입니다.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: 1분 동안 허용되는 요청 수(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: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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