Step 01
Generate a URL
One click mints a 12-character session with its own ingestion endpoint. No form, no email, no password.
Free forever · no account · 2-hour purge
SnapHook gives you a disposable HTTPS endpoint that captures every request sent to it — method, headers, query string and body — and streams it to your browser the moment it lands.
Quickstart
Generate a URL, paste it into the provider you are debugging — Stripe, GitHub, Shopify, Twilio, your own cron job — and requests appear in the inspector instantly.
Example request
# send a test payload to your own SnapHook endpoint curl -X POST https://snaphook.site/w/YOUR_SESSION_ID/orders/created \ -H "Content-Type: application/json" \ -d '{"order_id": 4021, "status": "paid"}'
Step 01
Generate a URL
One click mints a 12-character session with its own ingestion endpoint. No form, no email, no password.
Step 02
Send requests
Any method, any sub-path, any content type. Query strings and headers are captured exactly as sent.
Step 03
Inspect live
The dashboard streams each capture over Server-Sent Events and pretty-prints JSON bodies as they arrive.
Built for debugging
Every capture is stored whole: the request line, the protocol, the client IP, all headers, parsed query parameters, and the raw body with JSON formatting applied on top rather than instead.
Privacy by construction
SnapHook keeps captures in process memory and nowhere else. There is no database, no object store, no log of payloads. Two hours after your last request and your last open tab, the session and everything in it is gone.
What you get
No signup
No email, no OAuth, no trial timer. Click once and you have an endpoint.
2-hour purge
Sessions self-destruct 2 hours after the last request and the last open tab.
Zero logging
Payloads are never written to disk or forwarded anywhere else.
100% free
No paid tier gating the features that make it useful. There is no paid tier.
Questions
No. SnapHook has no accounts at all. Generating a URL creates an anonymous in-memory session identified only by a random 12-character slug, which acts as the capability key for that session.
It stays alive as long as it is being used. A session is purged 2 hours after the last of two things: the last request it received, and the last dashboard disconnecting from it. An open tab keeps a session alive indefinitely.
Any method. GET, POST, PUT, PATCH, DELETE, HEAD and anything else are all captured, along with any sub-path you append to the URL — useful for verifying that a provider is calling the route you expect.
Bodies are captured up to 256 KB. Anything larger is stored truncated and clearly flagged in the inspector, so you still see the beginning of the payload rather than losing the request entirely.
No — and that is true of every webhook testing service, not just this one. Anyone who learns your session URL can read what was sent to it. Use test-mode credentials and synthetic data. Never point a live payment, auth or PII webhook at a public inspection endpoint.
Yes. POST /api/new mints a session, GET /api/{slug}/requests returns the captured history as JSON, and GET /api/{slug}/sse streams captures live. All three are documented on the docs page.
No setup, no install, no card. Your endpoint is one click away.