> ## 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-Ziel aktualisieren API

> Didit Webhook-Ziel bearbeiten: Bezeichnung, URL, Status, Version und Webhook-Ereignisse. Programmatisch, pay-per-call, ohne Vertragsbindung.



Prompt für die API zum Aktualisieren eines Webhook-Ziels
        Prompt in die Zwischenablage kopieren



      
      

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



      
      

Einfügen in

Verwenden Sie diesen Endpoint, um zu ändern, wohin ein Ziel Webhooks sendet, und welche Ereignisse es empfängt.## Aktualisieren von `subscribed_events`Wenn Sie `subscribed_events` senden, geben Sie die vollständige Ereignisliste an, die nach der Aktualisierung abonniert bleiben soll. Das Array ersetzt die bisherige Liste abonnierter Ereignisse.```json theme={null}
{
  "subscribed_events": [
    "status.updated",
    "data.updated",
    "transaction.created",
    "transaction.status.updated"
  ]
}
```Unterstützte Werte sind:| Ereignis | Bedeutung |
| - | - |
| `status.updated` | Der Status einer Sitzung für Benutzerverifizierung (KYC) oder Unternehmensverifizierung (KYB) hat sich geändert. |
| `data.updated` | Die Verifizierungsdaten einer Sitzung wurden nach ihrer Erstellung geändert. |
| `user.status.updated` | Der Status der Benutzerentität hat sich geändert. |
| `user.data.updated` | Die Daten der Benutzerentität wurden geändert. |
| `business.status.updated` | Der Status der Unternehmensentität hat sich geändert. |
| `business.data.updated` | Die Daten der Unternehmensentität wurden geändert. |
| `activity.created` | Wird akzeptiert, derzeit aber nicht für Live-Traffic zugestellt. |
| `transaction.created` | Transaktion erstellt und zunächst bewertet. |
| `transaction.status.updated` | Der Status einer Transaktion hat sich geändert. |
| `travel_rule.status.updated` | Ein Travel-Rule-Austausch hat seinen Status geändert. |
| `workflow.compliance_changed` | Der Compliance-Status eines veröffentlichten Workflows hat sich geändert. |
| `transaction_rule_suggestions.created` | Ein Lauf mit Regelvorschlägen hat neue Regeländerungen vorgeschlagen. |Die Ereignisfamilien Investigator (`investigator.*`) und Authentication (`auth.*`) werden ebenfalls akzeptiert. Die vollständige Liste finden Sie unter [Webhooks](https://docs.didit.me/de/integration/webhooks.md#ereignistypen).Detaillierte Ereignisbeschreibungen und übliche Abonnementgruppen finden Sie im [Leitfaden zum Erstellen eines Ziels](https://docs.didit.me/de/management-api/webhook/create-destination.md).


## OpenAPI

````yaml de/openapi-25.json PATCH /v3/webhook/destinations/{destination_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/destinations/{destination_uuid}/:
    patch:
      tags:
        - Webhook
      summary: Webhook-Ziel aktualisieren
      description: >-
        Webhook-Ziel aktualisieren. **`subscribed_events` wird VOLLSTÄNDIG
        ERSETZT, nicht zusammengeführt**: zuerst abrufen, anhängen, erneut
        senden. Das Geheimnis wird nicht rotiert. Eine `uuid` im Body wird
        ignoriert: Der Pfad bestimmt das Ziel.
      operationId: update_webhook_destination
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: UUID des zu aktualisierenden Ziels.
          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: Neuer menschenlesbarer Name.
                url:
                  type: string
                  format: uri
                  description: Neue Ziel-URL. Muss innerhalb der Anwendung eindeutig sein.
                enabled:
                  type: boolean
                  description: >-
                    Auf `false` setzen, um Zustellungen an dieses Ziel zu
                    pausieren, ohne es zu löschen.
                webhook_version:
                  type: string
                  enum:
                    - v1
                    - v2
                    - v3
                  description: Neue Payload-Schemaversion für zukünftige Zustellungen.
                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: >-
            Aktualisiertes Webhook-Ziel. Der Antworttext hat das gleiche Format
            wie `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: >-
                      Die letzten vier Zeichen des aktuellen Signiergeheimnisses
                      des Ziels, damit Sie Geheimnisse voneinander unterscheiden
                      können. Reicht nicht aus, um eine Signatur zu
                      verifizieren.
                  previous_secret_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Wird für 24 Stunden gesetzt, nachdem das Signiergeheimnis
                      des Ziels in der Business Console rotiert wurde. Bis zu
                      diesem Zeitpunkt enthält jede Zustellung an das Ziel auch
                      `X-Signature-Previous`, `X-Signature-V2-Previous` und
                      `X-Signature-Simple-Previous`, erstellt mit dem ersetzten
                      Geheimnis (siehe
                      [Signaturprüfung](/de/integration/webhooks#signaturprüfung)).
                      `null`, wenn in den letzten 24 Stunden keine Rotation
                      stattgefunden hat.
                  subscribed_events:
                    $ref: '#/components/schemas/WebhookSubscribedEvents'
                  created_by_email:
                    type: string
                    nullable: true
                    description: >-
                      E-Mail des Mitglieds der Business Console, das das Ziel
                      erstellt hat. `null` für ein mit einem API-Schlüssel
                      erstelltes Ziel.
                  created_by_name:
                    type: string
                    nullable: true
                    description: >-
                      Name des Mitglieds der Business Console, das das Ziel
                      erstellt hat. `null` bei einem Ziel, das mit einem
                      API-Schlüssel erstellt wurde.
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  health_status:
                    type: string
                    enum:
                      - healthy
                      - degraded
                      - failing
                    description: >-
                      Zustellungsstatus. `failing`: Bei 3 oder mehr
                      aufeinanderfolgenden Ereignissen ist jeweils der erste
                      Zustellversuch fehlgeschlagen, seit das Ziel zuletzt
                      erfolgreich geantwortet hat (siehe `failing_streak`).
                      `degraded`: nicht failing, aber in den letzten 24 Stunden
                      ist ein Zustellversuch fehlgeschlagen und kein späterer
                      Versuch hat dieses Ereignis zugestellt; ein
                      Wiederholungsversuch oder ein erneutes Senden, das es
                      zustellt, hebt dies auf. `healthy`: weder noch. Unabhängig
                      von `enabled`. Ein fehlgeschlagener Versuch ist ein
                      Versuch, der mit HTTP 400 oder höher beantwortet oder
                      überhaupt nicht beantwortet wurde.
                  failing_streak:
                    type: integer
                    description: >-
                      Wie viele aufeinanderfolgende Ereignisse bei ihrem ersten
                      Zustellversuch fehlgeschlagen sind, seit das Ziel
                      innerhalb der letzten 30 Tage zuletzt erfolgreich
                      geantwortet hat. Wiederholungsversuche werden nicht
                      gezählt, und jeder erfolgreiche Versuch, einschließlich
                      eines Wiederholungsversuchs oder eines erneuten Sendens,
                      beendet die Serie. `0`, wenn seit dem letzten Erfolg kein
                      Ereignis fehlgeschlagen ist.
                  failing_since:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Wann der erste fehlgeschlagene Versuch der aktuellen
                      `failing_streak` unternommen wurde. `null`, wenn
                      `failing_streak` den Wert `0` hat.
                  last_success_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Wann das Ziel zuletzt innerhalb der letzten 30 Tage auf
                      eine Zustellung mit einem HTTP-Status unter 400
                      geantwortet hat. `null`, wenn dies in diesem Zeitfenster
                      nicht der Fall war.
                  environment:
                    type: string
                    enum:
                      - live
                      - sandbox
                    description: Umgebung der Anwendung, zu der das Ziel gehört.
                  summary:
                    type: object
                    description: >-
                      Zustellungsmetriken für die letzten `metrics_window_days`
                      (30) Tage. `last_delivery_at` ist der letzte Versuch,
                      unabhängig davon, wann er unternommen wurde.
                    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: >-
                          Länge des Zeitfensters in Tagen, das von den anderen
                          zusammenfassenden Metriken abgedeckt wird. Immer `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: >-
            Validierung fehlgeschlagen (doppelte URL, leere Liste oder Liste mit
            unbekannten Ereignissen, fehlerhafter Body).
          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: >-
            API-Schlüssel fehlt, ist fehlerhaft, abgelaufen oder für eine andere
            Anwendung gültig. Ein fehlender Schlüssel gibt `403` zurück; ein
            falscher, widerrufener oder abgelaufener Schlüssel gibt `401`
            zurück.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Ziel mit dieser UUID existiert nicht (oder ist gelöscht oder gehört
            zu einer anderen Anwendung).
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: >-
            Rate-Limit überschritten; drosseln Sie die Anfragen und wiederholen
            Sie den Versuch.
          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: >-
        Ereignisfilter für dieses Webhook-Ziel. Didit stellt nur Webhooks zu,
        deren Ereignistyp exakt mit einem dieser Werte übereinstimmt – es gibt
        kein Wildcard-Abonnement. Beim Senden muss die Liste mindestens ein
        gültiges Ereignis enthalten (ein explizites `[]` wird mit 400
        abgelehnt); ein Ziel mit leerer Liste (Feld bei der Erstellung
        weggelassen) empfängt nichts. Bei einer Aktualisierung wird die Liste
        vollständig ersetzt, niemals zusammengeführt.
      minItems: 1
      uniqueItems: true
      items:
        $ref: '#/components/schemas/WebhookEvent'
      example:
        - status.updated
        - data.updated
    WebhookEvent:
      type: string
      description: >-
        Name des unterstützten Webhook-Ereignisses. Verwenden Sie genau diese
        Zeichenfolgen in `subscribed_events`; nicht unterstützte Werte werden
        abgelehnt.
      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: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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