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

# Récupérer une destination webhook : API de gestion Didit

> Récupérez une destination webhook Didit : secret de signature, événements, état et livraisons sur 30 jours. Facturée à l'appel.



Prompt API : récupérer une destination de webhook
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Fetch a single Didit webhook destination through the Management API.

Endpoint:
GET https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
\- Retrieve the full configuration and delivery summary of one destination — useful for back-office detail screens or to confirm a config change.

Path parameter:
\- destination_uuid — the destination UUID returned by POST /v3/webhook/destinations/ or GET /v3/webhook/destinations/.

What to read from the response:
\- url, label, enabled, webhook_version — basic config.
\- subscribed_events — current event subscription list.
\- secret_shared_key: the HMAC signing secret, always returned in full to your API key.
\- secret_last4: the last four characters of the current secret.
\- previous_secret_expires_at: set for 24 hours after the secret is rotated in the Business Console. Until then every delivery also carries X-Signature-Previous, X-Signature-V2-Previous and X-Signature-Simple-Previous, made with the replaced secret. null otherwise.
\- health_status: "failing" (3 or more consecutive events failed their first delivery attempt since the last success), "degraded" (an attempt failed in the last 24 hours and no later attempt has delivered that event) or "healthy". failing_streak, failing_since and last_success_at give the details.
\- summary: { total_deliveries, failed_deliveries, error_rate_percentage, min/avg/max_response_time_ms, last_delivery_at, metrics_window_days } for the last 30 days (metrics_window_days is always 30; last_delivery_at is the most recent attempt).
\- created_by_email, created_by_name: the Business Console member who created the destination; null for a destination created with an API key.
\- environment: "live" or "sandbox", from the application.

Example call:
curl -X GET "https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/" \
-H "x-api-key: YOUR_API_KEY"

Failure modes:
\- 401 — missing or malformed x-api-key.
\- 403: canonical { "detail": "You do not have permission to perform this action." } envelope.
\- 404 — destination not found in this application (also returned for deleted destinations).

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Coller dans

