WebhooksAPI

Sachez immédiatement si une publication est passée ou non

Enregistrez une URL une fois et FoPost l'appelle dès qu'une diffusion aboutit. Chaque événement contient l'id de la publication, le compte, la plateforme, le permalien ou le texte de l'erreur : votre système réagit sans interrogation répétée.

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

Déclenché à l'issue de la diffusion

Un événement par diffusion sur un compte, envoyé dès que le réseau confirme ou refuse.

Signé

Chaque requête comporte un en-tête de signature pour vérifier qu'elle vient bien de nous.

Relancé

Une réponse autre que 2xx est relancée avec un délai croissant avant l'abandon de l'événement.

Événements

Des événements pour tout le cycle de publication

delivery.published se déclenche lorsqu'un réseau accepte la diffusion d'un compte et inclut le permalien. delivery.failed se déclenche lorsque la publication n'aura pas lieu et inclut le texte d'erreur de la plateforme. post.published et post.failed se déclenchent une fois par publication, lorsque tous les comptes ont abouti.

Lire la référence des webhooks
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

Le permalien, prêt à être stocké ou lié depuis votre CMS.

delivery.failed

Le message d'erreur du réseau lui-même, pour corriger la cause sans deviner.

Par espace de travail

Un webhook appartient à un espace de travail et ne voit que les publications de celui-ci.

Vérifier

Vérifiez la charge utile avant d'agir

Chaque requête est signée avec le secret renvoyé lors de la création du webhook. Calculez la signature sur le corps brut, comparez-la à l'en-tête et rejetez tout ce qui ne correspond pas. Répondez 2xx rapidement et effectuez le traitement ensuite.

Voir la vérification de signature
Gestionnaire
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();
});

En-tête de signature

Vérifiez avec le secret fourni à la création. Recréez le webhook pour le renouveler.

Horodaté

timestamp vous permet d'ignorer les rejeux périmés et d'ordonner correctement les événements.

Idempotent par id

Les relances portent le même id d'événement : un doublon est facile à écarter.

Gérer

Créez, listez et supprimez des endpoints depuis votre code

Les webhooks sont de simples objets d'API. Créez-en un par environnement, listez-les pour vérifier ce qui est enregistré, et supprimez ceux dont vous n'avez plus besoin. Pointez-les vers une URL de préproduction pendant le développement, puis basculez en production en un seul appel.

Commencer à développer
Des automatisations qui tournent selon un calendrier, sur un flux et sur plusieurs réseaux

Lister les endpoints

GET /v1/webhooks affiche chaque URL et les événements auxquels elle est abonnée.

Par environnement

Enregistrez une URL distincte pour la préproduction afin que les publications de test n'atteignent jamais la production.

Scope webhooks

La gestion des endpoints exige son propre scope. Une clé limitée à la publication ne peut pas en ajouter.

Webhooks : vos questions, nos réponses

Quels événements sont disponibles ?

Des événements de publication, de diffusion, de compte, de boîte de réception et d'automatisation. delivery.published et delivery.failed se déclenchent une fois par compte : une publication sur trois réseaux en produit donc jusqu'à trois ; post.published et post.failed se déclenchent une fois par publication.

Comment vérifier un webhook ?

Créez le webhook et conservez le secret fourni dans la réponse. Calculez une signature sur le corps brut de la requête avec ce secret et comparez-la à l'en-tête de signature à chaque appel.

Que se passe-t-il si mon endpoint est indisponible ?

Toute réponse autre que 2xx ou tout dépassement de délai est relancé avec un délai croissant. Répondez 2xx rapidement et traitez l'événement en arrière-plan pour rester largement dans les temps.

Puis-je recevoir les événements d'un seul compte ?

Les événements de diffusion contiennent accountId et la plateforme : filtrez de votre côté. Les webhooks sont limités à un espace de travail, pas à un compte individuel.

Puis-je tester sans réellement publier ?

Pointez un webhook vers une URL de capture de requêtes et programmez une publication sur un compte de test. Les événements sont identiques dans tous les environnements.

Ai-je vraiment besoin de webhooks ?

Non. GET /v1/posts/:id/deliveries renvoie le même statut à la demande. Les webhooks vous évitent simplement d'interroger l'API en boucle.

Développez avec Webhooks dès aujourd'hui

Le démarrage est gratuit et l'API complète est incluse. Créez une clé et faites votre premier appel en quelques minutes.

Obtenir votre clé API