---
title: "Update a webhook endpoint"
method: PATCH
path: "/v1/webhooks/{id}"
tags: ["Webhooks"]
---

# Update a webhook endpoint

`PATCH /v1/webhooks/{id}`

## Request

- Base URL: `https://api.virlo.ai`
- URL: `https://api.virlo.ai/v1/webhooks/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- UpdateWebhookDto
  - `url` string
  - `description` string
  - `enabled_events` string[]: Event types this endpoint should receive. Replaces the whole list.
  - `headers` object
  - `is_active` boolean

## Response `200`

Webhook endpoint updated

- WebhookEndpointDto
  - `id` string, uuid, required
  - `team_id` string, uuid, required
  - `url` string, required
  - `description` string, nullable
  - `enabled_events` string[], required
  - `headers` object: Custom headers included on every delivery (secrets redacted in docs examples).
  - `is_active` boolean, required
  - `status` 'active' | 'inactive' | 'disabled_by_system', required: Effective status: `inactive` when soft-deleted (`is_active=false`), `disabled_by_system` when the circuit breaker tripped, otherwise `active`.
  - `consecutive_failures` number, required
  - `last_success_at` string, nullable
  - `last_failure_at` string, nullable
  - `created_by` string, uuid, nullable
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `401`: Missing or invalid API key (`missing_api_key` / `invalid_api_key`)
- `404`: Webhook not found
- `429`: Rate limit exceeded (`rate_limit_exceeded`); see the Retry-After header

---

[API](https://skmtc.dev/virlo/apis/virlo-public-api.md) · [All operations](https://skmtc.dev/virlo/apis/virlo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/virlo/apis/virlo-public-api/revisions/3b69c6145087?raw)