La réponse contient les mêmes champs d'état que la [liste](https://docs.didit.me/fr/management-api/webhook/list-destinations.md#état-de-la-destination), ainsi qu'un `summary` couvrant les 30 derniers jours.## Ressources connexes- [Lister les destinations de webhook](https://docs.didit.me/fr/management-api/webhook/list-destinations.md) : chaque destination avec son état et le nombre quotidien de livraisons.
- [Guide des webhooks](https://docs.didit.me/fr/integration/webhooks.md#vérification-de-la-signature) : comment vérifier les signatures, y compris pendant une rotation d'un secret.


## OpenAPI

````yaml fr/openapi-25.json GET /v3/webhook/destinations/{destination_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/destinations/{destination_uuid}/:
    get:
      tags:
        - Webhook
      summary: Obtenir la destination de webhook
      description: >-
        Récupérer une destination de webhook avec son secret de signature
        `secret_shared_key`, son état (`health_status`, `failing_streak`,
        `failing_since`, `last_success_at`) et un récapitulatif des livraisons
        `summary` pour les 30 derniers jours. Les appelants par clé API
        reçoivent toujours le secret complet ; les utilisateurs de la Console
        sans `read:webhooks` voient une chaîne vide.
      operationId: get_webhook_destination
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: >-
            UUID de la destination (le `uuid` renvoyé par la création / le
            listage).
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
      responses:
        '200':
          description: Détails de la destination de webhook.
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                  label:
                    type: string
                  url:
                    type: string
                    format: uri
                  enabled:
                    type: boolean
                  webhook_version:
                    type: string
                    enum:
                      - v1
                      - v2
                      - v3
                  secret_shared_key:
                    type: string
                    description: >-
                      Secret de signature HMAC (token de 43 caractères
                      compatible avec les URL). Toujours renvoyé dans son
                      intégralité aux appelants utilisant une clé API ; les
                      utilisateurs de la console ont besoin de l'autorisation
                      `read:webhooks`, sinon une chaîne vide est renvoyée.
                  secret_last4:
                    type: string
                    description: >-
                      Quatre derniers caractères du secret de signature actuel
                      de la destination, vous permettant de distinguer les
                      secrets. Insuffisant pour vérifier une signature.
                  previous_secret_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Défini pendant 24 heures après la rotation du secret de
                      signature de la destination dans la Business Console.
                      Jusqu'à cette échéance, chaque livraison vers la
                      destination comporte également `X-Signature-Previous`,
                      `X-Signature-V2-Previous` et
                      `X-Signature-Simple-Previous`, générés avec le secret
                      remplacé (voir [Vérification de
                      signature](/fr/integration/webhooks#vérification-de-la-signature)).
                      `null` si aucune rotation n'a eu lieu au cours des
                      dernières 24 heures.
                  subscribed_events:
                    $ref: '#/components/schemas/WebhookSubscribedEvents'
                  created_by_email:
                    type: string
                    nullable: true
                    description: >-
                      E-mail du membre de la Business Console qui a créé la
                      destination. `null` pour une destination créée avec une
                      clé API.
                  created_by_name:
                    type: string
                    nullable: true
                    description: >-
                      Nom du membre de la Business Console ayant créé la
                      destination. `null` pour une destination créée avec une
                      clé API.
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  health_status:
                    type: string
                    enum:
                      - healthy
                      - degraded
                      - failing
                    description: >-
                      État de la livraison. `failing` : 3 événements consécutifs
                      ou plus ont échoué lors de leur première tentative de
                      livraison depuis la dernière réponse réussie de la
                      destination (voir `failing_streak`). `degraded` : pas en
                      échec, mais une tentative de livraison a échoué au cours
                      des dernières 24 heures et aucune tentative ultérieure n'a
                      livré cet événement ; une nouvelle tentative ou un renvoi
                      qui le livre efface cet état. `healthy` : aucun des deux.
                      Indépendant de `enabled`. Une tentative échouée correspond
                      à une réponse HTTP 400 ou supérieure, ou à une absence
                      totale de réponse.
                  failing_streak:
                    type: integer
                    description: >-
                      Nombre d'événements consécutifs dont la première tentative
                      de livraison a échoué depuis la dernière réponse réussie
                      de la destination, au cours des 30 derniers jours. Les
                      nouvelles tentatives ne sont pas comptabilisées, et toute
                      tentative réussie, y compris une nouvelle tentative ou un
                      renvoi, met fin à la série. `0` lorsqu'aucun événement n'a
                      échoué depuis le dernier succès.
                  failing_since:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Date et heure de la première tentative infructueuse de la
                      série d'échecs en cours (`failing_streak`). `null` lorsque
                      `failing_streak` vaut `0`.
                  last_success_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Date et heure auxquelles la destination a répondu pour la
                      dernière fois à une livraison avec un statut HTTP
                      inférieur à 400, au cours des 30 derniers jours. `null` si
                      ce n'est pas le cas dans cet intervalle.
                  environment:
                    type: string
                    enum:
                      - live
                      - sandbox
                    description: >-
                      Environnement de l'application propriétaire de la
                      destination.
                  summary:
                    type: object
                    description: >-
                      Métriques de livraison pour les derniers
                      `metrics_window_days` (30) jours. `last_delivery_at`
                      correspond à la tentative la plus récente, quelle que soit
                      la date à laquelle elle a été effectuée.
                    properties:
                      total_deliveries:
                        type: integer
                      failed_deliveries:
                        type: integer
                      error_rate_percentage:
                        type: integer
                      min_response_time_ms:
                        type: integer
                        nullable: true
                      avg_response_time_ms:
                        type: integer
                        nullable: true
                      max_response_time_ms:
                        type: integer
                        nullable: true
                      last_delivery_at:
                        type: string
                        format: date-time
                        nullable: true
                      metrics_window_days:
                        type: integer
                        description: >-
                          Durée en jours de la fenêtre couverte par les autres
                          métriques récapitulatives. Toujours `30`.
              examples:
                Healthy destination:
                  value:
                    uuid: 11111111-2222-3333-4444-555555555555
                    label: Production session webhooks
                    url: https://yourapp.com/webhooks/didit
                    enabled: true
                    webhook_version: v3
                    secret_shared_key: tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ
                    secret_last4: 0xnQ
                    previous_secret_expires_at: null
                    subscribed_events:
                      - status.updated
                      - data.updated
                    created_by_email: null
                    created_by_name: null
                    created_at: '2026-01-04T08:00:00Z'
                    updated_at: '2026-04-22T14:09:11Z'
                    health_status: healthy
                    failing_streak: 0
                    failing_since: null
                    last_success_at: '2026-05-17T09:21:18Z'
                    environment: live
                    summary:
                      total_deliveries: 12453
                      failed_deliveries: 14
                      error_rate_percentage: 0
                      min_response_time_ms: 41
                      avg_response_time_ms: 187
                      max_response_time_ms: 2103
                      last_delivery_at: '2026-05-17T09:21:18Z'
                      metrics_window_days: 30
        '403':
          description: >-
            Clé API manquante, mal formée, expirée ou limitée à une application
            différente. Une clé manquante renvoie `403` ; une clé erronée,
            révoquée ou expirée renvoie `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Aucune destination avec cet UUID n'existe, ou elle appartient à une
            autre application, ou elle a été supprimée.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: Limite de débit dépassée ; réduisez la cadence et réessayez.
          content:
            application/json:
              examples:
                Throttled:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/'
            \
              -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(
                "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.retrieve("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.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\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().retrieve("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->retrieve('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("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.RetrieveAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WebhookSubscribedEvents:
      type: array
      description: >-
        Filtre d'événements pour cette destination de webhook. Didit ne livre
        que les webhooks dont le type d'événement correspond exactement à l'une
        de ces valeurs — il n'y a pas d'abonnement avec caractère générique.
        Lorsqu'elle est envoyée, la liste doit contenir au moins un événement
        valide (un `[]` explicite est rejeté avec une erreur 400) ; une
        destination dont la liste est vide (champ omis lors de la création) ne
        reçoit rien. Lors d'une mise à jour, la liste est entièrement remplacée,
        jamais fusionnée.
      minItems: 1
      uniqueItems: true
      items:
        $ref: '#/components/schemas/WebhookEvent'
      example:
        - status.updated
        - data.updated
    WebhookEvent:
      type: string
      description: >-
        Nom d'événement webhook pris en charge. Utilisez ces chaînes exactes
        dans `subscribed_events` ; les valeurs non prises en charge sont
        rejetées.
      enum:
        - status.updated
        - data.updated
        - user.status.updated
        - user.data.updated
        - business.status.updated
        - business.data.updated
        - activity.created
        - transaction.created
        - transaction.status.updated
        - travel_rule.status.updated
        - workflow.compliance_changed
        - transaction_rule_suggestions.created
        - auth.signup
        - auth.login
        - auth.login_failed
        - auth.password_reset_requested
        - auth.password_reset_completed
        - auth.mfa_changed
        - auth.new_device
        - auth.account_locked
        - investigator.report.ready
        - investigator.decision.automated
        - investigator.decision.overridden
        - investigator.decision.contested
        - investigator.question.raised
        - investigator.automation.paused
        - investigator.rfi.answered
        - investigator.rfi.overdue
        - investigator.drift.detected
        - investigator.sla.breached
        - investigator.qa.failed
        - investigator.external.report.ready
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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