惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
Martin Fowler
Martin Fowler
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
B
Blog
U
Unit 42
B
Blog RSS Feed
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
腾讯CDC
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
博客园 - 聂微东
MyScale Blog
MyScale Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
Engineering at Meta
Engineering at Meta

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I built a webhook testing API in one day and listed it on...
Brian Omondi Amol · 2026-06-28 · via DEV Community
Cover image for I built a webhook testing API in one day and listed it on RapidAPI for free

Brian Omondi Amol

The Problem

Every developer integrating M-Pesa, Stripe, GitHub, or any service
that sends webhooks hits the same wall during development:

You need a URL to receive the webhook. But your app is running on
localhost. So you either:

  • Deploy just to test (slow)
  • Use ngrok (another tool to manage)
  • Hard-code a URL and hope for the best

I got tired of this on every project. So I built an API that solves
it in one call.

What I Built

WebhookBox — an API that gives you instant, disposable webhook
URLs for capturing, inspecting, and replaying HTTP payloads.

// Step 1: Create a webhook URL
const response = await fetch(
  'https://webhookbox-api-production.up.railway.app/webhooks/create',
  { method: 'POST' }
)
const { webhook_url, webhook_id } = await response.json()

// Step 2: Point M-Pesa/Stripe/GitHub at webhook_url
// Step 3: Inspect what was received
const payloads = await fetch(
  `https://webhookbox-api-production.up.railway.app/webhooks/${webhook_id}/payloads`
)

That's it. No setup. No config. No ngrok.

What It Does

  • Create a disposable webhook URL instantly
  • Capture any HTTP method — POST, GET, PUT, PATCH
  • Inspect full payload: headers, body, query params, timestamp
  • Replay any captured payload to a target URL
  • Auto-expires after 24 hours

The Stack

  • Node.js + Express
  • Upstash Redis (for payload storage with TTL)
  • Deployed on Railway (free tier)
  • Listed on RapidAPI

Why This Is Useful in CI/CD

The real power is automating webhook testing in your pipeline:

// In your test file
const { webhook_id, webhook_url } = await createWebhook()

// Trigger your payment flow
await triggerMpesaPayment({ callback_url: webhook_url })

// Wait, then assert
await sleep(3000)
const { payloads } = await getPayloads(webhook_id)
assert(payloads[0].body.ResultCode === 0)

No human sitting watching a browser tab. Fully automated.

Try It Free

Listed on RapidAPI with a free tier:
👉 https://rapidapi.com/Brianamol/api/webhookbox

Built this in one day. Would love feedback from the community —
what features would make this more useful for your workflow?