---
title: "Update Webhook"
method: PUT
path: "/hooks/{hook_id}"
tags: ["Webhooks"]
---

# Update Webhook

`PUT /hooks/{hook_id}`

Update a webhook's events or scope. The `targetUrl` cannot be changed and is ignored if sent; the handshake is repeated against the existing URL to confirm it is still reachable. Send `X-Skip-Handshake: 1` to skip it.

## Path parameters

- `hook_id` number, required

## Request body

- WebhookRequestUpdateRequest
  - `events` string[], required — Replacement list of events. `targetUrl` and scope cannot be changed after creation.

## Response `200`

OK

- Webhook
  - `id` number, required — Webhook ID
  - `targetUrl` string, required
  - `events` string[], required
  - `project` string, nullable — You can receive events only for specific project
  - `active` boolean
  - `createdAt` string, required — Datetime when webhook was created (format: Y-m-d H:i:s)
  - `lastUsedAt` string, required — Datetime when webhook was last used (format: Y-m-d H:i:s)

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/everhour/apis/everhour-api.md) · [All operations](https://skmtc.net/everhour/apis/everhour-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/everhour/everhour-api/versions/fc6136e33352/schema)
