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.
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.
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{
"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é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 signatureapp.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.
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
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 ?
Comment vérifier un webhook ?
Que se passe-t-il si mon endpoint est indisponible ?
Puis-je recevoir les événements d'un seul compte ?
Puis-je tester sans réellement publier ?
Ai-je vraiment besoin de webhooks ?
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