Skip to main content
Zurück zu Docs
🔌Automatisierung & API

Webhooks

Sende Events an Discord, Slack, n8n oder deine eigenen Systeme

Webhooks schieben Events von Predite in dem Moment, in dem sie passieren, an deinen eigenen Server — ganz ohne Polling. Wenn ein Bot einen Trade ausführt, ein Stop-Loss auslöst oder der Scanner einen neuen Edge findet, sendet Predite einen HTTP-POST an eine URL, die du kontrollierst. Webhooks sind ein Feature des Bot-Plans und werden in den Einstellungen auf der Seite Webhooks verwaltet.

Einen Webhook anlegen

Du brauchst drei Dinge: eine URL, die POST-Requests annimmt, ein Label, damit du deine Webhooks auseinanderhalten kannst, und mindestens ein Event, das du abonnierst.

Deine URL muss in der Produktion https sein. Predite verweigert die Zustellung an private, Loopback- oder interne Netzwerkadressen und folgt keinen Weiterleitungen — das schützt dein Konto davor, dass ein falsch konfigurierter Endpunkt genutzt wird, um in unsere Infrastruktur hineinzugreifen.

Events

Es gibt sechs Events. Vier sind heute aktiv:

  • ev_signal — der Scanner hat ein neues Expected-Value-Signal veröffentlicht. Geht an jeden Abonnenten (nicht nutzerspezifisch).
  • arb_opportunity — eine neue plattformübergreifende Arbitrage-Gelegenheit wurde gefunden. Geht ebenfalls an jeden Abonnenten.
  • bot_trade_executed — einer deiner Bots hat eine Position eröffnet, live oder paper.
  • stop_loss_triggered — einer deiner schützenden Exits (Stop-Loss, Take-Profit oder Trailing-Stop) hat eine Position geschlossen.

Zwei weitere sind reserviert und im Dashboard mit soon gekennzeichnet — whale_move und resolution_imminent. Du kannst sie heute schon abonnieren, aber sie liefern noch nichts aus.

Events zu deiner eigenen Aktivität gehen immer nur an dich. Marktweite Events gehen an alle, die sie abonniert haben.

Payload-Format

Jede Zustellung ist ein POST mit einem JSON-Body in dieser Form:

  • event — der Event-Name, zum Beispiel bot_trade_executed
  • timestamp — wann das Event passiert ist, in ISO-8601
  • data — ein Objekt mit den Details zu diesem Event

Dazu sendet Predite diese Header:

  • X-Predite-Event — der Event-Name
  • X-Predite-Timestamp — derselbe Timestamp
  • X-Predite-Signature — die Signatur, formatiert als sha256=<hex>

Die Signatur verifizieren

Jeder Webhook hat sein eigenes Secret, das im Dashboard angezeigt wird und mit whsec_ beginnt. Die Signatur ist ein HMAC-SHA256 des rohen Request-Bodys, mit diesem Secret als Schlüssel, hex-kodiert und mit sha256= als Präfix.

Zum Verifizieren berechnest du den HMAC des Bodys, den du empfangen hast, und vergleichst ihn mit dem Header X-Predite-Signature. Stimmen sie nicht überein, weise den Request zurück — er kam nicht von uns. Verifiziere immer, bevor du auf eine Payload reagierst, und nutze immer den rohen Body, nicht eine neu serialisierte Fassung des geparsten JSON.

Zustellung, Fehlschläge und Auto-Deaktivierung

  • Jedes Event wird als einzelner Versuch mit einem Timeout von 5 Sekunden zugestellt. Es gibt keine automatischen Wiederholungen — baue deinen Endpunkt so, dass er schnell antwortet und die langsame Arbeit danach erledigt.
  • Jede Nicht-2xx-Antwort, jedes Timeout und jeder Verbindungsfehler zählt als Fehlschlag.
  • Nach 10 aufeinanderfolgenden Fehlschlägen wird der Webhook automatisch deaktiviert und als AUTO-DISABLED angezeigt. Ein einziger Erfolg setzt den Zähler zurück.
  • Das erneute Aktivieren eines deaktivierten Webhooks im Dashboard löscht den Fehlerzähler.

Jeder Versuch wird erfasst, sodass das Dashboard die Gesamtzahl der Zustellungen, die aufeinanderfolgenden Fehlschläge, den letzten Erfolg, den letzten Fehlschlag und den Grund des Scheiterns anzeigt.

Gut zu wissen

  • Antworte mit 2xx, sobald du das Event gespeichert hast; alles Langsamere riskiert den 5-Sekunden-Timeout.
  • Da es keine Wiederholungen gibt, behandle Webhooks als schnellen Benachrichtigungskanal und nicht als garantiertes Register — gleiche gegen die Public API ab, wenn du Gewissheit brauchst.
  • Du kannst einen Webhook jederzeit pausieren, statt ihn zu löschen.