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

# Obtenir la configuration des webhooks via l'API

> Lisez avec Didit les paramètres webhook : URL et secret, destinations, événements, rétention des données et hôtes de retour wallet.



Prompt de l'API de récupération de la configuration du webhook
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Read my Didit application's webhook configuration through the Management API.

Endpoint:
GET https://verification.didit.me/v3/webhook/

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

Goal:
\- Get every setting that controls how Didit sends webhooks for my application, plus the data-retention policy and the Digital ID wallet return hosts, in one call. Use it to audit the setup or to show the current configuration in a back office.

Behavior:
\- Didit delivers webhooks to webhook destinations (/v3/webhook/destinations/). Each destination has its own url, webhook_version, secret_shared_key and subscribed_events.
\- webhook_url, webhook_version and secret_shared_key at the top level are the application-level (legacy) webhook. Didit uses them only while the application has no enabled destination, and then only for status.updated and data.updated.
\- Every create, update or delete of a destination sets webhook_url to the URL of the oldest enabled destination, or null when none is enabled.
\- API-key callers always receive the application secret and every destination secret in full.

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

What to read from the response:
\- endpoints: every destination, oldest first, with uuid, label, url, enabled, webhook_version, secret_shared_key and subscribed_events. Verify each webhook with the secret of the destination it was sent to.
\- available_events: every event type you can subscribe a destination to ({ value, label }).
\- webhook_url, webhook_version, secret_shared_key: the legacy webhook, only relevant when no destination is enabled.
\- data_retention_months (null means no automatic deletion), face_retention_policy and face_retention_days: the retention policy.
\- allowed_return_hosts: hosts a Digital ID wallet verification may send the person back to.
\- allowed_domains: web origins the hosted verification flow may be embedded in and may send the user back to; empty means no restriction.
\- capture_method: MOBILE or MOBILE_AND_DESKTOP. A legacy setting with no effect; capture options are set per workflow.

Failure modes:
\- 401: { "detail": "This API key has expired." }
\- 403: { "detail": "You do not have permission to perform this action." } for a missing key (a wrong, revoked or expired key gets 401); { "detail": "This API key has no read access to webhooks." } for a scoped key without webhooks: read.
\- 429: more than 600 GET requests per minute with this key; wait for Retry-After.

Side effects: none. This is a pure read, and the response contains signing secrets: never log it.

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

\</pre>



      
      

Coller dans

