Skip to content

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
FlagDescription
--noguiDisable 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 login

auth logout

Remove stored credentials from your machine.

whk auth logout

auth status

Show current authentication status and email.

whk auth status

create

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]
FlagDescription
--signing-providerProvider for automatic signature verification (e.g., stripe, github)
--signing-secretSigning 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
FlagDescription
--teamOnly 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>
FlagDescription
--force, -fSkip the confirmation prompt

tunnel

Forward webhooks to a local port. Creates a new endpoint unless --endpoint is set.

whk tunnel <port>
FlagDescription
--endpointUse an existing endpoint instead of creating one
--ephemeral, -eDelete the endpoint when the tunnel exits
--header, -HAdd 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: true or false
  • X-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>
FlagDescription
--toTarget 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 usage

update

Update whk to the latest version.

whk update

--version

Print the CLI version.

whk --version