WebhookAPI

Sappi subito se un post è andato a buon fine oppure no

Registra un URL una volta e FoPost lo chiama ogni volta che una consegna si conclude. Ogni evento contiene l'id del post, l'account, la piattaforma, il permalink o il testo dell'errore, così il tuo sistema reagisce senza polling.

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

Parte a consegna conclusa

Un evento per ogni consegna su un account, inviato non appena la rete conferma o rifiuta.

Firmati

Ogni richiesta contiene un header di firma, così puoi verificare che arrivi da noi.

Nuovi tentativi

Una risposta non 2xx viene ritentata con backoff prima che l'evento venga scartato.

Eventi

Gli eventi coprono l'intero ciclo di pubblicazione

delivery.published parte quando una rete accetta la consegna per un account e include il permalink. delivery.failed parte quando la pubblicazione non avverrà e include il testo di errore della piattaforma. post.published e post.failed partono una sola volta per post, dopo che tutti gli account si sono conclusi.

Leggi il riferimento webhook
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

Il permalink, pronto da salvare o da linkare dal tuo CMS.

delivery.failed

Il messaggio di errore della rete, così risolvi la causa invece di tirare a indovinare.

Per workspace

Un webhook appartiene a un solo workspace e vede solo i post di quel workspace.

Verifica

Verifica il payload prima di agire

Ogni richiesta è firmata con il secret restituito alla creazione del webhook. Calcola la firma sul corpo grezzo, confrontala con l'header e rifiuta tutto ciò che non corrisponde. Rispondi subito con 2xx ed esegui il lavoro dopo.

Vedi la verifica della firma
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();
});

Header di firma

Verifica con il secret ricevuto alla creazione. Per ruotarlo, ricrea il webhook.

Con timestamp

timestamp ti permette di ignorare i replay obsoleti e ordinare correttamente gli eventi.

Idempotente per id

I nuovi tentativi hanno lo stesso id evento, quindi una doppia consegna è facile da scartare.

Gestisci

Crea, elenca e rimuovi endpoint dal codice

I webhook sono semplici oggetti API. Creane uno per ambiente, elencali per controllare cosa è registrato ed elimina quelli che non ti servono più. Puntali a un URL di staging durante lo sviluppo e passa alla produzione con una sola chiamata.

Inizia a sviluppare
Automazioni in esecuzione secondo un programma, da un feed e su più network

Elenca gli endpoint

GET /v1/webhooks mostra ogni URL e gli eventi a cui è iscritto.

Per ambiente

Registra un URL separato per lo staging, così i post di prova non arrivano mai in produzione.

scope webhooks

La gestione degli endpoint richiede un proprio scope. Una chiave di sola pubblicazione non può aggiungerne.

Webhook: le risposte alle tue domande

Quali eventi sono disponibili?

Eventi su post, consegne, account, inbox e automazioni. delivery.published e delivery.failed partono una volta per account, quindi un post su tre reti ne produce fino a tre; post.published e post.failed partono una sola volta per post.

Come verifico un webhook?

Crea il webhook e salva il secret della risposta. Calcola una firma sul corpo grezzo della richiesta con quel secret e confrontala con l'header di firma a ogni chiamata.

E se il mio endpoint non è raggiungibile?

Ogni risposta non 2xx o timeout viene ritentato con backoff. Rispondi subito con 2xx ed elabora l'evento in background per restare ampiamente nei tempi.

Posso ricevere eventi per un solo account?

Gli eventi di consegna contengono accountId e piattaforma, quindi puoi filtrare dal tuo lato. I webhook sono limitati a un workspace, non a un singolo account.

Posso fare test senza pubblicare davvero?

Punta un webhook a un URL di cattura delle richieste e programma un post su un account di prova. Gli eventi sono identici in ogni ambiente.

Mi servono davvero i webhook?

No. GET /v1/posts/:id/deliveries restituisce lo stesso stato su richiesta. I webhook ti risparmiano il polling.

Sviluppa oggi con Webhook

Iniziare è gratis e l'API completa è inclusa. Crea una chiave e fai la tua prima chiamata in pochi minuti.

Ottieni la tua chiave API