> ## 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 إجمالي عمليات تسليم وجهة webhook واحدة ونسبة الفشل وأوقات الاستجابة، إجمالاً ولكل يوم 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/ar/management-api/webhook/list-deliveries.md)، وافتح إحداها باستخدام [الحصول على تسليم وجهة webhook](https://docs.didit.me/ar/management-api/webhook/get-delivery.md).تُوصف الاستجابات التي يعيد Didit محاولتها تلقائياً في [سياسة إعادة المحاولة](https://docs.didit.me/ar/integration/webhooks.md#سياسة-إعادة-المحاولة).


## OpenAPI

````yaml ar/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/ar/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 للوجهة (الـ `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 على رسالة تذكر نوع الوصول المفقود، والمفتاح المستخدم من
            خارج قائمة العناوين المسموح بها الخاصة به يتلقى `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 الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

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