Skip to main content
Instead of polling for changes, register an endpoint and Truscan will POST a signed JSON body to it when an event occurs.
Every delivery carries two headers: Always verify the signature before trusting a payload. Your endpoint URL is not a secret, and anyone who learns it can post to it.

Create an endpoint

Choose which events it should receive.
The response is the only time the signing secret is readable. Store it before you close the connection. It cannot be retrieved later, only replaced by deleting the endpoint and creating a new one.

Responding

Return any 2xx status. Truscan reads the status line and nothing else, so an empty 200 is a perfectly good response. Acknowledge first and process afterwards. The delivery attempt is subject to a 10 second timeout, and work done before you respond counts against it.

Endpoint requirements

Truscan resolves the hostname and refuses to connect to private, loopback, link-local or metadata addresses. localhost and internal ranges will not work. For local development, use a tunnelling service that gives you a public hostname.
A 301 or 302 is treated as a failed delivery. Register the final URL.
A URL containing a username and password is rejected. Authenticate the delivery with the signature instead.

Testing

POST /api/webhooks/{id}/test queues a synthetic ping event so you can verify an endpoint before real activity happens.
It arrives within a few seconds and appears in the delivery log like any other event.

Pausing and removing

PATCH /api/webhooks/{id} with "enabled": false stops delivery without losing the endpoint or its secret. Queued deliveries for a paused endpoint are abandoned rather than held. DELETE /api/webhooks/{id} removes the endpoint and its delivery history.

Limits

  • 10 endpoints per account
  • 10 second timeout per delivery attempt
  • Delivery history is kept for 30 days