Command Reference
Complete command reference for the webhooks.cc CLI, including authentication, endpoint management, tunneling, replay, and updates.
Updated Oct 2026
All available commands for the whk CLI.
Run whk with no arguments to launch the interactive TUI, or use the subcommands below for scriptable, plain-text output.
whk (interactive)
Launch the interactive TUI. Provides a menu-driven interface for all CLI features with real-time request streaming, color-coded methods, and a request detail viewer.
whk| Flag | Description |
|---|---|
--nogui | Disable the TUI and print help instead (also: WHK_NOGUI=1) |
auth login
Log in to webhooks.cc. Opens your browser to verify a device code. Credentials are stored at ~/.config/whk/token.json.
whk auth loginauth logout
Remove stored credentials from your machine.
whk auth logoutauth status
Show current authentication status and email.
whk auth statuscreate
Create a new endpoint. An optional name can be provided; the slug is auto-generated. It prints the endpoint's webhook URL and its email address ({slug}@mailhooks.cc, see Email Capture).
whk create [name]| Flag | Description |
|---|---|
--signing-provider | Provider for automatic signature verification (e.g., stripe, github) |
--signing-secret | Signing secret (encrypted server-side, never stored locally) |
whk create my-stripe --signing-provider stripe --signing-secret whsec_...list
List your endpoints and those shared with you through teams, with slug, name, team, and URL.
whk list
whk list --team Payments| Flag | Description |
|---|---|
--team | Only endpoints tied to this team (id or name): shared with you from it, or yours that are shared with it |
get
Show an endpoint's details: webhook URL, email address, name, and mock response.
whk get <slug>delete
Delete an endpoint. Prompts for confirmation unless --force is set.
whk delete <slug>| Flag | Description |
|---|---|
--force, -f | Skip the confirmation prompt |
tunnel
Forward webhooks to a local port. Creates a new endpoint unless --endpoint is set.
whk tunnel <port>| Flag | Description |
|---|---|
--endpoint | Use an existing endpoint instead of creating one |
--ephemeral, -e | Delete the endpoint when the tunnel exits |
--header, -H | Add a custom header to forwarded requests (repeatable, format: Key:Value) |
When signature verification is configured on the endpoint, tunnel injects verification headers into forwarded requests:
X-Signature-Verified: trueorfalseX-Signature-Provider: stripe(the provider name)X-Signature-Error: ...(when verification fails)
Your local server can use these headers to skip its own verification during development.
Warning: These headers are injected by the local tunnel client and are not authenticated. Never trust them in production — any HTTP client can send arbitrary
X-Signature-*headers. Always perform your own signature verification in production environments.
listen
Stream incoming requests for an endpoint to the terminal without forwarding them.
whk listen <slug>When signature verification is configured, listen shows verification status inline:
14:32:01 POST /webhook ✓ stripe 423 B
14:32:05 POST /webhook ✗ stripe 423 B
requests
List, read, search, count, clear, and export captured requests. Run whk requests <command> --help for each command's flags.
whk requests list <slug> # newest first, --limit (default 25), --since, --cursor
whk requests get <request-id>Captured emails are listed with an EMAIL method, the address they arrived at, and their subject:
2026-10-08 16:47:20 EMAIL [email protected] Confirm your email 1.2 KB
whk requests get on an email shows the sender, recipient, subject, tag, attachments, and text part instead of the raw message. Add --json for the headers and the raw message; the HTML and the sender checks are in the dashboard.
replay
Replay a captured request to a target URL. Emails cannot be replayed as HTTP requests; to send them to your server, use forwarding.
whk replay <request-id>| Flag | Description |
|---|---|
--to | Target URL for replay (default: http://localhost:8080) |
teams
Manage teams: sharing, members, and invites. Wherever a command takes <team>, pass a team id or a team name (case-insensitive). A name that matches several teams is rejected; pass the id instead.
whk teams list # your teams: role, seats, members, pooled usage, status
whk teams members <team> # members and pending invites
whk teams share <slug> --team <team> # share an endpoint you own (needs an active team)
whk teams unshare <slug> --team <team>
whk teams invite <team> <email> # sends an invite email; accepting claims a seat
whk teams invites # invites waiting for you
whk teams accept <invite-id>
whk teams decline <invite-id>Sharing moves the endpoint's requests onto the team's pooled quota. Only the endpoint owner can share or unshare, and only the team owner can invite. Every subcommand supports --json.
usage
Show your plan's request usage and, below it, the pooled quota of every subscribed team you belong to. With --json the team pools are returned in a teams array.
whk usageupdate
Update whk to the latest version.
whk update--version
Print the CLI version.
whk --version