Webhook Relay Inspector
Capture inbound HTTP webhooks in a Durable Object session for debugging and replay
Create a unique inbound URL per session with a Durable Object. Any HTTP request to that URL is captured (method, headers, body, timestamp) and can be listed or inspected for webhook debugging.
Features
- POST /relay/new - create a capture session
- ALL /relay/:id - capture inbound requests
- GET /relay/:id/requests - list captures
- GET /relay/:id/requests/:requestId - full request details
API Reference
POST /relay/new
Create a new relay session.
Success Response
{ "id": "abc123", "inboundUrl": "https://your-worker.workers.dev/relay/abc123" }ALL /relay/:id
Captures any inbound HTTP request to the session.
GET /relay/:id/requests
List captured requests (summary).
GET /relay/:id/requests/:requestId
Full request details including headers and body.
Error Codes
404-NOT_FOUND400-INVALID_ID
Use Cases
- Debug Stripe, GitHub, or custom webhook payloads during integration
- Share a temporary inbound URL with a third party for testing
- Inspect headers and raw body without deploying a full receiver
Limitations
- Requires Durable Objects binding and migration
- Sessions are not authenticated; anyone with the URL can post
- Storage is bounded by DO limits; not long-term log retention
Deployment
Configure bindings
Durable Object RELAY / WebhookRelay with migration in wrangler.json.
Test your deployment
See the experiment README for curl examples.
Local Development
cd apps/experiments/webhook-relay-inspector
npm install
npm run devConfiguration
Durable Object RELAY / WebhookRelay with migration in wrangler.json.