CLI Commands
Complete reference for all Hookbase CLI commands.
Global Options
These options are available for all commands:
| Option | Description |
|---|---|
--json | Output as JSON (for scripting) |
-y, --yes | Skip confirmation prompts |
--help | Show help |
--version | Show version |
Authentication
login
Authenticate with your Hookbase account.
hookbase loginOpens a browser for OAuth authentication. After successful login, credentials are stored locally.
Options:
| Option | Description |
|---|---|
--api-key <key> | Use API key instead of browser auth |
logout
Log out and clear stored credentials.
hookbase logoutwhoami
Display current authentication status.
hookbase whoami
hookbase whoami --jsonAliases: status
Output:
Hookbase CLI Status
User: john@example.com
Display Name: John Doe
Organization: my-companyAPI Keys
Manage API keys for programmatic access.
api-keys list
List all API keys (values are masked).
hookbase api-keys list
hookbase api-keys ls --jsonAliases: keys list, keys ls
api-keys create
Create a new API key.
hookbase api-keys create
hookbase api-keys create --name "CI/CD Key" --scopes read,write --expires 90Options:
| Option | Description |
|---|---|
-n, --name <name> | API key name |
-s, --scopes <scopes> | Comma-separated scopes (read, write) |
-e, --expires <days> | Expiration in days |
-y, --yes | Skip confirmation |
Warning
The API key is only shown once after creation. Store it securely!
api-keys revoke
Revoke an API key.
hookbase api-keys revoke 55555555-5555-4555-8555-555555555555
hookbase api-keys revoke 55555555-5555-4555-8555-555555555555 --yesAliases: api-keys delete
Sources
Manage webhook sources (ingest endpoints).
The canonical form is hookbase inbound sources <command>; the shorter hookbase sources <command>
used in the examples below is an alias for it. Every <source> argument accepts a source ID or
slug.
sources list
List all sources.
hookbase sources list
hookbase sources ls --jsonsources create
Create a new source interactively or with options.
# Interactive
hookbase sources create
# With options
hookbase sources create --name "GitHub Webhooks" --slug "github" --provider githubOptions:
| Option | Description |
|---|---|
-n, --name <name> | Source name |
-s, --slug <slug> | URL slug (auto-generated if not provided) |
-p, --provider <provider> | Any provider id Hookbase verifies (e.g. github, stripe, whatsapp), or custom. The full list is on the integrations page. Omit it in interactive mode to pick from the catalog |
--signing-secret <secret> | Signing secret or public key from the vendor (@path reads it from a file, e.g. a PEM). Required for providers whose vendor issues the secret (e.g. Standard Webhooks whsec_ keys); omit it where Hookbase generates one (it is printed once) and for built-in-key providers such as wise and aws-sns. See Signing secrets by provider |
--verify-token <token> | WhatsApp only: the Meta Verify token to use (8-256 visible ASCII characters). Generated and printed if omitted |
-y, --yes | Skip confirmation |
sources get
Show source details.
hookbase sources get 11111111-1111-4111-8111-111111111111
hookbase sources show 11111111-1111-4111-8111-111111111111 --jsonAliases: sources show
sources update
Update a source.
hookbase sources update 11111111-1111-4111-8111-111111111111 --name "New Name"
hookbase sources update 11111111-1111-4111-8111-111111111111 --inactiveOptions:
| Option | Description |
|---|---|
-n, --name <name> | New name |
-p, --provider <provider> | New provider: any provider id (integrations page) |
-d, --description <desc> | New description |
--signing-secret <secret> | Replace the signing secret or public key, for example after regenerating it at the vendor (@path reads a file; "" clears it). Switching --provider to a vendor-issued-secret provider needs this too |
--verify-token <token> | WhatsApp only: set the Meta Verify token ("" generates a new one) |
--active | Set source as active |
--inactive | Set source as inactive |
sources delete
Delete a source.
hookbase sources delete 11111111-1111-4111-8111-111111111111
hookbase sources rm 11111111-1111-4111-8111-111111111111 --yesAliases: sources rm
sources rotate-secret
Replace a Hookbase-generated signing secret with a new one, then paste the new value into the
vendor. Only meaningful for providers where Hookbase generates the secret. The API refuses it
(400) for built-in-key providers (wise, aws-sns), public-key providers (discord,
sendgrid), vendor-issued keys (whsec_ providers, airtable, gitlab-signing-token) and
asana/notion — for those, regenerate the secret at the vendor and use
sources update --signing-secret.
hookbase sources rotate-secret 11111111-1111-4111-8111-111111111111sources reveal-secret
Print the full signing secret stored on a source. Needs a write-scoped API key.
hookbase inbound sources reveal-secret github-prodsources verify-token
Print the Meta Verify token of a WhatsApp source (the value Meta's "Verify and save" checks). Other providers have none and return an error.
hookbase inbound sources verify-token whatsapp-prodsources rotate-verify-token
Generate a new Meta Verify token for a WhatsApp source and print it. Type it into Meta before the next "Verify and save".
hookbase inbound sources rotate-verify-token whatsapp-prod --yes-y, --yes skips the confirmation.
sources pending-verification
Show the verification token a vendor delivered to the ingest URL during registration (Notion), with when and from which IP it arrived. Paste it into Notion's Verify form.
hookbase inbound sources pending-verification notion-prodsources adopt-verification
Make the pending verification token the source's signing secret. Run it once Notion shows the subscription as verified.
hookbase inbound sources adopt-verification notion-prod --yes-y, --yes skips the confirmation.
Destinations
Manage webhook destinations (delivery targets).
destinations list
List all destinations.
hookbase destinations list
hookbase dest ls --jsonAliases: dest list, dest ls
destinations create
Create a new destination.
# Interactive
hookbase destinations create
# With options
hookbase destinations create \
--name "Production API" \
--url "https://api.myapp.com/webhooks" \
--method POSTOptions:
| Option | Description |
|---|---|
-n, --name <name> | Destination name |
-u, --url <url> | Destination URL |
-m, --method <method> | HTTP method: GET, POST, PUT, PATCH, DELETE. The interactive wizard offers only POST, PUT and PATCH; pass the flag for GET or DELETE |
-y, --yes | Skip confirmation |
destinations get
Show destination details.
hookbase destinations get 22222222-2222-4222-8222-222222222222
hookbase dest show 22222222-2222-4222-8222-222222222222 --jsonAliases: dest get, dest show
destinations update
Update a destination.
hookbase destinations update 22222222-2222-4222-8222-222222222222 --url "https://api.myapp.com/v2/webhooks"
hookbase dest update 22222222-2222-4222-8222-222222222222 --inactiveOptions:
| Option | Description |
|---|---|
-n, --name <name> | New name |
-u, --url <url> | New URL |
-m, --method <method> | New HTTP method |
--active | Set destination as active |
--inactive | Set destination as inactive |
destinations delete
Delete a destination.
hookbase destinations delete 22222222-2222-4222-8222-222222222222
hookbase dest rm 22222222-2222-4222-8222-222222222222 --yesAliases: dest delete, dest rm
destinations test
Send a test webhook to a destination.
hookbase destinations test 22222222-2222-4222-8222-222222222222Routes
Manage webhook routes (source → destination mappings).
routes list
List all routes.
hookbase routes list
hookbase routes ls --jsonroutes create
Create a new route.
# Interactive
hookbase routes create
# With options
hookbase routes create \
--name "GitHub to Slack" \
--source 11111111-1111-4111-8111-111111111111 \
--destination 22222222-2222-4222-8222-222222222222Options:
| Option | Description |
|---|---|
-n, --name <name> | Route name |
-s, --source <sourceId> | Source ID |
-d, --destination <destId> | Destination ID |
-p, --priority <priority> | Priority (higher = runs first) |
-y, --yes | Skip confirmation |
routes get
Show route details.
hookbase routes get 44444444-4444-4444-8444-444444440002
hookbase routes show 44444444-4444-4444-8444-444444440002 --jsonAliases: routes show
routes update
Update a route.
hookbase routes update 44444444-4444-4444-8444-444444440002 --name "New Route Name"
hookbase routes update 44444444-4444-4444-8444-444444440002 --inactiveOptions:
| Option | Description |
|---|---|
-n, --name <name> | New name |
-s, --source <sourceId> | New source ID |
-d, --destination <destId> | New destination ID |
-p, --priority <priority> | New priority |
--active | Set route as active |
--inactive | Set route as inactive |
routes delete
Delete a route.
hookbase routes delete 44444444-4444-4444-8444-444444440002
hookbase routes rm 44444444-4444-4444-8444-444444440002 --yesAliases: routes rm
Tunnels
Manage localhost tunnels for local development.
tunnels list
List all tunnels.
hookbase tunnels list
hookbase tunnel ls --jsonAliases: tunnel list, tunnel ls
tunnels create
Create a new tunnel without connecting.
hookbase tunnels create
hookbase tunnels create --name "Dev Tunnel" --subdomain myappOptions:
| Option | Description |
|---|---|
-n, --name <name> | Tunnel name |
-s, --subdomain <subdomain> | Custom subdomain (Pro plan) |
-y, --yes | Skip confirmation |
tunnels start
Create and connect a tunnel in one step. This is the most common way to start a tunnel.
hookbase tunnels start 3000
hookbase tunnel s 3000 --name "My App"Aliases: tunnel start, tunnel s
Options:
| Option | Description |
|---|---|
-n, --name <name> | Tunnel name (default: tunnel-<port>) |
-s, --subdomain <subdomain> | Custom subdomain (Pro plan) |
Output:
✓ Tunnel created
┌─────────────────────────────────────────────┐
│ Tunnel Info │
├─────────────────────────────────────────────┤
│ Public URL: https://api.hookbase.app/t/abc │
│ Local: http://localhost:3000 │
│ Subdomain: abc-xyz-123 │
└─────────────────────────────────────────────┘
✓ Connected!
Forwarding https://api.hookbase.app/t/abc → localhost:3000
Press Ctrl+C to stop the tunnel
────────────────────────────────────────────────
Incoming requests:tunnels connect
Connect to an existing tunnel.
hookbase tunnels connect dddddddd-dddd-4ddd-8ddd-dddddddddddd 3000tunnels get
Show tunnel details.
hookbase tunnels get dddddddd-dddd-4ddd-8ddd-dddddddddddd
hookbase tunnel show dddddddd-dddd-4ddd-8ddd-dddddddddddd --jsonAliases: tunnels show, tunnel show
tunnels status
Get live tunnel status.
hookbase tunnels status dddddddd-dddd-4ddd-8ddd-ddddddddddddtunnels disconnect
Disconnect a tunnel (keep for later use).
hookbase tunnels disconnect dddddddd-dddd-4ddd-8ddd-ddddddddddddtunnels delete
Delete a tunnel permanently.
hookbase tunnels delete dddddddd-dddd-4ddd-8ddd-dddddddddddd
hookbase tunnel rm dddddddd-dddd-4ddd-8ddd-dddddddddddd --yesAliases: tunnels rm, tunnel rm
tunnels monitor
Launch the tunnel monitor TUI for real-time request logging.
hookbase tunnels monitor dddddddd-dddd-4ddd-8ddd-dddddddddddd 3000See TUI Dashboard for more details.
Cron Jobs
Manage scheduled webhook jobs.
cron list
List all cron jobs.
hookbase cron list
hookbase cron ls --jsoncron create
Create a new cron job.
hookbase cron create
hookbase cron create \
--name "Health Check" \
--schedule "*/5 * * * *" \
--destination 22222222-2222-4222-8222-222222222222 \
--payload '{"type": "health_check"}'Options:
| Option | Description |
|---|---|
-n, --name <name> | Job name |
-s, --schedule <cron> | Cron expression |
-d, --destination <destId> | Destination ID |
--payload <json> | JSON payload |
--group <groupId> | Cron group ID |
-y, --yes | Skip confirmation |
cron get
Show cron job details.
hookbase cron get cron_abc123
hookbase cron show cron_abc123 --jsonAliases: cron show
cron update
Update a cron job.
hookbase cron update cron_abc123 --schedule "0 * * * *"
hookbase cron update cron_abc123 --inactivecron delete
Delete a cron job.
hookbase cron delete cron_abc123
hookbase cron rm cron_abc123 --yesAliases: cron rm
cron enable
Enable a disabled cron job.
hookbase cron enable cron_abc123cron disable
Disable a cron job without deleting it.
hookbase cron disable cron_abc123cron status
Show the status and next run time for a cron job.
hookbase cron status cron_abc123Output:
Cron Job: Health Check
Schedule: */5 * * * *
Status: Active
Last Run: 2024-01-15 10:30:00 (success)
Next Run: 2024-01-15 10:35:00cron follow
Stream cron job executions in real-time.
hookbase cron follow
hookbase cron follow --job cron_abc123
hookbase cron watchAliases: cron watch
Options:
| Option | Description |
|---|---|
--job <cronId> | Filter by cron job ID |
cron builder
Interactive cron expression builder.
hookbase cron builderLaunches an interactive TUI to build cron expressions with a visual schedule preview.
cron groups
Manage cron groups.
hookbase cron groups list
hookbase cron groups create --name "Health Checks"
hookbase cron groups delete cgrp_abc123Events
View and stream webhook events.
events list
List recent events.
hookbase events list
hookbase events ls --limit 100 --source 11111111-1111-4111-8111-111111111111
hookbase events list --status failed --jsonOptions:
| Option | Description |
|---|---|
-l, --limit <number> | Number of events (default: 50) |
-s, --source <sourceId> | Filter by source |
--status <status> | Filter: delivered, failed, pending |
events get
Show event details with payload.
hookbase events get bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb
hookbase events show bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb --jsonAliases: events show
events follow
Stream live events in real-time.
hookbase events follow
hookbase events stream --source 11111111-1111-4111-8111-111111111111Aliases: events stream
Press Ctrl+C to stop streaming.
Deliveries
View and manage webhook deliveries.
deliveries list
List deliveries.
hookbase deliveries list
hookbase deliveries ls --status failed
hookbase deliveries list --destination 22222222-2222-4222-8222-222222222222 --jsonOptions:
| Option | Description |
|---|---|
-l, --limit <number> | Number of deliveries (default: 50) |
-e, --event <eventId> | Filter by event |
-r, --route <routeId> | Filter by route |
-d, --destination <destId> | Filter by destination |
--status <status> | Filter: success, failed, pending, retrying |
deliveries get
Show delivery details including response.
hookbase deliveries get del_abc123
hookbase deliveries show del_abc123 --jsonAliases: deliveries show
deliveries replay
Replay a failed delivery.
hookbase deliveries replay del_abc123
hookbase deliveries replay del_abc123 --yesdeliveries bulk-replay
Replay multiple failed deliveries.
# Interactive selection
hookbase deliveries bulk-replay
# Replay all failed (with confirmation)
hookbase deliveries bulk-replay --status failed --limit 100
# Skip confirmation
hookbase deliveries bulk-replay --yesOptions:
| Option | Description |
|---|---|
--status <status> | Filter by status (default: failed) |
-l, --limit <number> | Max deliveries to replay (default: 50) |
-y, --yes | Skip confirmation (replay all) |
TUI Dashboard
Launch the interactive Text User Interface for managing webhooks.
dashboard
Launch the full interactive dashboard.
hookbase dashboard
hookbase dashAliases: dash
Features:
- Tab navigation: Use
Tabor number keys1-6to switch views - Overview: Quick stats and recent activity
- Sources: List, view details, create, delete sources
- Destinations: List, view details, create, delete destinations
- Tunnels: List, view details, create, connect, delete tunnels
- Events: Browse recent events with status
- Live: Real-time analytics with auto-refresh
Keyboard shortcuts:
| Key | Action |
|---|---|
1-6 | Quick switch to tab |
Tab | Next tab |
Shift+Tab | Previous tab |
↑/↓ | Navigate lists |
Enter | Select/drill down |
Esc | Go back |
q | Quit |
r | Refresh data |
n | Create new (in list views) |
d | Delete (in detail views) |
tunnel monitor
Launch focused tunnel monitoring with live request logging.
hookbase tunnels monitor dddddddd-dddd-4ddd-8ddd-dddddddddddd 3000Features:
- Real-time request/response logging
- Status code highlighting
- Response time tracking
- Session statistics
Convenience Commands
logs
View recent webhook events (alias for events list).
hookbase logs
hookbase logs --limit 100
hookbase logs --followOptions:
| Option | Description |
|---|---|
-l, --limit <number> | Number of events (default: 50) |
-f, --follow | Follow live events |
forward
Quick forward webhooks to a URL.
hookbase forward https://myapp.com/webhookconfig
Show current configuration.
hookbase config
hookbase config --json
hookbase config --pathOptions:
| Option | Description |
|---|---|
--json | Output as JSON |
--path | Show config file path only |
Environment Variables
Configure the CLI using environment variables:
| Variable | Description |
|---|---|
HOOKBASE_API_KEY | API key for authentication |
HOOKBASE_API_URL | Custom API URL |
HOOKBASE_ORG_ID | Default organization ID |
HOOKBASE_DEBUG | Enable debug logging |
# Example: CI/CD usage
export HOOKBASE_API_KEY="whr_4f3c2a1b9d8e7f6a5b4c3d2e1f0a9b8c"
export HOOKBASE_ORG_ID="eeeeeeee-eeee-4eee-8eee-eeeeeeee0001"
hookbase sources listExamples
Quick Start
# Login
hookbase login
# Create a source for GitHub webhooks
hookbase sources create --name "GitHub" --provider github
# Create a destination
hookbase destinations create --name "My API" --url "https://api.myapp.com/webhooks"
# Create a route
hookbase routes create --name "GitHub to API" --source 11111111-1111-4111-8111-11111111000b --destination 22222222-2222-4222-8222-22222222000e
# Start local development tunnel
hookbase tunnels start 3000Interactive Dashboard
# Launch TUI dashboard
hookbase dashboard
# Navigate with Tab or 1-6
# Create resources with 'n'
# Delete with 'd' (requires confirmation)
# Connect to tunnels directly from the UICI/CD Pipeline
#!/bin/bash
set -e
export HOOKBASE_API_KEY="${HOOKBASE_API_KEY}"
export HOOKBASE_ORG_ID="${HOOKBASE_ORG_ID}"
# Create or update resources
hookbase sources create \
--name "CI/CD" \
--slug "cicd" \
--provider custom \
--yes 2>/dev/null || true
hookbase destinations update 22222222-2222-4222-8222-22222222001b \
--url "${BUILD_SERVER_URL}/webhook" \
--yesDebug Failed Webhooks
# List failed deliveries
hookbase deliveries list --status failed
# View details
hookbase deliveries get del_abc123
# Replay after fixing the issue
hookbase deliveries replay del_abc123
# Bulk replay all failed
hookbase deliveries bulk-replay --yesLive Monitoring
# Stream events in terminal
hookbase events follow
# Or use the TUI Live view
hookbase dashboard
# Press '6' for Live analytics view