Webhooks
Pro and above can register up to 5 HTTPS endpoints in Dashboard → Webhooks.
Events: quota.warning (80%), quota.exceeded, request.error, bulk.completed, bulk.failed, key.created, key.disabled, plan.changed, webhook.test.
Each delivery is a POST with body { id, event, data, deliveredAt } and header X-Apizie-Signature: sha256=<hex>, an HMAC-SHA256 of the raw body using your webhook secret.
import { createHmac, timingSafeEqual } from "node:crypto";
function verify(rawBody, header, secret) {
const want = "sha256=" + createHmac("sha256", secret).update(rawBody).digest("hex");
return header && want.length === header.length &&
timingSafeEqual(Buffer.from(want), Buffer.from(header));
}