Zum Inhalt springen
Clevera Hilfe-Center

Webhooks für Agenten-Events einrichten

Erhalte einen signierten POST-Request an deinen eigenen https-Endpunkt, wenn der Job eines Agenten abgeschlossen ist oder fehlschlägt, ein Agent auf eine Genehmigung wartet oder eine Dokumentationsseite veröffentlicht wird. Events, Payloads, Signaturprüfung, Wiederholungsversuche und automatische Deaktivierung.

Aktualisiert am 8 Min. Lesezeit

Ein Webhook sendet einen signierten POST an deinen eigenen Endpunkt, sobald etwas passiert – zum Beispiel, wenn der Job eines Agenten abgeschlossen ist oder auf eine Genehmigung wartet –, damit deine Systeme nicht pollen müssen. Dieser Artikel behandelt das Hinzufügen eines Endpunkts, die Events, das Payload, die Überprüfung der Signatur und was passiert, wenn Zustellungen fehlschlagen.

Bevor du beginnst

  • Webhooks sind in den Pro-, Business- und Custom-Plänen verfügbar („Webhooks sind ab Pro verfügbar“).
  • Nur der Workspace-Inhaber und Administratoren können Webhooks verwalten. Andere Mitglieder sehen „Nur Inhaber und Administratoren können Webhooks verwalten“.
  • Du benötigst eine öffentliche https-Adresse, die innerhalb von 10 Sekunden mit einem 2xx-Status antwortet.
  • Ein Workspace kann bis zu 10 Webhooks haben.

Einen Webhook hinzufügen

  1. Den Tab „Webhooks“ öffnen

    Öffne das Workspace-Menü, wähle AI agents & API und öffne dann Webhooks. Klicke auf Neuer Webhook.

    Der Webhooks-Tab mit einem Endpunkt unter example.com, den empfangenen Events und dem Zeitpunkt der letzten Sendung.
    Jeder Webhook zeigt seine Events, den Zeitpunkt der letzten Sendung und das Ende seines Geheimnisses an.
  2. Den Endpunkt eingeben

    • Endpoint URL: „Eine öffentliche HTTPS-Adresse.“ Zum Beispiel https://example.com/clevera/webhooks.
    • Beschreibung: optional, bis zu 200 Zeichen, zum Beispiel „Slack-Relay“.
  3. Die Events auswählen

    Wähle die Events aus, die du empfangen möchtest, oder Alle Events, einschließlich neuer. Events, die mit Bald markiert sind, werden akzeptiert, aber „Bisher sendet nichts dieses Event.“

    Der Dialog „Neuer Webhook“: Endpunkt-URL, Beschreibung und die zu sendenden Events, wobei noch nicht gesendete Events als „Bald“ markiert sind.
    Events, die mit „Bald“ markiert sind, werden akzeptiert, aber noch nicht gesendet.
  4. Erstellen und das Geheimnis speichern

    Klicke auf Webhook erstellen. Das Signing secret (es beginnt mit whsec_) wird einmalig angezeigt: „Kopiere es jetzt: Du wirst es nicht noch einmal sehen. Verwende es, um den Clevera-Signature-Header zu prüfen.“ Speichere es wie ein Passwort und klicke dann auf Ich habe es gespeichert.

  5. Ein Test-Event senden

    Öffne das ⋯-Menü des Webhooks und wähle Test-Event senden. Clevera sendet einmalig ein signiertes ping-Event (keine Wiederholungsversuche). „Test-Event gesendet“ bedeutet, dass es Clevera verlassen hat; prüfe Zustellungen auf die Antwort deines Endpunkts.

Events

Event Gesendet, wenn
job.started Ein Job, den ein Agent gestartet hat, beginnt zu laufen.
job.needs_input Ein Job wartet auf eine Person, zum Beispiel eine Genehmigung. Enthält den Link und wann die Anfrage abläuft.
job.succeeded Der Job wurde abgeschlossen.
job.failed Der Job ist fehlgeschlagen. Enthält den Fehlercode.
job.canceled Der Job wurde abgebrochen oder die Genehmigung wurde verweigert oder ist abgelaufen.
approval.requested Ein Agent hat unter Agentenanfragen um Genehmigung gebeten.
approval.decided Jemand hat die Anfrage genehmigt oder abgelehnt, oder sie ist abgelaufen.
site.published Eine Dokumentationsseite wurde veröffentlicht.
site.build_failed Die Veröffentlichung einer Dokumentationsseite ist fehlgeschlagen.
ping Du hast auf Test-Event senden geklickt. Benötigt kein Abonnement.

