Skip to main content
PATCH
/
v1
/
webhooks
/
{id}
Update Webhook
curl --request PATCH \
  --url https://api.shoal.xyz/v1/webhooks/{id} \
  --header 'Authorization: Bearer <token>'

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

ParameterTypeRequiredDescription
idintegerYesWebhook ID

Request Body

All fields are optional — include only the ones you want to update.
FieldTypeDescription
urlstringNew HTTPS endpoint
event_typesstring[]New event type subscriptions: radar, signal, or both
activebooleanEnable or disable the webhook

Request

cURL
# 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
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
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

StatusErrorCause
400No fields to updateRequest body has no recognized fields
400URL must use HTTPSNon-HTTPS URL
400event_types must only contain: radar, signalInvalid event type
404Webhook not foundID doesn’t exist or belongs to another account