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

# Update Webhook

> Update a webhook URL, event types, or active status

Update one or more fields on an existing webhook. Only include the fields you want to change.

<Note>
  Webhook management is available only on plans that include webhook access.
</Note>

## Path Parameters

| Parameter | Type    | Required | Description |
| --------- | ------- | -------- | ----------- |
| `id`      | integer | Yes      | Webhook ID  |

## Request Body

All fields are optional — include only the ones you want to update.

| Field         | Type      | Description                                              |
| ------------- | --------- | -------------------------------------------------------- |
| `url`         | string    | New HTTPS endpoint                                       |
| `event_types` | string\[] | New event type subscriptions: `radar`, `signal`, or both |
| `active`      | boolean   | Enable or disable the webhook                            |

### Request

```bash cURL theme={null}
# Pause a webhook
curl -X PATCH "https://api.shoal.xyz/v1/webhooks/12" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"active": false}'
```

```python Python theme={null}
import os, requests

API_KEY = os.environ.get("SHOAL_API_KEY", "YOUR_API_KEY")

# Pause a webhook
r = requests.patch(
    "https://api.shoal.xyz/v1/webhooks/12",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={"active": False},
)
print(r.json())
```

```javascript JavaScript theme={null}
const API_KEY = process.env.SHOAL_API_KEY || 'YOUR_API_KEY';

// Pause a webhook
const res = await fetch('https://api.shoal.xyz/v1/webhooks/12', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ active: false }),
});
console.log(await res.json());
```

### Response (200)

```json theme={null}
{
  "data": {
    "id": 12,
    "url": "https://example.com/shoal-webhook",
    "secret_hint": "****f6a8",
    "event_types": ["radar", "signal"],
    "active": false,
    "created_at": "2026-03-10T12:00:00Z",
    "updated_at": "2026-03-10T16:00:00Z"
  }
}
```

### Errors

| Status | Error                                          | Cause                                          |
| ------ | ---------------------------------------------- | ---------------------------------------------- |
| 400    | No fields to update                            | Request body has no recognized fields          |
| 400    | URL must use HTTPS                             | Non-HTTPS URL                                  |
| 400    | `event_types` must only contain: radar, signal | Invalid event type                             |
| 404    | Webhook not found                              | ID doesn't exist or belongs to another account |
