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

# Update Webhook Endpoint

> Update the delivery URL, event filter, or description of a webhook endpoint

Updates the delivery URL, the subscribed event filter, or the description of an existing endpoint. All fields are optional; only the fields provided are changed.

<Note>
  The signing secret cannot be changed or re-read via this endpoint.
</Note>

## Path Parameters

<ParamField path="customer_id" type="string" required>
  Id of the owning customer (`cus_…`).
</ParamField>

<ParamField path="id" type="string" required>
  Id of the webhook endpoint (`wh_…`).
</ParamField>

## Request Body

<ParamField body="url" type="string (HttpUrl)">
  New delivery URL.
</ParamField>

<ParamField body="events" type="string[]">
  Replacement list of subscribed event types, validated against the [catalog](/va/webhooks/events).
</ParamField>

<ParamField body="description" type="string | null">
  New description. Maximum 255 characters. Pass `null` to clear it.
</ParamField>

## Response

The updated webhook-endpoint object (`secret` is `null` on reads after create).

<ResponseField name="id" type="string">
  Id of the endpoint (`wh_…`).
</ResponseField>

<ResponseField name="object" type="string">
  Always `webhook_endpoint`.
</ResponseField>

<ResponseField name="url" type="string">
  Delivery URL.
</ResponseField>

<ResponseField name="events" type="string[]">
  Subscribed event types.
</ResponseField>

<ResponseField name="secret" type="string | null">
  Always `null` on reads after create.
</ResponseField>

<ResponseField name="description" type="string | null">
  Free-text label for the endpoint.
</ResponseField>

<ResponseField name="last_used_at" type="datetime | null">
  When the endpoint last received a delivery.
</ResponseField>

<ResponseField name="disabled_at" type="datetime | null">
  When the endpoint was disabled; `null` while active.
</ResponseField>

<ResponseField name="created" type="datetime">
  When the endpoint was created.
</ResponseField>

<ResponseField name="updated" type="datetime | null">
  When the endpoint was last updated.
</ResponseField>

<ResponseField name="created_by" type="string">
  Actor that created the endpoint.
</ResponseField>

<ResponseField name="updated_by" type="string | null">
  Actor that last updated the endpoint.
</ResponseField>

<RequestExample>
  ```json Request theme={null}
  {
    "events": ["account.created", "account.updated", "virtual_account.updated", "payment.completed", "payment.returned", "payment.failed"],
    "description": "prod - payments and accounts"
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "wh_3f8a2b1c9d4ex0y1z2a3b4c5",
    "object": "webhook_endpoint",
    "url": "https://platform.example/hooks/inbound",
    "events": ["account.created", "account.updated", "virtual_account.updated", "payment.completed", "payment.returned", "payment.failed"],
    "secret": null,
    "description": "prod - payments and accounts",
    "last_used_at": "2026-06-09T17:42:11Z",
    "disabled_at": null,
    "created": "2026-06-10T08:00:00Z",
    "updated": "2026-06-10T09:15:00Z",
    "created_by": "ak_x7k2m9p4q1w8e5r3t6y0u2i4",
    "updated_by": "ak_x7k2m9p4q1w8e5r3t6y0u2i4"
  }
  ```
</ResponseExample>
