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

> Didit의 이벤트 보강 지표 API로 기간별 이벤트 수집 및 IP 보강 카운터를 조회합니다. 캐시 적중률, 고유 IP 비율, 천 건당 신규 조회 수를 확인할 수 있습니다.

이벤트 보강 지표 조회 API 프롬프트
프롬프트를 클립보드에 복사

<pre>
  \`Read the event ingestion and IP-enrichment counters of my Didit application for a period.

  Endpoint:
  GET [https://verification.didit.me/v3/events/enrichment-metrics/?days=30](https://verification.didit.me/v3/events/enrichment-metrics/?days=30)

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

  Goal:

  * Monitor event volume and confirm that IP enrichment is resolved once per unique address rather than once per event, for a usage dashboard or an alert.

  Behavior:

  * days defaults to 30 and is clamped to 1-365; a non-integer value falls back to 30.
  * The period covers today plus the previous days days, by UTC calendar day.
  * Counters are summed over every lane (server, batch and device).
  * The three ratios are null when their denominator is zero.

  Example call:
  curl -X GET "[https://verification.didit.me/v3/events/enrichment-metrics/?days=30](https://verification.didit.me/v3/events/enrichment-metrics/?days=30)" \
  -H "x-api-key: YOUR\_API\_KEY"

  What to read from the response:

  * events\_ingested - new events stored (replays are not counted).
  * events\_rejected - items rejected inside batch requests (a rejected single-event request is not counted).
  * enrichment\_lookups - events whose public IP address was resolved; enrichment\_cache\_hits - answered from the cache; enrichment\_provider\_calls - needed a fresh resolution.
  * enrichment\_skipped\_low\_value - low-value telemetry whose address was not cached; it never triggers a lookup of its own.
  * unique\_ips\_seen - distinct addresses that needed a fresh resolution.
  * cache\_hit\_rate, unique\_ip\_ratio, provider\_calls\_per\_1k\_events - the ratios.
  * period\_days - the period actually applied.

  Failure modes:

  * 401 - the API key has expired.
  * 403 - missing API key (a wrong, revoked or expired key gets 401), or a scoped key without transactions: read.

  Side effects: none. This is a pure read.

  For the full integration shape, see /integration/integration-prompt.\`
</pre>

붙여넣을 곳

Business Console에도 이벤트 목록 위에 같은 수치가 표시됩니다. 저가치 텔레메트리가 다른 이벤트를 통해 이미 주소가 확인된 경우에만 보강을 조회하는 이유는 이벤트 수집 가이드의 [IP 보강](https://docs.didit.me/ko/transaction-monitoring/events.md#ip-보강)을 참고하세요. 보강된 주소가 포함하는 필드는 [IP 보강](https://docs.didit.me/ko/transaction-monitoring/ip-enrichment.md)에서 확인할 수 있습니다.


## OpenAPI

````yaml ko/openapi-25.json GET /v3/events/enrichment-metrics/
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/events/enrichment-metrics/:
    get:
      tags:
        - Monitoring Events
      summary: 이벤트 강화 메트릭 조회
      description: >-
        지정된 기간 동안 애플리케이션의 이벤트 수집 및 IP 강화 카운터를 모든 레인(서버, 배치 및 기기)에 걸쳐 합산하여 반환하므로,
        이벤트 양을 모니터링하고 강화가 이벤트당 한 번이 아닌 고유 주소당 한 번 처리되는지 확인할 수 있습니다. 기간은 오늘과 이전
        `days` 일을 포함하며, UTC 달력 날짜 기준으로 계산됩니다. 분모가 0일 경우 세 가지 비율은 null입니다. 범위가
        지정된 API 키에는 `transactions: read`가 필요합니다. [IP
        강화](https://docs.didit.me/ko/transaction-monitoring/events#ip-보강)를
        참고하십시오.
      operationId: get_monitoring_event_enrichment_metrics
      parameters:
        - name: days
          in: query
          required: false
          description: >-
            기간(일 단위)입니다. 기본값은 30이며, 값은 1에서 365 사이로 제한되고, 정수가 아닌 값은 30으로 대체됩니다.
            적용된 값은 `period_days`로 반환됩니다.
          schema:
            type: integer
            default: 30
            minimum: 1
            maximum: 365
          example: 30
      responses:
        '200':
          description: 해당 기간의 카운터 및 비율입니다.
          content:
            application/json:
              schema:
                type: object
                required:
                  - events_ingested
                  - events_rejected
                  - enrichment_lookups
                  - enrichment_cache_hits
                  - enrichment_provider_calls
                  - enrichment_skipped_low_value
                  - unique_ips_seen
                  - period_days
                  - cache_hit_rate
                  - unique_ip_ratio
                  - provider_calls_per_1k_events
                properties:
                  events_ingested:
                    type: integer
                    description: 새 이벤트가 저장되었습니다. 멱등성 재전송은 계산되지 않습니다.
                  events_rejected:
                    type: integer
                    description: >-
                      배치 요청(서버 및 디바이스 레인) 내에서 거부된 항목 수입니다. 거부된 단일 이벤트 요청은 포함되지
                      않습니다.
                  enrichment_lookups:
                    type: integer
                    description: 캐시 또는 새로 확인하여 공인 IP 주소가 확인된 이벤트입니다.
                  enrichment_cache_hits:
                    type: integer
                    description: 캐시에서 응답된 조회 수.
                  enrichment_provider_calls:
                    type: integer
                    description: 주소를 새로 확인해야 했던 조회 수.
                  enrichment_skipped_low_value:
                    type: integer
                    description: >-
                      주소가 아직 알려지지 않은 낮은 가치의 텔레메트리 이벤트입니다. 자체적으로 주소를 새로 확인하지
                      않습니다.
                  unique_ips_seen:
                    type: integer
                    description: 새로운 주소 확인이 필요했던 주소입니다.
                  period_days:
                    type: integer
                    description: 클램핑 후 적용된 `days` 값입니다.
                  cache_hit_rate:
                    type: number
                    nullable: true
                    description: >-
                      `enrichment_cache_hits / enrichment_lookups`, 소수점 넷째 자리까지
                      반올림. 조회가 없었던 경우 null.
                  unique_ip_ratio:
                    type: number
                    nullable: true
                    description: >-
                      `unique_ips_seen / events_ingested` 값으로 소수점 4자리까지 반올림됩니다.
                      수집된 이벤트가 없으면 Null입니다.
                  provider_calls_per_1k_events:
                    type: number
                    nullable: true
                    description: >-
                      수집된 이벤트 1,000건당 신규 해결 건수이며, 소수점 둘째 자리에서 반올림됩니다. 수집된 이벤트가
                      없는 경우 null입니다.
              examples:
                Last 30 days:
                  value:
                    events_ingested: 128450
                    events_rejected: 214
                    enrichment_lookups: 41230
                    enrichment_cache_hits: 40118
                    enrichment_provider_calls: 1112
                    enrichment_skipped_low_value: 74320
                    unique_ips_seen: 1112
                    period_days: 30
                    cache_hit_rate: 0.973
                    unique_ip_ratio: 0.0087
                    provider_calls_per_1k_events: 8.66
                No events yet:
                  value:
                    events_ingested: 0
                    events_rejected: 0
                    enrichment_lookups: 0
                    enrichment_cache_hits: 0
                    enrichment_provider_calls: 0
                    enrichment_skipped_low_value: 0
                    unique_ips_seen: 0
                    period_days: 30
                    cache_hit_rate: null
                    unique_ip_ratio: null
                    provider_calls_per_1k_events: null
        '401':
          description: >-
            스코프가 지정된 API 키가 만료되었습니다. 만료된 키에 대해서만 `401`이 반환되며, 누락되었거나 유효하지 않은 키에는
            `403`이 반환됩니다.
          content:
            application/json:
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            `x-api-key`가 누락되었거나(잘못되었거나 취소되었거나 만료된 키에는 `401`이 반환됨),
            `transactions: read` 권한이 없는 범위 제한 키이거나, 특정 워크플로 또는 승인된 세션으로 제한된
            키이거나(이러한 키는 거래 모니터링 데이터에 절대 접근할 수 없음), 키의 IP 허용 목록 외부에서 발생한 요청입니다.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without access:
                  value:
                    detail: This API key has no read access to transactions.
                Key limited to workflows or approved sessions:
                  value:
                    detail: >-
                      This API key only reaches sessions inside its workflow or
                      status limits, so it can't use this endpoint.
                IP not allowed:
                  value:
                    detail: This API key can't be used from this IP address.
        '429':
          description: >-
            속도 제한 초과: `GET` 요청은 API 키당 분당 600개의 요청 한도를 공유합니다. `Retry-After`초 동안
            대기한 후 재시도하세요.
          headers:
            Retry-After:
              description: 재시도하기 전 대기할 시간(초)입니다.
              schema:
                type: integer
                minimum: 1
                example: 30
          content:
            application/json:
              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/events/enrichment-metrics/?days=30'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.monitoring_events.retrieve_enrichment_metrics()
            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.monitoringEvents.retrieveEnrichmentMetrics();

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.MonitoringEvents.RetrieveEnrichmentMetrics(ctx, didit.MonitoringEventsRetrieveEnrichmentMetricsParams{})\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.monitoringEvents().retrieveEnrichmentMetrics();
            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->monitoringEvents->retrieveEnrichmentMetrics();
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.monitoring_events.retrieve_enrichment_metrics
            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.MonitoringEvents.RetrieveEnrichmentMetricsAsync();

            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.