name, url, events (replaces the whole set), data_source, active (pause/resume without deleting), and secret. Setting secret to a non-empty string replaces it; an empty string "" clears it; omitting it leaves it unchanged. At least one field is required. Returns 200 with the refreshed subscription. Non-entitled plans → 403 forbidden. An id that does not exist or belongs to another org → 404. PATCH is idempotent; it does not consume the Idempotency-Key header.curl --location --request PATCH 'https://api.mailfloss.com/v1/webhooks/' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"url": "string",
"events": [
"status-undeliverable"
],
"data_source": "string",
"active": true,
"secret": "string"
}'{
"id": "aBcDeFgHiJkLmNoPq",
"name": "CRM sync — undeliverables",
"url": "https://example.com/mailfloss/webhook",
"events": [
"status-undeliverable",
"job-finished"
],
"data_source": "all",
"active": true,
"has_secret": true,
"created_at": "2026-07-10T04:12:00.000Z",
"updated_at": "2026-07-10T04:12:00.000Z"
}