← Docs Für Entwickler

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 2xx und 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.