> ## Documentation Index
> Fetch the complete documentation index at: https://dialnexa.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Webhook

> Update a webhook subscription's URL, subscribed events, signing secret, or active status without recreating it.

<Warning>
  **Legacy endpoint - deprecated.** Unversioned endpoints are scheduled for removal on **July 31, 2026**. Use the [`/v1` version](/docs/api-reference/v1/webhooks/update) for new integrations. This endpoint remains available for existing integrations until then.
</Warning>

Updates a registered webhook subscription. You can change the delivery `url`, add or remove `events`, rotate the signing `secret`, or toggle `is_active` to temporarily pause delivery. Only the fields you include are updated, omitted fields keep their current values. The subscription's `id` does not change, so consumers can continue to reference the same webhook ID after the update.

## When to use this

* **URL change**: your consumer service moved to a new host or path.
* **Adding events**: you started building a feature that needs an additional event type and want it delivered to the existing endpoint.
* **Removing events**: your consumer no longer cares about a particular event and you want to stop the unnecessary deliveries.
* **Secret rotation**: your signing secret leaked, expired, or you are on a periodic rotation cadence.
* **Temporary pause**: you want to stop receiving events without losing the subscription. Set `is_active` to `false`, then back to `true` later. If you do not plan to re-enable, use [Delete Webhook](/docs/api-reference/v1/webhooks/delete) instead.

## Rotating the signing secret

When you pass a new `secret` value, DialNexa starts signing with the new secret on the very next delivery. There is no overlap period during which both the old and new secrets are accepted. To rotate safely:

1. Update your consumer service to accept both the old and new secret during a transition window.
2. Send the new secret to DialNexa through this endpoint.
3. Confirm new deliveries are being verified with the new secret.
4. Remove the old secret from your consumer service.

See [Webhook secrets](/docs/api-access/webhook-secrets) for the verification format and helper code.

## Path parameters

| Parameter | Description                                     |
| --------- | ----------------------------------------------- |
| `id`      | The webhook ID, for example `whk_c9v3nz8rq4pm`. |

## Errors

* `404 Not Found` is returned when the webhook does not exist.
* `400 Bad Request` is returned when the URL is malformed or an event type is unknown.

## Related endpoints

* [List Webhooks](/docs/api-reference/v1/webhooks/list): review every webhook on the workspace.
* [Delete Webhook](/docs/api-reference/v1/webhooks/delete): permanently remove a subscription.
* [Webhook secrets](/docs/api-access/webhook-secrets): verification format.
* [Webhook retries and failures](/docs/api-access/webhook-retries-and-failures): how DialNexa handles delivery failures.


## OpenAPI

````yaml PATCH /user-webhooks/{id}
openapi: 3.0.0
info:
  title: DialNexa API
  description: >-
    Public REST API for the DialNexa voice AI platform. Versioned endpoints are
    under /v1; unversioned endpoints are legacy and deprecated.
  version: 1.0.0
servers:
  - url: https://api.dialnexa.com
    description: DialNexa production API
security:
  - bearer: []
tags:
  - name: API Keys
  - name: Agent Functions
  - name: Agents V1
  - name: Agents2
  - name: Batch Calls
  - name: Batch Calls V1
  - name: Call Logs
  - name: Calls
  - name: Calls V1
  - name: Campaign Leads
  - name: Campaigns
  - name: External Webhooks
  - name: Knowledge Base
  - name: Knowledge Base V1
  - name: LLMs
  - name: LLMs V1
  - name: Languages
  - name: Languages V1
  - name: Organization Phone Numbers
  - name: Organization Phone Numbers V1
  - name: Phone Number Pricing
  - name: Phone Number Pricing V1
  - name: Transcribers
  - name: Transcribers V1
  - name: User Webhooks
  - name: User Webhooks V1
  - name: V1
  - name: Voices
  - name: Voices V1
  - name: Webcall
  - name: Workflow Leads
  - name: Workflow Leads V1
  - name: Workflows
  - name: Workflows V1
paths:
  /user-webhooks/{id}:
    patch:
      tags:
        - User Webhooks
      summary: Update a user webhook
      description: >-
        **Legacy endpoint - deprecated, scheduled for removal on July 31,
        2026.** Use the `/v1` version for new integrations. 
      operationId: UserWebhooksController_update
      parameters:
        - name: id
          required: true
          in: path
          description: The ID of the webhook.
          schema:
            example: wh_123
            type: string
        - name: x-organization-id
          in: header
          description: RSA encrypted organization ID (base64 format)
          required: true
          schema:
            type: string
            example: BASE64_ENCRYPTED_ORG_ID_HERE
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserWebhookDto'
      responses:
        '200':
          description: ''
      deprecated: true
components:
  schemas:
    UpdateUserWebhookDto:
      type: object
      properties:
        url:
          type: string
          example: https://webhook.site/updated-endpoint
          description: The new URL for the webhook.
        events:
          example:
            - order.paid
          description: Updated list of events.
          type: array
          items:
            type: string
        is_active:
          type: boolean
          example: false
          description: Whether the webhook is active.
        secret:
          type: string
          example: newSecret
          description: New secret for signing payloads.
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````