Skip to main content
Clustr calls your server when something happens in any of your workspaces, so your systems hear about it right away. You get one webhook URL per organization. These calls need the exports:manage scope.
The organization webhook sends short events that tell you what happened; you fetch the data with the API. To receive the full results of one job, give that import a webhook_url (see Webhook Callbacks).

Set the URL

The URL must be https on a public host. The first call returns the signing secret (it starts with whsec_). It is shown once. A later PUT changes the URL and keeps the secret.

Events

Each call is a POST with a JSON body:
id is the event id. The same event always has the same id, also in the X-Clustr-Event-Id header. Store the ids you have handled and ignore repeats.

Check the signature

Every call carries X-Clustr-Signature: t=<unix seconds>,v1=<hex>. v1 is the HMAC-SHA256, keyed with your secret, of the text <t>.<raw request body>. Always do three things:
  1. Compute it on the raw bytes exactly as you received them.
  2. Compare in constant time.
  3. Reject a t more than five minutes old.

Retries

Answer with any 2xx within 10 seconds. Anything else, or no answer, is retried up to 8 times. The wait starts at 30 seconds, then 1, 2 and 4 minutes and so on, and is at most 6 hours. After the last try the delivery is marked failed and stays in GET /api/org/v1/webhook/deliveries. Redirects are not followed.

In MCP

Organization admins have org_get_webhook, org_set_webhook, org_rotate_webhook_secret and org_list_webhook_deliveries.