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

# Update a webhook endpoint

`PATCH /api/v1/webhooks/{id}`

## Request

- Base URL: `https://app.reachium.io`
- URL: `https://app.reachium.io/api/v1/webhooks/{id}`
- Auth: HTTP bearer

Any subset of the fields below may be sent; at least one must change.

## Path parameters

- `id` string, required

## Request body

- object
  - `url` string, uri
  - `events` string[]
  - `category_filters` string[], nullable
  - `campaign_filters` string[], nullable: Only deliver events for these campaign ids (must already belong to this workspace). Omit or null for every campaign.
  - `description` string, nullable
  - `is_active` boolean

## Response `200`

Updated.

- object
  - `data` WebhookEndpoint, required
    - `id` string, required
    - `workspace_id` string, required
    - `url` string, uri, required
    - `events` string[], required
    - `category_filters` string[], nullable, required
    - `campaign_filters` string[], nullable, required
    - `kind` 'webhook', required
    - `is_active` boolean, required
    - `disabled_reason` string, nullable, required
    - `consecutive_failures` integer, required
    - `description` string, nullable, required
    - `created_by` string, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `error` unknown, required

## Other responses

- `400`: A validation failure (invalid_url, https_required, private_host, invalid_events, invalid_category_filters, invalid_campaign_filters) or nothing_to_update (empty patch).
- `401`: Missing or invalid API key. Send `Authorization: Bearer rmcp_...` (code unauthorized).
- `402`: Workspace billing is blocked; mutating requests are refused (code billing_blocked).
- `403`: The key's granted scopes do not satisfy this endpoint's minimum required scope (code insufficient_scope).
- `404`: No such webhook endpoint in this workspace (code not_found).
- `429`: Rate limited: shared `mcp:ip:{ip}` (600/60s) or `mcp:key:{keyId}` (120/60s) bucket, the SAME buckets the MCP endpoint uses (code rate_limited).
- `500`: Update failed (code internal_error).
- `503`: The billing-status check itself failed (DB error): fails closed rather than letting a blocked workspace through; safe to retry (code billing_check_failed).

---

[API](https://skmtc.dev/reachium/apis/reachium-api.md) · [All operations](https://skmtc.dev/reachium/apis/reachium-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reachium/apis/reachium-api/revisions/11682826692b?raw)
