SautiDesk
SautiDesk API
Webhooks

Create a webhook

POST
/v1/desk/webhooks

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
AuthorizationBearer <token>

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"}
FieldTypeDescription
webhookrequiredobject
idrequiredstring
urlrequiredstring
descriptionrequiredstring
eventsrequiredstring[]
enabledrequiredbooleanTrue to switch it on, false to switch it off.
secret_prefixrequiredstring
created_bystring | null
created_atrequiredstring
updated_atrequiredstring
last_deliveryrequiredany
statusrequiredstringThe status to set.
atrequiredstring
secretrequiredstringA 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"  }'