Webhooks ermöglichen es Surfer, Ihren Server sofort zu benachrichtigen, wenn etwas passiert – z. B. wenn ein Content Editor die Verarbeitung abgeschlossen hat oder ein Auto-Optimize-Lauf beendet ist, sodass Sie nicht ständig auf Updates abfragen müssen.
Die Webhook-Einrichtung wird vom Support-Team durchgeführt. Gehen Sie wie folgt vor:
Richten Sie einen HTTPS-Endpunkt auf Ihrer Seite ein, der POST-Anfragen akzeptiert und mit HTTP 200 OK antwortet.
Kontaktieren Sie den Surfer-Support per E-Mail oder Live-Chat und teilen Sie die URL mit.
Der Support registriert den Endpunkt und sendet Ihnen einen Verification-Key zur Authentifizierung eingehender Anfragen auf Ihrer Seite.
Nach der Einrichtung sendet Surfer eine POST-Anfrage an Ihren Endpunkt, wenn ein unterstütztes Ereignis ausgelöst wird. Jede Anfrage enthält einen Verification-Key-Header und einen JSON-Body.
Alle Webhook-Ereignisse folgen der gleichen Struktur:
{
"id": 123,
"type": "event.name.here",
"timestamp": "2024-06-01T12:00:00Z",
"payload": {
...
}
}
Feld | Typ | Beschreibung |
| integer | Eindeutige Benachrichtigungs-ID |
| string | Ereignisname (siehe vollständige Liste unten) |
| string | ISO8601 UTC-Zeitstempel des Zeitpunkts, zu dem das Ereignis ausgelöst wurde |
| object | Ereignisspezifische Daten (variiert je nach Ereignistyp) |
Wird ausgelöst, nachdem POST /api/v2/workspaces/{workspace_id}/content_editors die Verarbeitung abgeschlossen hat.
Ereignis | Wann es ausgelöst wird |
| Content Editor ist einsatzbereit |
| Verarbeitung fehlgeschlagen |
Payload-Felder: draft_id (integer), permalink_hash (string)
{
"id": 123,
"type": "content_editor.initialization.completed",
"timestamp": "2024-06-01T12:00:00Z",
"payload": {
"draft_id": 5632898,
"permalink_hash": "kKi7n3pkRk7Gw5cxKDiBAbCAybnDTt2z"
}
}
Wird ausgelöst, nachdem Sie den Inhalt in einem Content Editor über die API aktualisiert haben.
Ereignis | Wann es ausgelöst wird |
| Bewertung nach einer Inhaltsänderung aktualisiert |
Payload-Felder: draft_id (integer), permalink_hash (string), content_score (integer)
{
"id": 124,
"type": "content_editor.content_score.recalculated",
"timestamp": "2024-06-01T12:05:00Z",
"payload": {
"draft_id": 5632898,
"permalink_hash": "kKi7n3pkRk7Gw5cxKDiBAbCAybnDTt2z",
"content_score": 74
}
}
Wird während und nach der Surfer-KI-Artikelgenerierung ausgelöst.
Ereignis | Wann es ausgelöst wird |
| Artikel vollständig generiert |
| Gliederung ist fertig und wartet auf Überprüfung (nur wenn |
| Generierung fehlgeschlagen |
Payload-Felder: draft_id (integer), permalink_hash (string)
Wird ausgelöst, nachdem eine Auto-Optimize-Ausführung abgeschlossen, fehlgeschlagen oder abgebrochen wurde.
Ereignis | Wann es ausgelöst wird |
| Ausführung abgeschlossen |
| Ausführung fehlgeschlagen |
| Ausführung wurde abgebrochen |
Payload-Felder: job_id (integer), draft_id (integer), result (string — nur bei completed)
Das result-Feld ist entweder "optimized" (Inhalt wurde geändert) oder "nothing_to_optimize" (Inhalt war bereits gut optimiert).
{
"id": 125,
"type": "content_editor.auto_optimize.completed",
"timestamp": "2024-06-01T12:10:00Z",
"payload": {
"job_id": 456,
"draft_id": 5632898,
"result": "optimized"
}
}
Ereignis | Wann es ausgelöst wird |
| SEO-Score wurde berechnet |
| SEO-Score-Berechnung fehlgeschlagen |
Ereignis | Wann es ausgelöst wird |
| KI-Suchbewertung berechnet |
| KI-Suchbewertungsberechnung fehlgeschlagen |
Ereignis | Wann es ausgelöst wird |
| Gliederungsgenerierung abgeschlossen |
| Gliederungsgenerierung fehlgeschlagen |
Ereignis | Wann es ausgelöst wird |
| Zusätzliche Konkurrenten geladen |
| Laden zusätzlicher Konkurrenten fehlgeschlagen |
Ereignis | Gilt für |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| V1 + V2 |
| Nur V2 |
| Nur V2 |
| Nur V2 |
| Nur V2 |
| Nur V2 |
| Nur V2 |
| Nur V2 |
| Nur V2 |