Webhooks & Integrationen
Erhalte einen signierten HTTP-POST, sobald ein Video transkribiert oder analysiert wurde, und leite ihn in deine eigenen Systeme weiter.
So funktioniert's
Du hinterlegst eine Ziel-URL im Webhooks-Bereich der App und wählst aus, welche Events du empfangen willst. Sobald ein Event auslöst, schickt WATCH4ME einen POST mit JSON-Body an deine URL. Jede Zustellung ist HMAC-signiert, damit du die Echtheit prüfen kannst.
Beispiel-Payload
Die genauen Felder siehst du in deinen Webhook-Einstellungen — nimm das hier als Beispielstruktur und prüfe die tatsächlichen Felder dort.
{
"event": "ai_summary_ready",
"video": {
"id": "abc123",
"title": "Building reliable webhooks",
"url": "https://www.youtube.com/watch?v=abc123",
"channelTitle": "Example Channel"
},
"summary": "Short AI-generated summary of the video…",
"topics": ["webhooks", "automation", "reliability"],
"createdAt": "2026-06-29T10:00:00Z"
} Signatur verifizieren
WATCH4ME signiert den rohen Request-Body mit deinem Signing Secret (HMAC-SHA256) und schickt das Ergebnis in einem Signatur-Header. Berechne ihn auf deiner Seite neu und vergleiche in konstanter Zeit:
import crypto from 'node:crypto';
// Recompute the HMAC over the RAW request body and compare in constant time.
export function verifySignature(rawBody, signatureHeader, signingSecret) {
const expected = crypto
.createHmac('sha256', signingSecret)
.update(rawBody)
.digest('hex');
const a = Buffer.from(expected);
const b = Buffer.from(signatureHeader || '');
return a.length === b.length && crypto.timingSafeEqual(a, b);
} Ein minimaler Receiver (Express)
Prüfe immer gegen den rohen Body — wer vorher parst, verändert womöglich Bytes und bricht damit die Signatur.
import express from 'express';
const app = express();
// IMPORTANT: use the raw body so the signature matches byte-for-byte.
app.post('/webhooks/watchforme', express.raw({ type: 'application/json' }), (req, res) => {
const sig = req.header('X-WATCH4ME-Signature');
if (!verifySignature(req.body, sig, process.env.WATCHFORME_SIGNING_SECRET)) {
return res.status(401).send('invalid signature');
}
const payload = JSON.parse(req.body.toString('utf8'));
// handle payload.event …
res.sendStatus(200); // ack quickly; do slow work async
}); Best Practices
- Antworte schnell mit
2xxund erledige die aufwendige Arbeit danach asynchron. - Mach deine Handler idempotent — dasselbe Event kann mehrfach zugestellt werden.
- Bewahre das Signing Secret sicher auf (Env-Variable, niemals im Client-Code).
- Logge die Zustellungen; die App führt zusätzlich eine Zustellhistorie, die du einsehen kannst.
No-Code-Optionen
Richte den Webhook auf Zapier, Make oder n8n und verteile die Ergebnisse an hunderte Apps, ohne selbst einen Receiver zu schreiben.