Skip to main content
Each endpoint uses one of two methods. Headers: Accept the request if any v1= value matches, and reject timestamps more than 5 minutes old (replay protection). Use the raw body bytes, before any JSON parsing.
The Python sample needs Python 3.9 or later (removeprefix).

Shared secret header

For tools that cannot compute an HMAC (for example GoHighLevel inbound webhooks): the secret is sent as the value of a header you name (default X-Telzino-Secret). Compare it in constant time. Rotating a shared secret is a scheduled switch: you choose when the new value takes over, so you can update your receiver first. Rotating again replaces a switch that is already scheduled, so the admin portal and dashboard ask you to confirm first. This header has no timestamp or signature, so anyone who captures a request can send it again. De-duplicate on the x-telzino-event-id header.

Other headers

x-telzino-event-id, x-telzino-event-type, x-telzino-delivery-id (quote it to support), x-telzino-attempt.