Create a webhook
Adds a webhook endpoint for the events given and returns its signing secret once. Use the single event * to receive everything. A workspace can have ten endpoints, and addresses inside a private network are refused.
Requires: desk.admin scope, workspace owner or admin.
Authorization
bearerAuth A SautiDesk API key. An owner or admin makes it under Settings in SautiDesk for a named person and picks the scopes. The key is shown once. Send it as Authorization: Bearer <key>. It acts as that person and as nobody else.
In: header
Request Body
application/json
Response
Created
Example
{ "webhook": { "id": "3f2b8c1e-5a4d-4e7b-9c10-2d6a8e4f1b37", "url": "https://example.com/file", "description": "example", "events": [ "example" ], "enabled": false, "secret_prefix": "example", "created_by": "example", "created_at": "2026-10-14T08:30:00Z", "updated_at": "2026-10-14T08:30:00Z", "last_delivery": { "status": "open", "at": "example" } }, "secret": "example-secret"}webhookrequiredobjectidrequiredstringurlrequiredstringdescriptionrequiredstringeventsrequiredstring[]enabledrequiredbooleanTrue to switch it on, false to switch it off.secret_prefixrequiredstringcreated_bystring | nullcreated_atrequiredstringupdated_atrequiredstringlast_deliveryrequiredanystatusrequiredstringThe status to set.atrequiredstringsecretrequiredstringA secret your server uses to check the message really came from SautiDesk.curl -X POST "https://api.sautidesk.com/v1/desk/webhooks" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/hooks/sautidesk", "events": [ "ticket.opened", "message.received", "call.missed" ], "description": "Zapier" }'