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

# Mettre à jour une destination webhook : API

> Modifiez une destination webhook Didit : libellé, URL, activation, version, événements. Opérations par API, à l'appel, sans contrat.



Prompt de l'API de mise à jour de la destination de webhook
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Update a Didit webhook destination through the Management API.

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

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

Goal:
\- Change a destination's label, url, enabled state, webhook_version, or subscribed_events. Send only the fields you want to change.

Path parameter:
\- destination_uuid — the destination UUID from GET /v3/webhook/destinations/.

Request body (application/json) — all fields optional:
\{
"label": "Updated label",
"url": "https://yourapp.com/webhooks/v2",
"enabled": false,
"webhook_version": "v3",
"subscribed_events": ["status.updated", "data.updated", "transaction.created"]
}

Critical semantics:
\- subscribed_events is replaced wholesale, NOT merged. To add an event, GET the current destination, append to the list, and send the full array back. Sending [] returns 400.
\- url must remain unique among the application's destinations.
\- A uuid in the body is ignored: the path names the destination.
\- webhook_version applies to future deliveries only. Already-queued deliveries use the version that was active when they were enqueued.
\- The signing secret (secret_shared_key) is NOT rotated by PATCH. Console offers a manual rotation flow. For 24 hours after a rotation, every delivery also carries X-Signature-Previous, X-Signature-V2-Previous and X-Signature-Simple-Previous, made with the replaced secret, and previous_secret_expires_at says when that ends.
\- Changing url does not move automatic retries of deliveries already made: they go to the URL the first attempt used. A manual resend goes to the destination's current URL.

Example call (replace subscription list):
curl -X PATCH "https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"subscribed_events": ["status.updated", "data.updated", "transaction.created"]}'

\# Pause a destination without losing config:
curl -X PATCH "https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"enabled": false}'

Failure modes:
\- 400 — empty subscribed_events, unknown event name, duplicate url among destinations, or invalid webhook_version.
\- 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.

Side effects:
\- Subsequent webhook deliveries respect the new url, enabled flag, and subscribed_events list.

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

\</pre>



      
      

Coller dans

Utilisez cet endpoint pour modifier l'adresse vers laquelle une destination envoie ses webhooks et les événements qu'elle reçoit.## Mise à jour de `subscribed_events`Lorsque vous envoyez `subscribed_events`, indiquez la liste complète des événements auxquels la destination doit rester abonnée après la mise à jour. Le tableau remplace l'ensemble d'abonnements précédent.```json theme={null}
{
  "subscribed_events": [
    "status.updated",
    "data.updated",
    "transaction.created",
    "transaction.status.updated"
  ]
}
```Les valeurs prises en charge sont :| Événement | Ce qu'il représente |
| - | - |
| `status.updated` | Le statut d'une session de vérification des utilisateurs (KYC) ou de vérification d'entreprise (KYB) a changé. |
| `data.updated` | Les données de vérification de la session ont changé après sa création. |
| `user.status.updated` | Le statut de l'entité utilisateur a changé. |
| `user.data.updated` | Les données de l'entité utilisateur ont changé. |
| `business.status.updated` | Le statut de l'entité entreprise a changé. |
| `business.data.updated` | Les données de l'entité entreprise ont changé. |
| `activity.created` | Accepté, mais pas livré aujourd'hui pour le trafic en production. |
| `transaction.created` | Transaction créée et évaluée initialement. |
| `transaction.status.updated` | Le statut de la transaction a changé. |
| `travel_rule.status.updated` | Le statut d'un échange Travel Rule a changé. |
| `workflow.compliance_changed` | Le statut de conformité d'un workflow publié a changé. |
| `transaction_rule_suggestions.created` | Une exécution de suggestions de règles a proposé de nouvelles modifications de règles. |Les familles d'événements Investigator (`investigator.*`) et Authentification (`auth.*`) sont également acceptées ; consultez la liste complète dans [Webhooks](https://docs.didit.me/fr/integration/webhooks.md#types-d’événements).Utilisez le [guide de création d'une destination](https://docs.didit.me/fr/management-api/webhook/create-destination.md) pour les descriptions détaillées des événements et les ensembles d'abonnement courants.


## OpenAPI

````yaml fr/openapi-25.json PATCH /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}/:
    patch:
      tags:
        - Webhook
      summary: Mettre à jour la destination de webhook
      description: >-
        Mettre à jour une destination de webhook. **`subscribed_events` est
        REMPLACÉ dans son intégralité, et non fusionné** : récupérez d'abord,
        ajoutez, puis renvoyez. Le secret n'est pas renouvelé. Tout `uuid` dans
        le corps est ignoré : le chemin indique la destination.
      operationId: update_webhook_destination
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: UUID de la destination à mettre à jour.
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  description: Nouveau nom lisible par un humain.
                url:
                  type: string
                  format: uri
                  description: >-
                    Nouvelle URL cible. Doit être unique au sein de
                    l'application.
                enabled:
                  type: boolean
                  description: >-
                    Définir sur `false` pour suspendre les livraisons vers cette
                    destination sans la supprimer.
                webhook_version:
                  type: string
                  enum:
                    - v1
                    - v2
                    - v3
                  description: >-
                    Nouvelle version du schéma de payload pour les livraisons
                    futures.
                subscribed_events:
                  $ref: '#/components/schemas/WebhookSubscribedEvents'
            examples:
              Pause destination:
                value:
                  enabled: false
              Add transaction events:
                value:
                  subscribed_events:
                    - status.updated
                    - data.updated
                    - transaction.created
                    - transaction.status.updated
              Move target URL:
                value:
                  label: Production session webhooks v2
                  url: https://api.yourapp.com/webhooks/didit/v2
      responses:
        '200':
          description: >-
            Destination de webhook mise à jour. Le corps a la même forme que
            `GET /v3/webhook/destinations/{destination_uuid}/`.
          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
                  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:
                Paused:
                  value:
                    uuid: 11111111-2222-3333-4444-555555555555
                    label: Production session webhooks
                    url: https://yourapp.com/webhooks/didit
                    enabled: false
                    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-05-17T11:02:55Z'
                    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
        '400':
          description: >-
            Échec de validation (URL en double, liste d'événements vide ou
            inconnue, corps malformé).
          content:
            application/json:
              examples:
                Duplicate URL:
                  value:
                    url:
                      - >-
                        This webhook destination already exists for the
                        application.
                Empty events:
                  value:
                    subscribed_events:
                      - At least one subscribed event is required.
        '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: >-
            La destination avec cet UUID n'existe pas (ou est supprimée, ou
            appartient à une autre application).
          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 PATCH
            'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "subscribed_events": [
                  "status.updated",
                  "data.updated",
                  "transaction.created"
                ]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.webhooks.destinations.update(
                "11111111-2222-3333-4444-555555555555",
                enabled=False,
            )
            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.update("11111111-2222-3333-4444-555555555555",
            {
              enabled: false,
            });

            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.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsUpdateParams{\n\tEnabled: didit.Bool(false),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.WebhooksDestinationsUpdateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.webhooks().destinations().update("11111111-2222-3333-4444-555555555555",
            WebhooksDestinationsUpdateParams.builder()
                    .enabled(false)
                    .build());
            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->update('11111111-2222-3333-4444-555555555555',
            [
                'enabled' => false,
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.webhooks.destinations.update(
              "11111111-2222-3333-4444-555555555555",
              enabled: false
            )
            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.UpdateAsync("11111111-2222-3333-4444-555555555555",
            new WebhooksDestinationsUpdateParams

            {
                Enabled = false,
            });

            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.