Tapemetric

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_spike
  • billing.payment_failure, billing.churn_spike
  • ingest.quota_80pct, ingest.quota_exceeded
  • content.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.