/v1/webhooks
Bald verfügbarRegistriert eine HTTPS-URL, an die später Ereignisse gepusht werden (job.completed, message.bounced, suppression.changed). Bis die Zustellung gebaut ist, holt das Portal Job-, Mail- und Sperrstatus ab. Die Antwort enthält EINMALIG ein signing_secret — damit jede Zustellung über den Header X-NewsletterKit-Signature verifiziert werden kann. Scope full.
Body-Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| url | string (URL) | erforderlich | HTTPS-Endpunkt der Kundenplattform (http wird abgelehnt). z. B. https://kunde.de/hooks/newsletterkit |
| events | string[] | optional | Abonnierte Ereignisse: job.completed | message.bounced | suppression.changed. Default: ["job.completed"]. z. B. ["job.completed","message.bounced"] |
Request · Next.js
const res = await fetch(`https://api.newsletterkit.ventureon.io/v1/webhooks`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NEWSLETTERKIT_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
url: "https://kunde.de/hooks/newsletterkit",
events: ["job.completed","message.bounced"],
}),
});
const data = await res.json();Response 200
{
"data": {
"id": "wh_5d33…",
"url": "https://kunde.de/hooks/newsletterkit",
"events": ["job.completed", "message.bounced"],
"active": true,
"signing_secret": "whsec_… (nur hier einmalig)"
},
"request_id": "…"
}signing_secret wird nur in dieser Antwort zurückgegeben und ist danach nicht mehr abrufbar — sicher speichern. Zustellungen tragen die Header X-NewsletterKit-Event, X-NewsletterKit-Delivery (Dedup) und X-NewsletterKit-Signature: t=<unix>,v1=<hmac>. Verifikation: HMAC-SHA256 über "<t>.<roher Body>" mit dem signing_secret bilden und mit v1 vergleichen.