> ## Documentation Index
> Fetch the complete documentation index at: https://reach-owl.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# PUT/DELETE /api/v1/webhooks/{id} — Update or Remove a Webhook

> Update the endpoint URL, event subscriptions, or campaign scope on a webhook. DELETE permanently removes the subscription and stops all future deliveries.

Once a webhook is registered, you can change its target URL, the events it listens for, or the campaign it is scoped to. Use DELETE to remove the subscription entirely.

## Update a webhook

Send a `PUT` request to replace the webhook configuration. All body fields are accepted.

<ParamField path="webhook_id" type="integer" required>
  The ID of the webhook to update.
</ParamField>

<ParamField body="url" type="string" required>
  The HTTPS endpoint that will receive event payloads.
</ParamField>

<ParamField body="events" type="array" required>
  Array of event type strings to subscribe to. Replaces the existing event list.
</ParamField>

<ParamField body="campaign_id" type="integer">
  Scope events to a specific campaign. Omit to receive events from all campaigns.
</ParamField>

```bash theme={null}
curl -X PUT "https://reachowl.com/api/v1/webhooks/1" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.example/hooks/reachowl",
    "events": [
      "contact-is-sent-a-message",
      "contact-reply-to-your-message"
    ],
    "campaign_id": 123
  }'
```

## Delete a webhook

Send a `DELETE` request to permanently remove the subscription. ReachOwl stops sending payloads to the URL immediately.

```bash theme={null}
curl -X DELETE "https://reachowl.com/api/v1/webhooks/1" \
  -H "Authorization: Bearer {token}"
```

A successful delete returns `204 No Content`.

<Warning>
  Deletion is permanent. If you want to temporarily stop receiving events, update the webhook with a narrower event list instead.
</Warning>
