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.Responding
Return any2xx 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
Must be publicly reachable over HTTPS
Must be publicly reachable over HTTPS
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.Redirects are not followed
Redirects are not followed
A
301 or 302 is treated as a failed delivery. Register the final URL.Credentials do not belong in the URL
Credentials do not belong in the 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.
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