Le Web évolue, l’IA accélère : utilisez l’intelligence artificielle pour automatiser vos tâches, optimiser votre visibilité, améliorer vos outils et gagner en efficacité au quotidien.
Associez l’expertise du Web à la puissance de l’IA pour créer des solutions plus intelligentes, automatiser vos processus et gagner du temps au quotidien.
Aller au contenu

API & Webhooks

Une API permet à un système d’aller chercher ou d’écrire une donnée chez un autre, tandis qu’un webhook fait l’inverse : c’est l’application source qui envoie un payload vers un endpoint dès qu’un événement se produit. Ensemble, ils forment la plomberie qui déclenche et relie vos automatisations en temps réel.

Poser les bases

API et webhook : deux manières de faire circuler l’information

La seule question qui sépare une API d’un webhook est celle-ci : qui prend l’initiative de l’échange. Avec une API, votre système demande et attend une réponse. Avec un webhook, il ne demande rien : il écoute, et l’application source vient déposer l’information au moment où elle existe. Tout le reste découle de cette inversion.

Cette page traite de la plomberie du déclenchement, pas des API de modèles. Si vous cherchez à appeler un modèle de langage depuis votre code, la page API IA couvre ce sujet. Si vous voulez exposer vos propres outils à un assistant conversationnel, c’est la page MCP et API qui s’en occupe.

Appel d’API et polling : quand interroger un service à intervalle régulier

L’interrogation périodique consiste à demander « quoi de neuf ? » à intervalle fixe. C’est la méthode par défaut quand le service distant n’émet pas de notification, et elle reste parfaitement acceptable dans ce cas. Son coût est simple à comprendre : vous payez des appels qui ne rapportent rien la plupart du temps, et vous acceptez un décalage entre le moment de l’événement et celui où vous l’apprenez.

Deux détails déterminent si un polling tient dans la durée. Le curseur d’abord : mémorisez le dernier élément traité, par identifiant ou par horodatage, et ne redemandez que ce qui a bougé depuis. Le comportement en cas d’échec ensuite : si un cycle est manqué, le suivant doit rattraper l’intervalle perdu, sans quoi vous perdez des événements sans le savoir.

Webhook entrant et webhook sortant : qui appelle qui

Un webhook entrant est une adresse que vous exposez et qu’un tiers appelle ; un webhook sortant est un appel que vous émettez vers une adresse fournie par quelqu’un d’autre. Vous n’avez pas les mêmes responsabilités des deux côtés, et c’est la source de la plupart des malentendus en intégration.

Côté entrant, vous répondez de trois choses : la disponibilité de l’adresse, la vérification que l’appel vient bien de qui il prétend, et la rapidité de la réponse. Côté sortant, vos obligations changent : stabilité du format envoyé, gestion des tentatives quand le destinataire ne répond pas, conservation des messages non délivrés. Écrivez qui porte quoi avant de coder, surtout quand les deux extrémités appartiennent à des prestataires différents.

Mise en place

Mettre en place un webhook fiable

Un endpoint qui reçoit des webhooks a une seule obligation immédiate : accuser réception vite. Il vérifie l’origine du message, l’enregistre, répond, et laisse le traitement à un processus séparé. Un endpoint qui exécute toute la logique métier avant de répondre finira par dépasser le délai d’attente de l’émetteur, qui considérera l’envoi comme échoué et le rejouera, alors même que vous l’aviez traité.

Ce découplage entre réception et traitement est la décision structurante de toute intégration par webhook. Il rend l’endpoint prévisible et vous permet de rejouer un message plus tard sans rien redemander à l’émetteur. Ce qui se passe ensuite relève de l’orchestration, traitée sur la page workflows IA.

Structure du payload, endpoint et authentification par signature

Le payload doit porter le type de l’événement, son identifiant unique, son horodatage et les données concernées. L’identifiant est le champ que l’on oublie le plus souvent, et c’est celui qui rend possible tout le reste : sans lui, vous ne pouvez ni détecter un doublon, ni rejouer proprement, ni corréler un message avec une trace d’incident.

Une adresse de webhook est publique par nature. La protéger par un simple jeton dans l’URL revient à confier votre sécurité à un secret qui apparaîtra dans les journaux de tous les intermédiaires. Le mécanisme attendu est la signature : l’émetteur calcule une empreinte du corps du message avec un secret partagé, la place dans un en-tête, et vous recalculez cette empreinte de votre côté avant tout traitement. Vérifiez aussi l’horodatage pour refuser un message ancien rejoué par un tiers.

Idempotence, retry et file d’attente : ne rien perdre, ne rien dupliquer

Partez du principe qu’un webhook sera livré au moins une fois, et parfois plusieurs. Les émetteurs sérieux réessaient quand ils ne reçoivent pas d’accusé de réception, et ils ne peuvent pas savoir si vous aviez déjà traité le message avant de tomber en panne. La duplication n’est pas un incident exceptionnel, c’est le fonctionnement normal du protocole.

L’idempotence est donc à votre charge. Stockez l’identifiant de chaque événement traité et refusez silencieusement ceux que vous avez déjà vus. Cette table de contrôle coûte peu et évite la double facturation, le double envoi et la double décrémentation de stock.

