WebhooksAPI

Erfahre sofort, ob ein Beitrag ankommt oder nicht

Registriere einmal eine URL, und FoPost ruft sie auf, sobald eine Zustellung abgeschlossen ist. Jedes Ereignis enthält Beitrags-ID, Konto, Plattform, Permalink oder Fehlertext, sodass dein System ohne Polling reagieren kann.

POST /v1/webhooks
curl -X POST https://api.fopost.com/v1/webhooks \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workspaceId": "9b2f6c1e-...",
    "url": "https://yourbrand.com/hooks/social",
    "events": ["delivery.published", "delivery.failed", "post.published", "post.failed"]
  }'

Wird beim Abschluss ausgelöst

Ein Ereignis pro Kontozustellung, gesendet, sobald das Netzwerk bestätigt oder ablehnt.

Signiert

Jede Anfrage trägt einen Signatur-Header, damit du prüfen kannst, dass sie von uns kommt.

Wiederholt

Eine Antwort außerhalb von 2xx wird mit Backoff wiederholt, bevor das Ereignis verworfen wird.

Ereignisse

Ereignisse decken den gesamten Veröffentlichungszyklus ab

delivery.published wird ausgelöst, wenn ein Netzwerk die Zustellung für ein Konto annimmt, und enthält den Permalink. delivery.failed wird ausgelöst, wenn nicht veröffentlicht wird, und enthält den Fehlertext der Plattform. post.published und post.failed werden einmal pro Beitrag ausgelöst, nachdem alle Konten abgeschlossen sind.

Webhook-Referenz lesen
delivery.published
{
  "event": "delivery.published",
  "data": {
    "postId": "7d3e0a52-...",
    "postAccountId": "a3c5e7f9-...",
    "accountId": "4a71d80b-...",
    "platform": "linkedin",
    "externalUrl": "https://linkedin.com/feed/update/..."
  },
  "timestamp": "2026-09-01T09:00:07Z"
}

delivery.published

Der Permalink, bereit zum Speichern oder Verlinken aus deinem CMS.

delivery.failed

Die Fehlermeldung des Netzwerks selbst, damit du die Ursache beheben kannst, statt zu raten.

Pro Workspace

Ein Webhook gehört zu einem Workspace und sieht nur dessen Beiträge.

Überprüfen

Prüfe die Payload, bevor du darauf reagierst

Jede Anfrage ist mit dem Secret signiert, das du beim Erstellen des Webhooks erhältst. Berechne die Signatur über den Raw Body, vergleiche sie mit dem Header und lehne alles ab, was nicht übereinstimmt. Antworte schnell mit 2xx und erledige die Arbeit danach.

Signaturprüfung ansehen
Handler
app.post('/hooks/social', async (req, res) => {
  const signature = req.header(SIGNATURE_HEADER) // header name is in the docs;
  if (!verify(req.rawBody, signature, process.env.WEBHOOK_SECRET)) {
    return res.status(401).end();
  }
  const { event, data } = req.body;
  await queue.add(event, data);
  res.status(200).end();
});

Signatur-Header

Prüfe mit dem Secret, das du beim Erstellen erhalten hast. Zum Rotieren neu anlegen.

Mit Zeitstempel

Mit dem timestamp kannst du veraltete Wiederholungen ignorieren und Ereignisse richtig ordnen.

Idempotent per ID

Wiederholungen tragen dieselbe Ereignis-ID, doppelte Zustellungen lassen sich also leicht verwerfen.

Verwalten

Endpunkte per Code erstellen, auflisten und entfernen

Webhooks sind einfache API-Objekte. Erstelle einen pro Umgebung, liste sie auf, um zu prüfen, was registriert ist, und lösche die, die du nicht mehr brauchst. Richte sie während der Entwicklung auf eine Staging-URL und wechsle mit einem Aufruf zur Produktion.

Jetzt bauen
Automatisierungen, die nach Zeitplan, auf einen Feed hin und netzwerkübergreifend laufen

Endpunkte auflisten

GET /v1/webhooks zeigt jede URL und die abonnierten Ereignisse.

Pro Umgebung

Registriere eine eigene URL für Staging, damit Testbeiträge nie die Produktion erreichen.

webhooks-Scope

Die Verwaltung von Endpunkten braucht einen eigenen Scope. Ein reiner Publish-Schlüssel kann keine hinzufügen.

Fragen zu Webhooks, beantwortet

Welche Ereignisse sind verfügbar?

Ereignisse zu Beiträgen, Zustellungen, Konten, Inbox und Automatisierungen. delivery.published und delivery.failed werden einmal pro Konto ausgelöst, ein Beitrag in drei Netzwerken erzeugt also bis zu drei davon. post.published und post.failed werden einmal pro Beitrag ausgelöst.

Wie prüfe ich einen Webhook?

Erstelle den Webhook und speichere das Secret aus der Antwort. Berechne mit diesem Secret eine Signatur über den Raw Request Body und vergleiche sie bei jedem Aufruf mit dem Signatur-Header.

Was passiert, wenn mein Endpunkt nicht erreichbar ist?

Jede Antwort außerhalb von 2xx und jedes Timeout wird mit Backoff wiederholt. Antworte schnell mit 2xx und verarbeite das Ereignis im Hintergrund, um sicher im Zeitfenster zu bleiben.

Kann ich Ereignisse nur für ein Konto empfangen?

Zustellungsereignisse enthalten accountId und Plattform, filtere also auf deiner Seite. Webhooks gelten für einen Workspace, nicht für ein einzelnes Konto.

Kann ich testen, ohne wirklich zu veröffentlichen?

Richte einen Webhook auf eine URL zum Mitschneiden von Anfragen und plane einen Beitrag für ein Testkonto. Die Ereignisse sehen in jeder Umgebung gleich aus.

Brauche ich überhaupt Webhooks?

Nein. GET /v1/posts/:id/deliveries liefert denselben Status auf Abruf. Webhooks ersparen dir das Polling.

Baue noch heute auf Webhooks

Der Start ist kostenlos und die vollständige API inklusive. Erstelle einen Schlüssel und mach in wenigen Minuten deinen ersten Aufruf.

API-Schlüssel holen