Diese Events sind als Bald gelistet und werden noch nicht gesendet: job.progress, video.ready, article.ready, research.completed, insights.weekly.

Job-Events decken Jobs ab, die Agenten starten (über einen API-Token oder eine verbundene App), nicht Videos, die Personen in der App starten.

Was Clevera sendet

Jede Zustellung ist ein POST mit einem JSON-Body und diesen Headern:

Header Wert
Content-Type application/json
User-Agent Clevera-Webhooks/1.0
Clevera-Event Der Event-Name, wie job.succeeded
Clevera-Delivery Die eindeutige ID der Zustellung. Eine erneute Zustellung wiederholt dieselbe ID, verwende sie also, um Duplikate zu ignorieren.
Clevera-Signature t=<unix time>,v1=<signature>

Payloads enthalten IDs, Links, Status und Zahlen, niemals den Inhalt selbst. Um ein fertiges Video oder einen Artikel zu lesen, rufe die API mit einem Token auf.

job.succeeded
{
  "id": "6f1c2d3e-4b5a-4c6d-8e9f-0a1b2c3d4e5f",
  "event": "job.succeeded",
  "created_at": "2026-10-20T14:03:11Z",
  "data": {
    "job": {
      "id": "job_8k2m4n6p8r0t2v4x",
      "kind": "video.create",
      "status": "succeeded",
      "error_code": null,
      "subject": { "type": "video", "id": "vid_example" },
      "credits_spent": 64
    },
    "needs_input": null,
    "workspace": { "id": "tm_example" }
  }
}
approval.requested
{
  "id": "0b9a8c7d-6e5f-4a3b-9c2d-1e0f9a8b7c6d",
  "event": "approval.requested",
  "created_at": "2026-10-20T14:01:02Z",
  "data": {
    "approval": {
      "id": "apr_example",
      "kind": "spend",
      "status": "pending",
      "credits_high": 80,
      "expires_at": "2026-10-21T14:01:02Z",
      "decided_at": null,
      "url": "https://app.clevera.ai/agents?tab=requests&team=tm_example"
    },
    "job": { "id": "job_8k2m4n6p8r0t2v4x", "kind": "video.create" },
    "workspace": { "id": "tm_example" }
  }
}

Die Signatur überprüfen

Prüfe jede Zustellung, bevor du ihr vertraust. Die Signatur ist ein HMAC-SHA256, verschlüsselt mit deinem Signing Secret, basierend auf dem Zeitstempel, einem Punkt und dem rohen Request-Body: <t>.<body>.

  1. Lese t und v1 aus dem Clevera-Signature-Header.
  2. Berechne HMAC-SHA256(secret, t + "." + rawBody) als Hex-Wert.
  3. Vergleiche ihn mit v1 in konstanter Zeit.
  4. Weise Zustellungen zurück, deren t älter als 5 Minuten ist, damit ein abgefangener Request nicht wiederholt werden kann.
verify.js
import crypto from 'node:crypto';

export function verifyClevera(rawBody, header, secret, toleranceSeconds = 300) {
  const parts = Object.fromEntries(header.split(',').map((p) => p.trim().split('=')));
  const t = Number(parts.t);
  if (!parts.v1 || !Number.isInteger(t)) return false;
  if (Math.abs(Date.now() / 1000 - t) > toleranceSeconds) return false;
  const expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
  return expected.length === parts.v1.length &&
    crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}

Verwende den Body exakt so, wie er empfangen wurde. Das Parsen und erneute Kodieren des JSON ändert die Bytes, wodurch die Signatur nicht mehr übereinstimmt.

Wiederholungsversuche und Fehler

Eine Zustellung gilt als zugestellt, wenn dein Endpunkt mit einem 2xx-Status antwortet. Alles andere führt zum Fehlschlag des Versuchs:

  • jeder andere Status, einschließlich Weiterleitungen (3xx werden nicht gefolgt);
  • keine Antwort innerhalb von 10 Sekunden (5 Sekunden für den Verbindungsaufbau);
  • eine Adresse, die nicht mehr im öffentlichen Internet aufgelöst werden kann.

Clevera wiederholt eine fehlgeschlagene Zustellung 5 Mal, nach 1 Minute, 5 Minuten, 30 Minuten, 2 Stunden und 6 Stunden. Der Response-Body deines Endpunkts wird nie gelesen.