La file d’attente complète le dispositif : elle absorbe les pics, espace les nouvelles tentatives et recueille dans une file d’échec les messages qui n’ont jamais abouti. Surveillez cette file : c’est la seule chose qui vous dira qu’une intégration est cassée, puisqu’un webhook qui ne fonctionne plus ne produit aucun bruit.

Choisir la méthode

Webhook, cron ou API : quelle méthode de déclenchement choisir

Le choix se ramène à trois questions : le service distant sait-il notifier, quel décalage acceptez-vous entre l’événement et son traitement, et qui porte la complexité de la fiabilité. Une intégration mélange souvent plusieurs méthodes, et c’est un signe de bonne conception.

MéthodeQui prend l’initiativeCas où elle s’imposePoint de vigilance
Webhook entrantL’application source, au moment de l’événementTraitement immédiat attendu, événements peu fréquents mais urgentsIl faut exposer une adresse publique, la sécuriser et absorber les doublons
Interrogation périodiqueVous, à intervalle planifiéLe service distant n’émet aucune notificationDécalage inévitable et appels inutiles la plupart du temps
Appel d’API à la demandeVous, au moment où vous avez besoin de la donnéeLecture ponctuelle, vérification avant écriture, enrichissementNe détecte rien : vous ne saurez jamais qu’un événement a eu lieu
File d’attente entre les deuxLe producteur dépose, le consommateur retireVolumes irréguliers, traitements longs, tolérance aux pannes exigéeComposant supplémentaire à héberger, à superviser et à purger

Sur le terrain

Cas d’usage

  • Déclencher une automatisation dès la soumission d’un formulaire sur le site
  • Recevoir les événements de paiement d’un prestataire et mettre à jour la commande
  • Notifier une équipe dans sa messagerie dès qu’un ticket critique est ouvert
  • Synchroniser deux applications métier en événementiel plutôt qu’en export nocturne

Vos questions

Questions fréquentes

Quelle différence exacte entre une API et un webhook ?

L’API se consulte, le webhook se reçoit. Dans le premier cas vous posez une question et obtenez une réponse à l’instant où vous la posez ; dans le second, vous êtes prévenu au moment où l’événement se produit, sans avoir rien demandé.

La nuance opérationnelle est qu’un webhook transporte rarement toute l’information dont vous avez besoin. Il annonce qu’une commande a changé d’état, pas le détail complet de la commande. Prévoyez donc presque toujours un appel d’API en complément, déclenché par le webhook, pour aller lire l’état réel plutôt que de faire confiance au contenu du message.

Comment sécuriser un endpoint qui reçoit des webhooks publics ?

Par la vérification de signature, avant toute autre chose. L’émetteur signe le corps du message avec un secret partagé, vous recalculez la signature à la réception et vous rejetez ce qui ne correspond pas. Ajoutez une vérification d’horodatage pour refuser les messages trop anciens, et servez l’endpoint en HTTPS uniquement.

Le piège concret est de vérifier la signature après avoir désérialisé et reformaté le corps du message : l’empreinte porte sur les octets reçus, pas sur votre représentation interne. Conservez le corps brut pour le calcul. Une restriction par plages d’adresses complète le dispositif sans le remplacer, et se périme quand l’émetteur change d’infrastructure.

Que faire si le service destinataire est indisponible au moment de l’envoi ?

Le message doit être conservé et réémis plus tard, avec des tentatives espacées de plus en plus longuement. Sans cette mise en attente, une indisponibilité passagère du destinataire se traduit par une perte définitive de l’événement.

Le piège est de réessayer indéfiniment. Fixez un nombre maximal de tentatives, puis déplacez le message dans une file d’échec consultable, avec le motif du rejet. Distinguez surtout l’erreur temporaire, qui mérite d’être rejouée, du refus définitif pour message invalide, qui sera refusé à l’identique à chaque tentative.

Comment éviter qu’un même événement soit traité deux fois ?

En stockant l’identifiant unique de chaque événement reçu et en ignorant ceux qui figurent déjà dans cette table. C’est le seul mécanisme fiable, car vous ne pouvez pas empêcher l’émetteur de renvoyer un message qu’il croit non délivré.

Le piège se situe dans le choix de la clé. Une empreinte du contenu ne suffit pas : deux événements légitimes peuvent partager le même corps. Utilisez l’identifiant fourni par l’émetteur quand il existe et, à défaut, une combinaison stable de champs métier. Prévoyez une durée de conservation de cette table, sinon elle grossit sans fin.

Ressources associées

Aller plus loin

Pour démarrer

Conclusion

Ouvrez le journal d’une de vos intégrations existantes et cherchez deux choses : chaque message reçu porte-t-il un identifiant unique, et existe-t-il un endroit où atterrissent ceux qui ont échoué. Si la réponse est non aux deux, l’intégration fonctionne pour l’instant et se cassera sans prévenir. Commencez par la file d’échec : c’est ce qui transforme une panne silencieuse en alerte.

Parler de votre projet d’automatisation →

Parlons de votre projet

Décrivez votre besoin en quelques lignes : vous recevrez une première analyse et une orientation claire.

Réponse sous 48 h. Sans engagement.