HTTP API
Webhooks
Push alerts to Slack, PagerDuty, or your own endpoint as they happen.
Configure
Add webhook endpoints in Settings → Webhooks. Each endpoint can subscribe to specific event categories:
qos.rebuffer_spike,qos.startup_regression,qos.error_spikebilling.payment_failure,billing.churn_spikeingest.quota_80pct,ingest.quota_exceededcontent.new_release_detected,content.completion_drop
Payload format
json
POST https://your-app.com/tapemetric-webhook
Content-Type: application/json
X-Tapemetric-Signature: sha256=a1b2c3d4...
X-Tapemetric-Delivery: d5e6f7g8-9h0i-1j2k-3l4m-5n6o7p8q9r0s
{
"id": "evt_abc123",
"type": "qos.rebuffer_spike",
"created_at": "2026-04-23T18:28:00Z",
"tenant_slug": "tapemetric",
"data": {
"severity": "critical",
"region": "Maharashtra",
"current_rate": 8.4,
"baseline_rate": 3.1,
"affected_sessions": 24000,
"pop": "ap-south-1"
}
}Signature verification
Every request is signed with HMAC SHA-256. Compute it on your end and compare constant-time.
typescript
import { createHmac, timingSafeEqual } from 'crypto';
function verify(req: Request, body: string, secret: string): boolean {
const signature = req.headers.get('X-Tapemetric-Signature') ?? '';
const expected = 'sha256=' + createHmac('sha256', secret).update(body).digest('hex');
return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}Slack adapter
Paste a Slack Incoming Webhook URL directly — we translate the payload into a formatted message. No code required.
Retries
Non-2xx responses are retried with exponential backoff: 30s, 2m, 10m, 1h, 6h, 24h. After six failures the webhook is auto-disabled and we email you.
Return 2xx within 5 seconds. If you can’t, enqueue the work and respond immediately. Slow webhook endpoints cause backpressure on our delivery workers.
Delivery log
The admin panel shows the last 200 deliveries per endpoint — request body, response code, and latency. Click any delivery to replay it.