Wenn 15 Zustellungen in Folge fehlschlagen, wird der Webhook ausgeschaltet: „Nach 15 fehlgeschlagenen Zustellungen in Folge ausgeschaltet. Repariere den Endpunkt und schalte ihn dann ein.“ Der Inhaber und die Administratoren erhalten eine Benachrichtigung „Webhook für host ausgeschaltet“: „Die Zustellungen sind ständig fehlgeschlagen. Repariere den Endpunkt und schalte ihn dann wieder ein.“ Events, die während der Deaktivierung auftreten, werden nicht gesendet. Test-Events zählen nicht dazu.

Einen Webhook verwalten

Klicke bei einem Webhook auf Zustellungen, um das Protokoll zu sehen, oder öffne das ⋯-Menü für die restlichen Optionen:

Option Was sie bewirkt
Bearbeiten Ändere die URL, die Events oder die Beschreibung.
Zustellungen Die letzten 100 Zustellungen mit ihrem Status (Zustellung erfolgreich, Fehlgeschlagen, Wird gesendet), Versuche und dem HTTP-Code. Erneut zustellen sendet einen Request erneut. Zustellungen werden 30 Tage lang gespeichert.
Test-Event senden Sendet ein signiertes ping.
Geheimnis neu generieren „Zustellungen werden sofort mit dem neuen Geheimnis signiert. Aktualisiere deinen Endpunkt, um es zu prüfen.“ Es gibt keine Überschneidung, aktualisiere deinen Endpunkt also direkt danach.
Ausschalten / Einschalten Zustellungen pausieren und fortsetzen.
Löschen „Wir hören auf, Events dorthin zu senden, und löschen das Zustellungsprotokoll. Dies kann nicht rückgängig gemacht werden.“

Wenn der Workspace den Pro-Plan verlässt

Webhooks bleiben gelistet und können weiterhin bearbeitet und gelöscht werden, aber es wird nichts gesendet. Zustellungen, die auf einen Wiederholungsversuch warten, enden mit plan_locked als fehlgeschlagen, und Test-Event senden sowie Erneut zustellen zeigen „Webhooks sind nicht in deinem Plan enthalten.“ Ein Upgrade zurück auf Pro startet den Versand erneut; es wird nichts gelöscht.

Fehlerbehebung

Nachricht Ursache Lösung
„Webhooks sind nicht in deinem Plan enthalten.“ Der Workspace ist nicht auf Pro, Business oder Custom. Upgrade auf Pro.
„Verwende eine https://-Adresse.“ Die URL beginnt mit http://. Stelle den Endpunkt über HTTPS bereit.
„Verwende einen Hostnamen, keine IP-Adresse.“ Die URL verwendet eine IP-Adresse. Verwende einen Domainnamen.
„Diese Adresse ist im öffentlichen Internet nicht erreichbar.“ Der Host löst sich zu einer privaten oder lokalen Adresse auf. Verwende einen öffentlichen Endpunkt oder ein Relay.
„Entferne den Benutzernamen und das Passwort aus der Adresse.“ Die URL enthält user:password@. Entferne sie; prüfe stattdessen die Signatur.
„Gib eine gültige Webadresse ein.“ Die URL ist ungültig. Auf Tippfehler prüfen.
„Wähle mindestens ein Event aus.“ Kein Event ausgewählt. Wähle mindestens ein Event aus.
„Dieser Workspace hat bereits 10 Webhooks.“ Das Limit des Workspaces. Lösche einen, den du nicht verwendest.
„Schalte den Webhook zuerst wieder ein.“ Du hast versucht, auf einem ausgeschalteten Webhook erneut zuzustellen. Schalte ihn ein und stelle dann erneut zu.
„Diese Zustellung wird noch gesendet.“ Die Zustellung wird noch wiederholt. Warte, bis sie abgeschlossen ist.
Zustellungen schlagen mit einem HTTP-Code fehl Dein Endpunkt hat mit einem Fehler geantwortet. Prüfe die Logs deines Endpunkts und stelle sicher, dass er schnell mit 2xx antwortet; führe langsame Aufgaben erst nach der Antwort aus.
Signaturen stimmen nie überein Der Body wurde vor der Prüfung geändert oder das Geheimnis ist alt. Prüfe gegen den rohen Body; generiere das Geheimnis neu, falls du unsicher bist.