Documentation
Webhooks
React to quack events in real time from your own systems.
Setup
Create an endpoint at app.quackstack.fyi/settings/webhooks. We sign every delivery with HMAC-SHA256 in the X-Quackstack-Signature header.
Events
quack.created— a new session startedquack.completed— session ended (timeout or:done)quack.shared— a session was shared externallyquota.exceeded— monthly allowance hitquota.warning— 80% of allowance used
Payload
json{
"id": "evt_8h2j",
"type": "quack.completed",
"created": 1717200000,
"data": {
"quack_id": "qk_4f1a",
"user_id": "usr_zzz",
"duration_ms": 12480,
"messages": 8
}
}Verifying signatures
typescriptimport { createHmac, timingSafeEqual } from "crypto";
function verify(body: string, sig: string, secret: string) {
const expected = createHmac("sha256", secret).update(body).digest("hex");
return timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}Retries
We retry failed deliveries with exponential backoff over 24 hours. Respond with any 2xx within 5s to acknowledge.