Cet endpoint renvoie le webhook au niveau de l'application, datant d'avant l'existence des destinations, ainsi que la liste des destinations. Didit envoie les webhooks vers vos [destinations de webhook](https://docs.didit.me/fr/management-api/webhook/list-destinations.md), chacune signée avec son propre `secret_shared_key` ; les champs de premier niveau `webhook_url`, `webhook_version` et `secret_shared_key` ne sont utilisés que tant qu'aucune destination n'est activée, et uniquement pour `status.updated` et `data.updated`.> [!WARNING]
>
> La réponse contient tous les secrets de signature de votre application. Ne la faites pas figurer dans les journaux ni dans le code côté client.Pour modifier ces paramètres, utilisez [Mettre à jour la configuration du webhook](https://docs.didit.me/fr/management-api/webhook/update-config.md). Pour la vérification de signature et les payloads, consultez le [guide des webhooks](https://docs.didit.me/fr/integration/webhooks.md). Pour les champs de conservation, consultez [Conservation des données](https://docs.didit.me/fr/console/data-retention.md).


## OpenAPI

````yaml fr/openapi-25.json GET /v3/webhook/
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/:
    get:
      tags:
        - Webhook
      summary: Obtenir la configuration du webhook
      description: "Renvoie les paramètres de webhook de l'application en un seul appel\_: chaque [destination de webhook](https://docs.didit.me/fr/management-api/webhook/list-destinations) avec son secret de signature, les types d'événements auxquels une destination peut s'abonner, l'URL, la version et le secret de webhook au niveau de l'application (hérité), la politique de conservation des données et des gabarits biométriques, ainsi que les hôtes de retour de portefeuille Digital ID. Didit remet les webhooks aux destinations, chacun étant signé avec son propre `secret_shared_key`\_; les champs de premier niveau `webhook_url`, `webhook_version` et `secret_shared_key` ne sont utilisés que lorsqu'aucune destination n'est activée, et alors uniquement pour `status.updated` et `data.updated`. La réponse contient des secrets de signature, veillez donc à ne l'inclure ni dans les journaux ni dans le code côté client. Une clé API avec portée nécessite `webhooks: read`."
      operationId: get_webhook_config
      parameters: []
      responses:
        '200':
          description: La configuration du webhook.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookConfig'
              examples:
                One destination:
                  value:
                    webhook_url: https://yourapp.com/webhooks/didit
                    webhook_version: v3
                    secret_shared_key: dGhpcy1pcy10aGUtYXBwLWxldmVsLXNlY3JldC0wMDA
                    capture_method: MOBILE
                    data_retention_months: 24
                    face_retention_policy: delete_with_session
                    face_retention_days: null
                    biometric_consent_mode: auto
                    available_events:
                      - value: status.updated
                        label: Session status updated
                      - value: data.updated
                        label: Session data updated
                      - value: user.status.updated
                        label: User status updated
                      - value: user.data.updated
                        label: User data updated
                      - value: business.status.updated
                        label: Business status updated
                      - value: business.data.updated
                        label: Business data updated
                      - value: activity.created
                        label: Activity created
                      - value: transaction.created
                        label: Transaction created
                      - value: transaction.status.updated
                        label: Transaction status updated
                      - value: travel_rule.status.updated
                        label: Travel Rule Status Updated
                      - value: workflow.compliance_changed
                        label: Workflow Compliance Changed
                    allowed_return_hosts:
                      - shop.example.com
                    endpoints:
                      - uuid: 11111111-2222-3333-4444-555555555555
                        label: Production session webhooks
                        url: https://yourapp.com/webhooks/didit
                        enabled: true
                        webhook_version: v3
                        secret_shared_key: dGhpcy1pcy1hbi1leGFtcGxlLXNlY3JldC0wMDAwMDA
                        subscribed_events:
                          - status.updated
                          - data.updated
                        created_at: '2026-01-04T08:00:00.000000Z'
                        updated_at: '2026-04-22T14:09:11.523671Z'
        '401':
          description: >-
            La clé API a expiré : elle a été créée avec une date d'expiration
            qui est dépassée. Une clé incorrecte ou révoquée reçoit également un
            code `401` ; une clé manquante reçoit un code `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            La requête n'est pas autorisée. Un en-tête `x-api-key` manquant,
            invalide ou révoqué renvoie `You do not have permission to perform
            this action.` Une clé avec restriction de portée sans l'accès requis
            par cet endpoint renvoie un message indiquant l'accès manquant, et
            une clé utilisée en dehors de sa liste d'autorisation d'adresses IP
            renvoie `This API key can't be used from this IP address.`
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              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.
        '429':
          description: >-
            Limite de débit dépassée : plus de 600 requêtes GET dans la fenêtre
            actuelle d'une minute pour cette clé API. Attendez `Retry-After`
            secondes avant de réessayer.
          headers:
            Retry-After:
              description: Secondes à attendre avant de réessayer.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: Requêtes autorisées dans la fenêtre d'une minute (600).
              schema:
                type: integer
                example: 600
            X-RateLimit-Remaining:
              description: Requêtes restantes dans la fenêtre actuelle.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: >-
                Temps Unix (en secondes) auquel la fenêtre actuelle se
                réinitialise.
              schema:
                type: integer
                example: 1792056120
            X-RateLimit-Scope:
              description: Nom du budget qui a été dépassé.
              schema:
                type: string
                example: generic-get
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              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/' \
              -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.retrieve_config()
            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.retrieveConfig();
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.RetrieveConfig(ctx)\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().retrieveConfig();
            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->retrieveConfig();
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.webhooks.retrieve_config
            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.RetrieveConfigAsync();
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WebhookConfig:
      type: object
      description: >-
        Configuration des webhooks au niveau de l'application, politique de
        conservation et hôtes de retour de portefeuille Digital ID, avec chaque
        destination de webhook.
      required:
        - webhook_url
        - webhook_version
        - secret_shared_key
        - capture_method
        - data_retention_months
        - face_retention_policy
        - face_retention_days
        - available_events
        - allowed_return_hosts
        - endpoints
      properties:
        webhook_url:
          type: string
          format: uri
          nullable: true
          description: >-
            URL de webhook (héritée) au niveau de l'application. Didit n'envoie
            vers celle-ci que lorsque l'application ne dispose d'aucune
            destination activée, et uniquement `status.updated` et
            `data.updated`. Chaque création, mise à jour ou suppression d'une
            destination la définit sur l'URL de la destination activée la plus
            ancienne, ou sur `null` lorsqu'aucune n'est activée.
        webhook_version:
          type: string
          enum:
            - v1
            - v2
            - v3
          description: >-
            Version du payload de l'ancien `webhook_url`. Chaque destination
            possède sa propre `webhook_version`.
        secret_shared_key:
          type: string
          description: >-
            Secret de signature au niveau de l'application (token de 43
            caractères compatible URL). Il signe uniquement les livraisons vers
            la `webhook_url` héritée ; chaque destination signe avec son propre
            `secret_shared_key`. Les appelants utilisant une clé API le
            reçoivent toujours dans son intégralité ; les utilisateurs de la
            console sans `read:webhooks` reçoivent une chaîne vide.
        capture_method:
          type: string
          enum:
            - MOBILE
            - MOBILE_AND_DESKTOP
          description: >-
            Paramètre d'application obsolète. Le workflow de vérification ne le
            lit pas : les options de capture sont configurées par workflow.
        data_retention_months:
          type: integer
          nullable: true
          minimum: 1
          maximum: 120
          description: >-
            Délai de suppression automatique. Les sessions de vérification des
            utilisateurs créées il y a plus de ce nombre de mois (un mois
            correspond à 30 jours) sont supprimées automatiquement, et cette
            suppression est irréversible. `null` signifie que les sessions ne
            sont jamais supprimées automatiquement. Voir [Conservation des
            données](https://docs.didit.me/fr/console/data-retention).
        face_retention_policy:
          type: string
          enum:
            - delete_with_session
            - retain_until_user_deleted
          description: >-
            Ce qui advient de l'embedding facial d'une session lorsque la
            session est supprimée. `delete_with_session` (par défaut) le
            supprime avec la session. `retain_until_user_deleted` correspond à
            l'option de [conservation des gabarits
            biométriques](https://docs.didit.me/fr/console/data-retention#conservation-des-gabarits-biométriques)
            : un gabarit biométrique sans image lié à l'User est géré séparément
            jusqu'à ce que sa période de conservation prenne fin, que l'User
            soit supprimé ou que vous le purgiez.
        face_retention_days:
          type: integer
          nullable: true
          minimum: 1
          maximum: 3650
          description: >-
            Durée de conservation, en jours, des gabarits biométriques sous
            `retain_until_user_deleted`. Requis lorsque cette politique est
            définie.
        biometric_consent_mode:
          type: string
          enum:
            - auto
            - always
            - never
          description: >-
            Moment où le flux hébergé et les SDK natifs demandent à la personne
            son consentement biométrique explicite avant une capture faciale.
            `auto` (par défaut) ne le demande que lorsqu'un déclencheur
            s'applique : un État déclaré, l'IP de la personne ou l'émetteur du
            document d'identité se trouve dans l'Illinois, au Texas ou au
            Colorado, ou la personne semble être aux États-Unis sans État connu.
            `always` le demande à chaque personne dont le workflow capture un
            visage. `never` n'affiche jamais l'étape, et vous recueillez
            vous-même le consentement avant le selfie. Chaque modification est
            enregistrée dans le journal d'audit. Voir [Consentement
            biométrique](https://docs.didit.me/fr/getting-started/biometric-consent).
        available_events:
          type: array
          description: >-
            Chaque type d'événement auquel une destination peut s'abonner, avec
            un libellé d'affichage.
          items:
            type: object
            required:
              - value
              - label
            properties:
              value:
                $ref: '#/components/schemas/WebhookEvent'
              label:
                type: string
                description: Libellé d'affichage, par exemple `Session status updated`.
        allowed_return_hosts:
          type: array
          maxItems: 20
          description: >-
            Noms d'hôte (correspondance exacte, HTTPS uniquement) vers lesquels
            une vérification de portefeuille Digital ID autonome peut renvoyer
            l'utilisateur avec son `return_url`. Votre domaine en marque blanche
            est également toujours autorisé. Voir [Enregistrer votre destination
            de
            retour](https://docs.didit.me/fr/standalone-apis/digital-id-wallets#enregistrer-votre-destination-de-retour).
          items:
            type: string
            maxLength: 253
        endpoints:
          type: array
          description: >-
            Chaque destination de webhook de l'application, de la plus ancienne
            à la plus récente, chacune avec son secret de signature. En lecture
            seule ici : gérez les destinations avec les endpoints
            `/v3/webhook/destinations/`.
          items:
            $ref: '#/components/schemas/WebhookConfigDestination'
        allowed_domains:
          type: array
          maxItems: 50
          items:
            type: string
            maxLength: 300
          description: >-
            Origines (par exemple `https://app.example.com` ; `http` uniquement
            pour `localhost`) dans lesquelles le flux de vérification hébergé
            peut être intégré et vers lesquelles il peut rediriger l'utilisateur
            avec un rappel de session. Les appels de serveur à serveur ne sont
            pas affectés. Une liste vide signifie qu'il n'y a aucune
            restriction. Didit enregistre chaque origine en minuscules sans port
            par défaut. Une entrée non valide échoue avec une erreur `400` sur
            `allowed_domains`.
          example:
            - https://app.example.com
    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
    WebhookConfigDestination:
      type: object
      description: >-
        Une destination de webhook telle que répertoriée dans la configuration
        des webhooks, sans métriques de livraison. `GET
        /v3/webhook/destinations/{destination_uuid}/` ajoute son récapitulatif
        de livraison.
      required:
        - uuid
        - label
        - url
        - enabled
        - webhook_version
        - secret_shared_key
        - subscribed_events
        - created_at
        - updated_at
      properties:
        uuid:
          type: string
          format: uuid
          description: ID de destination.
        label:
          type: string
          maxLength: 255
          description: Nom lisible par l'utilisateur.
        url:
          type: string
          format: uri
          maxLength: 2000
          description: Endpoint HTTPS auquel Didit envoie les événements.
        enabled:
          type: boolean
          description: '`false` suspend les livraisons vers cette destination.'
        webhook_version:
          type: string
          enum:
            - v1
            - v2
            - v3
          description: Version du payload envoyée à cette destination.
        secret_shared_key:
          type: string
          description: "Le secret de signature de cette destination (token de 43 caractères compatible avec les URL). Vérifiez chaque webhook avec le secret de la destination à laquelle il a été envoyé. Les appelants par clé API le reçoivent toujours dans son intégralité\_; les utilisateurs de la console sans `read:webhooks` reçoivent une chaîne vide."
        subscribed_events:
          type: array
          uniqueItems: true
          description: >-
            Types d'événements livrés à cette destination. Vide lorsque la
            destination a été créée sans événements, auquel cas elle ne reçoit
            rien.
          items:
            $ref: '#/components/schemas/WebhookEvent'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  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.