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>'
Update one or more fields on an existing webhook. Only include the fields you want to change.

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