Déboguer les webhooks sans déploiement : une boîte de réception temporaire que vous pouvez ouvrir en 10 secondes
Créez une URL de webhook jetable, pointez n'importe quel service vers elle et inspectez chaque charge utile. Pas de tunnels, pas de serveurs, pas de compte Zapier.
Vous voulez voir ce que Stripe envoie lorsqu'un paiement réussit. Ou ce que GitHub envoie lorsque quelqu'un ouvre une pull request. L'approche standard : démarrer un serveur local, installer ngrok, configurer un tunnel, garder une fenêtre de terminal ouverte, espérer la session n'expire pas à mi-test. Ou pire : déployez un gestionnaire à moitié terminé pour effectuer la préparation et suivre les journaux pendant que vous attendez.
Les deux workflows font perdre du temps sur l'infrastructure alors que la vraie question est simple : *à quoi ressemble la charge utile ?*
La boîte de réception des webhooks de Botoi vous donne une URL jetable qui capture les charges utiles entrantes et les stocke pendant 24 heures. Trois appels API. Pas de comptes, pas de tunnels, pas de serveurs.
Le flux de travail en 3 étapes
- Créer une boîte de réception pour obtenir une URL de réception unique
- Pointez la source de votre webhook à cette URL
- Lister les charges utiles pour inspecter ce qui est arrivé
Chaque étape est une seule curl commande.
Étape 1 : Créer une boîte de réception
curl -X POST https://api.botoi.com/v1/webhook/inbox/create
Réponse:
{
"success": true,
"data": {
"inbox_id": "a1b2c3d4",
"url": "https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive",
"expires_in": 86400
}
}
Enregistrez le inbox_id et url valeurs. La boîte de réception dure 24 heures (86 400 secondes), puis
l'URL et toutes les charges utiles stockées sont supprimées.
Étape 2 : Envoyer un webhook dans la boîte de réception
Dirigez votre fournisseur de webhook vers le url à partir de l'étape 1. La boîte de réception accepte n'importe quel corps JSON :
curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive \\
-H "Content-Type: application/json" \\
-d '{
"event": "payment_intent.succeeded",
"amount": 4999,
"currency": "usd",
"customer_email": "buyer@example.com"
}'
Réponse:
{
"success": true,
"data": {
"received": true,
"payload_id": "e5f6g7h8"
}
}
Étape 3 : Inspecter les charges utiles
curl -X POST https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/list
Réponse:
{
"success": true,
"data": {
"inbox_id": "a1b2c3d4",
"payloads": [
{
"id": "e5f6g7h8",
"received_at": "2026-03-26T10:00:00Z",
"body": {
"event": "payment_intent.succeeded",
"amount": 4999,
"currency": "usd",
"customer_email": "buyer@example.com"
}
}
],
"count": 1
}
}
Chaque charge utile est stockée avec un horodatage et un identifiant unique. Vous pouvez appeler le point de terminaison de la liste autant de fois que vous le souhaitez dans la fenêtre de 24 heures.
Exemple concret : débogage d'un webhook Stripe
Le mode test de Stripe vous permet de déclencher des événements depuis le tableau de bord. Au lieu de mettre en place un serveur pour les recevoir, pointez Stripe vers l’URL de votre boîte de réception.
1. Créez la boîte de réception
INBOX=\$(curl -s -X POST https://api.botoi.com/v1/webhook/inbox/create)
INBOX_ID=\$(echo \$INBOX | jq -r '.data.inbox_id')
INBOX_URL=\$(echo \$INBOX | jq -r '.data.url')
echo "Inbox URL: \$INBOX_URL"
2. Ajoutez l'URL à Stripe
Aller à Tableau de bord Stripe > Développeurs > Webhooks.
Cliquez sur "Ajouter un point de terminaison" et collez le INBOX_URL. Sélectionnez les événements qui vous intéressent,
comme payment_intent.succeeded et invoice.payment_failed.
3. Déclenchez un événement de test
Cliquez sur « Envoyer le webhook de test » dans le tableau de bord Stripe. Inspectez ensuite ce qui est arrivé :
curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" | jq '.data.payloads'
Vous disposez désormais de la charge utile exacte envoyée par Stripe, avec tous les objets imbriqués, noms de champs et types. Utilisez-le pour écrire votre gestionnaire en toute confiance au lieu de deviner le schéma.
Exemple concret : tester une intégration de webhook GitHub
Les webhooks du référentiel GitHub se déclenchent lors d'événements tels que push, pull_request, et issues.
Voici comment en capturer un sans exécuter de code localement.
1. Créez une boîte de réception et configurez GitHub
# Create the inbox
INBOX=\$(curl -s -X POST https://api.botoi.com/v1/webhook/inbox/create)
INBOX_URL=\$(echo \$INBOX | jq -r '.data.url')
INBOX_ID=\$(echo \$INBOX | jq -r '.data.inbox_id')
# Add webhook to your repo via GitHub API
curl -X POST \\
-H "Authorization: token \$GITHUB_TOKEN" \\
-H "Content-Type: application/json" \\
"https://api.github.com/repos/your-org/your-repo/hooks" \\
-d "{
\\"config\\": {
\\"url\\": \\"\$INBOX_URL\\",
\\"content_type\\": \\"json\\"
},
\\"events\\": [\\"pull_request\\"]
}"
2. Ouvrez une pull request, puis vérifiez la boîte de réception
curl -s -X POST "https://api.botoi.com/v1/webhook/inbox/\$INBOX_ID/list" \\
| jq '.data.payloads[0].body | {action, number: .pull_request.number, title: .pull_request.title}'
Sortie (exemple) :
{
"action": "opened",
"number": 42,
"title": "Add rate limiting to /api/orders"
}
Vous pouvez voir la structure exacte envoyée par GitHub, y compris des champs comme action,
sender, repository, et le plein pull_request objet.
C'est plus rapide que de lire la documentation de GitHub et de deviner quels champs sont renseignés pour chaque type d'événement.
L'automatiser : un script de test
Ce script bash crée une boîte de réception, envoie une charge utile de test, la récupère et vérifie l'aller-retour.
Enregistrez-le sous test-webhook.sh et exécutez-le pour confirmer que votre intégration fonctionne de bout en bout.
#!/bin/bash
set -euo pipefail
API="https://api.botoi.com/v1/webhook/inbox"
echo "Creating inbox..."
INBOX=\$(curl -s -X POST "\$API/create")
INBOX_ID=\$(echo "\$INBOX" | jq -r '.data.inbox_id')
INBOX_URL=\$(echo "\$INBOX" | jq -r '.data.url')
echo "Inbox ID: \$INBOX_ID"
echo "Receive URL: \$INBOX_URL"
echo ""
echo "Sending test payload..."
SEND=\$(curl -s -X POST "\$INBOX_URL" \\
-H "Content-Type: application/json" \\
-d '{
"event": "order.created",
"order_id": "ord_98765",
"total": 129.99,
"items": [
{"sku": "WIDGET-A", "qty": 2},
{"sku": "GADGET-B", "qty": 1}
]
}')
PAYLOAD_ID=\$(echo "\$SEND" | jq -r '.data.payload_id')
echo "Payload ID: \$PAYLOAD_ID"
echo ""
echo "Retrieving payloads..."
LIST=\$(curl -s -X POST "\$API/\$INBOX_ID/list")
COUNT=\$(echo "\$LIST" | jq -r '.data.count')
if [ "\$COUNT" -ge 1 ]; then
echo "Success: \$COUNT payload(s) received"
echo "\$LIST" | jq '.data.payloads[0].body'
else
echo "Error: no payloads found"
exit 1
fi
Résultat attendu :
Creating inbox...
Inbox ID: a1b2c3d4
Receive URL: https://api.botoi.com/v1/webhook/inbox/a1b2c3d4/receive
Sending test payload...
Payload ID: e5f6g7h8
Retrieving payloads...
Success: 1 payload(s) received
{
"event": "order.created",
"order_id": "ord_98765",
"total": 129.99,
"items": [
{"sku": "WIDGET-A", "qty": 2},
{"sku": "GADGET-B", "qty": 1}
]
}
Comparaison : boîte de réception botoi et alternatives
| Fonctionnalité | Boîte de réception Botoi | ngrok | webhook.site | RequêteBin |
|---|---|---|---|---|
| Temps d'installation | Une commande curl | Installer CLI + authentification | Ouvrir le navigateur | Ouvrir le navigateur |
| Serveur local requis | Non | Oui | Non | Non |
| Compte requis | Non | Oui (niveau gratuit) | Non (limité) | Oui |
| Accès programmatique | API complète | API (payante) | API (payante) | API (payante) |
| Compatible CI/CD | Oui; boucle + jq | Possible; complexe | Non | Non |
| Durée de vie | 24 heures | Basé sur la session | Varie | 48 heures |
| Le processus reste en cours | Non | Oui | Non | Non |
| Gratuite | Oui | Limitée | Limitée | Non |
Le principal avantage de la boîte de réception botoi est que tout se passe via l'API. Vous pouvez créer des boîtes de réception, envoyer des tests charges utiles et récupérez les résultats dans les scripts shell, les pipelines CI et les tests d'intégration sans ouvrir de navigateur ou maintenir un processus en arrière-plan en vie.
Quand l'utiliser
- Explorer un nouveau fournisseur de webhooks. Avant d'écrire le code du gestionnaire, capturez les charges utiles réelles pour comprendre la forme des données, les noms de champs et les cas extrêmes.
- Tests d'intégration en CI. Ouvrez une boîte de réception dans votre suite de tests, déclenchez le webhook, interrogez la liste point final et affirmer le contenu de la charge utile.
- Débogage d'un gestionnaire cassé. Remplacez temporairement l'URL de votre webhook de production par une URL de boîte de réception pour capturer la charge utile exacte à l’origine des échecs.
- Programmation en binôme ou démos. Partagez l'ID de la boîte de réception avec un coéquipier. Vous pouvez tous les deux envoyer des charges utiles et inspecter les résultats de différentes machines.
La boîte de réception est jetable de par sa conception. Créez-en un lorsque vous en avez besoin, utilisez-le pour la session et laissez-le expirer. Pas de nettoyage, pas de points de terminaison persistants, pas de surprises de facturation.
FAQ
- Combien de temps dure une boîte de réception webhook ?
- Chaque boîte de réception expire après 24 heures. L'URL de la boîte de réception, toutes les charges utiles reçues et les métadonnées sont supprimées à l'expiration. Créez une nouvelle boîte de réception chaque fois que vous en avez besoin.
- Ai-je besoin d’une clé API pour créer une boîte de réception ?
- Non. Le niveau gratuit permet un accès anonyme à 5 requêtes par minute avec une limitation de débit basée sur IP. Vous pouvez commencer à tester en quelques secondes sans vous inscrire.
- Existe-t-il une limite de taille pour les charges utiles des webhooks ?
- Le point de terminaison de réception accepte tout corps JSON valide. La limite standard de taille de requête Cloudflare Workers s’applique (100 Mo pour la plupart des forfaits).
- Puis-je l'utiliser avec des webhooks non JSON ?
- Le point de terminaison de réception attend un corps JSON. Si votre source de webhook envoie des données codées sous forme de formulaire ou du XML, vous aurez besoin d'un petit proxy pour convertir la charge utile en JSON avant de la transférer vers l'URL de la boîte de réception.
- En quoi est-ce différent du ngrok ?
- ngrok crée un tunnel vers un serveur local en cours d'exécution. La boîte de réception du webhook Botoi est un point de terminaison hébergé qui stocke les charges utiles que vous pourrez récupérer ultérieurement. Aucun serveur local requis, aucune CLI à installer, aucun processus à maintenir en vie.
Commencez a construire avec botoi
150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.