Webhooks
Webhooks POST a signed JSON message to your URL when something happens on your account. Add them in the panel under
Webhooks (up to 10 per login), pick the events, and copy the secret used to sign deliveries.
The Test button sends a webhook.test event.
Events
A webhook with no events selected receives all of them. Reseller sub-users with their own webhooks receive
rotation.completed and quota.exceeded for the proxies assigned to them.
Delivery
- One attempt, 5 second timeout, no retries, redirects not followed. Answer with any
2xxquickly and do the work afterwards. Anything else is logged as a failed delivery (visible in the panel). id(=X-Hyp-Delivery) is unique per delivery; use it to ignore duplicates.- URLs must be public
http(s)addresses — private, loopback and link-local targets are refused.
Verifying the signature
X-Hyp-Signature is sha256= + hex HMAC-SHA256 of "<X-Hyp-Timestamp>.<raw request body>", keyed with the
webhook's secret. Always verify against the raw body (before JSON parsing), compare in constant time, and reject
old timestamps (we suggest 5 minutes).
Field notes
rotation.completed→statusisok,failedornot_implemented;okistrueonly forok;erroris set when it failed.triggered_byis where the rotation came from:api,link,panel,auto.quota.exceededfires once whenused_bytesreachesquota_bytes, and again only after the quota is reset or raised.