Docs durchsuchen

Guides und API-Endpunkte durchsuchen

Referenz

Webhooks

Status-Webhooks (Registrierung; Push bei ad.status_changed).

Verfügbar
GET

/v1/webhooks

Listet die registrierten Webhook-Endpunkte des Kunden mit URL, abonnierten Events, Status und Zustell-Statistik (letzte Zustellung, Fehlerzähler). Das signing_secret wird NICHT zurückgegeben (nur einmalig bei der Registrierung). Scope reporting genügt.

Request · Next.js

const res = await fetch(`https://api.campaignkit.ventureon.io/v1/webhooks`, {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
    },
});
const data = await res.json();

Response 200

{
  "data": [
    {
      "id": "wh_5d33…",
      "url": "https://kunde.de/hooks/campaignkit",
      "events": ["ad.status_changed"],
      "status": "active",
      "last_delivery_at": "2026-06-18T10:12:00Z",
      "failure_count": 0,
      "created_at": "2026-06-01T08:00:00Z"
    }
  ],
  "request_id": "…"
}
POST

/v1/webhooks

Registriert eine HTTPS-URL, an die Statusänderungen gepusht werden (z. B. Anzeige genehmigt/abgelehnt). So muss die Kundenplattform nicht pollen. Die Antwort enthält EINMALIG ein signing_secret — damit jede Zustellung über den Header X-CampaignKit-Signature verifiziert werden kann.

Body-Parameter

NameTypPflichtBeschreibung
urlstring (URL)erforderlichHTTPS-Endpunkt der Kundenplattform (http wird abgelehnt). z. B. https://kunde.de/hooks/campaignkit
eventsstring[]optionalAbonnierte Ereignisse. Default: ["ad.status_changed"] (aktuell einziges Event). z. B. ["ad.status_changed"]

Request · Next.js

const res = await fetch(`https://api.campaignkit.ventureon.io/v1/webhooks`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
      "Content-Type": "application/json",
      "Idempotency-Key": crypto.randomUUID(),
    },
    body: JSON.stringify({
      url: "https://kunde.de/hooks/campaignkit",
      events: ["ad.status_changed"],
    }),
});
const data = await res.json();

Response 200

{
  "data": {
    "id": "wh_5d33…",
    "url": "https://kunde.de/hooks/campaignkit",
    "events": ["ad.status_changed"],
    "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-CampaignKit-Event, X-CampaignKit-Delivery (Dedup) und X-CampaignKit-Signature: t=<unix>,v1=<hmac>. Verifikation: HMAC-SHA256 über "<t>.<roher Body>" mit dem signing_secret bilden und mit v1 vergleichen.