https://wbhk.my/<token> and every request is captured — raw bytes first, then verified and deduplicated — where you can inspect it, replay it to localhost with one command, and deliver it onward. It starts as a debugging mailbox and grows, without a rewrite, into a full inbound pipeline (verify → dedup → retry → replay) plus outbound delivery. Every capability is reachable identically from the CLI, API, dashboard, and MCP, and nothing is public unless you make it so.
The problem it removes
Receiving a webhook is deceptively involved. To do it properly you need, at minimum:- A public URL the provider can reach — which your laptop doesn’t have, so local development means tunnels, redeploys, or a staging box.
- Signature verification done right: over the raw bytes, constant-time, per provider — the single most common thing people get subtly wrong.
- Retries with backoff on the way out, plus dead-lettering, so a receiver blip doesn’t drop events on the floor.
- A way to replay a payload you’ve already seen — to fix a handler, or recover from an outage — instead of asking the provider to re-send.
The mental model
Every request follows one path: ingest → verify → dedup → store → deliver → replay. Capture is the floor — the raw bytes are written down the instant a request arrives, and everything after runs against that durable copy. A bad signature, an unknown provider, or a downstream outage can never cost you the event; it only changes what happens next. See how webhook.co works for the diagram and a step-by-step walk.What you can do
Four capabilities, each useful on its own. Start wherever your problem is.Ingest
A permanent, signed URL on a dedicated, cookieless apex. It accepts every HTTP verb, answers
provider verification handshakes automatically, and captures raw bytes durably before it verifies
or dedupes — so a request is never lost at the door.
Verify
Register a provider’s signing secret and every inbound request is checked against the exact bytes
captured — no verification code on your side. Each event carries a
verificationState (verified /
authenticated / failed / unattempted), with 141 providers built in from a single registry.Deliver
Forward events to an SSRF-safe destination allowlist with at-least-once delivery, a fixed
exponential retry schedule, and dead-lettering. Outbound signing follows Standard Webhooks and is
verified-gated — webhook.co only re-signs what it authenticated.
Trigger an agent
Over MCP, an agent calls
triggers.wait to consume the webhooks captured for it since its last
cursor — verified, in order, at-least-once, and held even while the agent is offline. It returns
what’s landed plus a cursor to resume, so your agent reads one durable subscription instead of
polling each provider’s API.One product, four surfaces
The CLI, API, dashboard, and MCP aren’t four products that happen to overlap — they’re four bindings over one capability contract, with one shared handler per capability. A capability that exists on one exists on all, with the same request shapes and the same results. Script it in CI, click it in the dashboard, or hand it to an agent without learning four different tools — and nothing drifts, because there’s a single definition behind each. Listing your endpoints is the same operation everywhere:Standard Webhooks, private by default
Signing and verification follow the Standard Webhooks spec on both the receive and send sides, so the signatures you check and the ones webhook.co emits are the same well-specified format — not a bespoke scheme. And ingestion lives on its own cookieless apex that carries no session and answers no CORS: an ingest URL is a mailbox, not an app, and an unknown token gets a flat404 that reveals nothing. Nothing you capture is visible to anyone but your org.
Get started
Quickstart
Create an ingest URL, send a test event, and watch it arrive — in a few minutes.
How it works
The path a webhook takes: ingest → verify → dedup → store → deliver → replay.
Explore
Ingest URLs
What the
wbhk.my apex does, why every verb is accepted, and how reveal and rotation work.Verify inbound signatures
Register a provider secret and read the four verification states off your events.
Deliver and retry
Destinations, the retry schedule, the SSRF guard, and verified-gated send-side signing.
webhook.co over MCP
21 scope-gated tools over streamable-HTTP, including the webhook → agent trigger.
The API
The REST API lives athttps://api.webhook.co. It’s a small, predictable surface — every endpoint is described by a machine-readable OpenAPI 3.1 document you can browse in the API reference or fetch yourself:
whk_ bearer key — see authentication.
SDKs
Official, typed SDKs in three languages — each with the same hardening built in: bearer auth, bounded retries with jitter, cursor pagination, idempotency, and secret redaction.TypeScript
npm install @webhook-co/sdkPython
pip install webhook-coGo
go get github.com/webhook-co/webhook-goBuilt for agents, too
These docs are readable by your coding agent. Point it atdocs.webhook.co/mcp to search them over MCP, or use the Copy page menu to drop any page into ChatGPT, Claude, or Cursor.