Skip to main content

Update Webhook

The Update Webhook endpoint changes a webhook's URLs, subscribed events, name, or active state. Every field is optional; send only what you want to change, and the rest is left untouched.

When to use it​

Use this endpoint to rotate delivery URLs, add or remove subscribed event types, or temporarily pause delivery by setting isActive to false without deleting the webhook and losing its secret and delivery history.

Example request​

curl -X PATCH "https://api.turbodocx.com/api/webhooks/signature" \
-H "Authorization: Bearer $TURBODOCX_API_KEY" \
-H "x-rapiddocx-org-id: $TURBODOCX_ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com/webhooks/turbodocx"],
"events": ["signature.document.completed"],
"isActive": true
}'

urls and events each replace the webhook's full list, they do not merge with the existing values. If you include name, it must still be unique among your organization's active webhooks.

Example response​

On success the endpoint returns 200 OK with the updated webhook, in the same shape as Get Webhook (without deliveryStats or availableEvents):

{
"data": {
"id": "b7e2c4a1-3f9d-4e6a-8c1b-5d0f7a2e9c34",
"orgId": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"name": "signature",
"urls": ["https://example.com/webhooks/turbodocx"],
"events": ["signature.document.completed"],
"isActive": true,
"createdBy": "f5e6d7c8-9a0b-4c1d-2e3f-4a5b6c7d8e9f",
"createdOn": "2026-05-01T14:22:10.000Z",
"updatedOn": "2026-05-02T09:10:00.000Z",
"secretExists": true,
"maskedSecret": "whs***7f8"
},
"message": "Webhook updated successfully"
}

Common errors​

StatusWhenResponse body
401Missing or invalid API key/token, or the organization cannot be resolvedEmpty (status only)
403The key's role is not administratorEmpty (status only)
404No webhook with that name exists in your organization{ "error": "Webhook not found" }
400A field fails validation, or a URL in urls is not HTTPS{ "message", "type": "ValidationError", "data": { "errors": [...] } }
409Renaming to a name another active webhook already uses{ "message", "error": "WebhookNameTaken", "data": { "constraint", "orgId", "name" } }