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 one or more fields on an existing webhook. Only include the fields you want to change.
Webhook management is available only on plans that include webhook access.
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
# 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}'
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())
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)
{
"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 |