Webhooks
Benachrichtigung, wenn ein neuer Entwurf bereit ist — dann vollständigen Beitrag per API abrufen.
Webhook-URL und Secret unter Integrationen konfigurieren. Wenn ein Entwurf fertig ist, POSTen wir article.ready mit Slug und Abrufhinweisen. Ihr Backend prüft HMAC und ruft GET /posts/{slug} für contentHtml auf.
Ereignisse
article.ready— Ein qualitätsgeprüfter Entwurf ist fertig — vollständiges HTML per API mit dem Slug abrufenwebhook.test— Gesendet bei Aufruf von POST /api/v1/webhooks/test
Signaturprüfung
Wir senden X-GrowthDaily-Timestamp (Unix-Sekunden) und X-GrowthDaily-Signature (hex HMAC-SHA256 von `{timestamp}.{rawBody}` mit Ihrem Webhook-Secret).
import { createHmac, timingSafeEqual } from "crypto";
function verify(secret, rawBody, timestamp, signatureHex) {
const expected = createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
const a = Buffer.from(expected, "utf8");
const b = Buffer.from(signatureHex, "utf8");
if (a.length !== b.length) return false;
return timingSafeEqual(a, b);
}{
"event": "article.ready",
"siteId": "uuid",
"postId": "uuid",
"slug": "my-post",
"title": "My post",
"trustScore": 94,
"qualityBand": "premium",
"assuranceLabel": "High confidence",
"language": "en",
"sourcePostId": null,
"status": "draft",
"at": "2026-07-21T12:00:00.000Z",
"fetch": {
"path": "/api/v1/sites/{siteId}/posts/{slug}",
"hint": "GET with Bearer token to import contentHtml"
}
}Nach article.ready
Slug aus Payload (oder fetch.path) verwenden, um GET /api/v1/sites/{siteId}/posts/{slug} aufzurufen. contentHtml, seo und faqJsonLd ins CMS importieren — nach Ihrem Zeitplan veröffentlichen.
Zustellungsgarantien
Jedes Ereignis wird einmal per HTTP POST mit 8 Sekunden Timeout gesendet. Fehlgeschlagene Zustellungen werden nicht automatisch wiederholt. Ein fehlgeschlagener Webhook blockiert keine neuen Entwürfe. Alle Versuche stehen unter Integrationen → Letzte Zustellungen.
Idempotente Handler
Schnell HTTP 2xx zurückgeben. Importe per postId (oder siteId + slug) deduplizieren. Verpasste Ereignisse mit GET /posts und updatedAfter nachziehen — siehe API-Referenz.
Zustellungsprotokoll
Erfolg und Fehler erscheinen im Integrationsbereich mit HTTP-Status und Zeitstempel.