WebhooksAPI

Weet op het moment zelf of een post is geplaatst

Registreer één keer een URL en FoPost roept hem aan zodra een aflevering is afgerond. Elke gebeurtenis bevat het post-id, het account, het platform, de permalink of de fouttekst, zodat je systeem reageert zonder te pollen.

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"]
  }'

Gaat af bij afronding

Eén gebeurtenis per aflevering op een account, verzonden zodra het netwerk bevestigt of weigert.

Ondertekend

Elk verzoek bevat een handtekening-header, zodat je kunt controleren dat het van ons komt.

Nieuwe pogingen

Bij een antwoord buiten de 2xx volgen nieuwe pogingen met backoff voordat de gebeurtenis vervalt.

Gebeurtenissen

Gebeurtenissen dekken de hele publicatiecyclus

delivery.published gaat af wanneer een netwerk de aflevering voor één account accepteert en bevat de permalink. delivery.failed gaat af wanneer publiceren niet lukt en bevat de fouttekst van het platform. post.published en post.failed gaan één keer per post af, nadat elk account is afgerond.

Webhook-documentatie lezen
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

De permalink, klaar om op te slaan of vanuit je CMS naar te linken.

delivery.failed

De eigen foutmelding van het netwerk, zodat je de oorzaak oplost in plaats van te gokken.

Per werkruimte

Een webhook hoort bij één werkruimte en ziet alleen de posts van die werkruimte.

Controleren

Vertrouw de payload voordat je ermee aan de slag gaat

Elk verzoek wordt ondertekend met het geheim dat je krijgt wanneer je de webhook aanmaakt. Bereken de handtekening over de ruwe body, vergelijk die met de header en weiger alles wat niet overeenkomt. Antwoord snel met een 2xx en doe het werk daarna.

Handtekeningcontrole bekijken
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();
});

Handtekening-header

Controleer met het geheim dat je bij het aanmaken hebt gekregen. Vernieuw het door de webhook opnieuw aan te maken.

Met tijdstempel

Met timestamp negeer je verouderde herhalingen en zet je gebeurtenissen in de juiste volgorde.

Idempotent via id

Nieuwe pogingen hebben hetzelfde gebeurtenis-id, dus een dubbele aflevering negeer je eenvoudig.

Beheren

Endpoints aanmaken, opvragen en verwijderen vanuit code

Webhooks zijn gewone API-objecten. Maak er een per omgeving aan, vraag ze op om te controleren wat er is geregistreerd en verwijder wat je niet meer nodig hebt. Laat ze tijdens de ontwikkeling naar een staging-URL wijzen en schakel met één aanroep over naar productie.

Begin met bouwen
Automatiseringen die draaien volgens schema, op een feed en over netwerken heen

Endpoints opvragen

GET /v1/webhooks toont elke URL en de gebeurtenissen waarop die is geabonneerd.

Per omgeving

Registreer een aparte URL voor staging, zodat testposts nooit productie bereiken.

webhooks-scope

Endpoints beheren vraagt om een eigen scope. Een sleutel die alleen mag publiceren, kan er geen toevoegen.

Vragen over Webhooks, beantwoord

Welke gebeurtenissen zijn er beschikbaar?

Gebeurtenissen voor posts, afleveringen, accounts, de inbox en automatiseringen. delivery.published en delivery.failed gaan één keer per account af, dus een post naar drie netwerken geeft er maximaal drie. post.published en post.failed gaan één keer per post af.

Hoe controleer ik een webhook?

Maak de webhook aan en sla het geheim uit het antwoord op. Bereken met dat geheim een handtekening over de ruwe body van het verzoek en vergelijk die bij elke aanroep met de handtekening-header.

Wat als mijn endpoint niet bereikbaar is?

Bij elk antwoord buiten de 2xx of een time-out volgen nieuwe pogingen met backoff. Antwoord snel met een 2xx en verwerk de gebeurtenis op de achtergrond, zodat je ruim binnen de tijd blijft.

Kan ik gebeurtenissen voor één account ontvangen?

Afleveringsgebeurtenissen bevatten de accountId en het platform, dus filter aan jouw kant. Webhooks gelden per werkruimte, niet per afzonderlijk account.

Kan ik testen zonder echt te publiceren?

Laat een webhook naar een URL wijzen die verzoeken opvangt en plan een post in op een testaccount. De gebeurtenissen zien er in elke omgeving hetzelfde uit.

Heb ik webhooks überhaupt nodig?

Nee. GET /v1/posts/:id/deliveries geeft op verzoek dezelfde status terug. Webhooks besparen je het pollen.

Bouw vandaag nog op de Webhooks

Starten is gratis en de volledige API is inbegrepen. Maak een sleutel aan en doe binnen enkele minuten je eerste aanroep.

Haal je API-sleutel op