keebai CLI is the fastest way to manage outbound webhooks from your terminal. Under the hood it uses the same /v1/webhooks endpoints as the API, with UX tuned for interactive workflows.
Installation
Quickstart: 5 minutes to your first event
Log in
~/.keebai/credentials.json (chmod 600).Validate with a synthetic event
data._test: true) to your URL. If your endpoint verifies the signature and returns 2xx, you’ll see:Validate with real traffic
Send a WhatsApp message to your channel’s number. Your endpoint should receive a
whatsapp.message.received with a shape compatible with the Meta Cloud API.Available commands
keebai webhooks new
| Flag | Required | Description |
|---|---|---|
--url | yes | HTTPS endpoint on your side. |
--event | yes, repeatable | At least one. See the catalog. |
--name | yes | Human-readable label to identify the subscription in listings. |
--header | no, repeatable | Extra headers (Name:Value format). Useful for your own routing/auth. |
--inactive | no | Creates the subscription with is_active: false. Handy if you want to enable it later. |
keebai webhooks list
keebai webhooks test <id>
Dispatches a synthetic event (data._test: true) to the configured endpoint.
keebai webhooks deliveries <id>
History of recent delivery attempts.
event_id, event_type, status (pending / success / failed / dead), status_code, attempts, duration_ms, last_error.
keebai webhooks rotate <id>
Generates a new secret. The old one is invalidated immediately. Asks for confirmation.
new. For zero-downtime rotation, see the strategy in security.
keebai webhooks delete <id>
Deletes the subscription. Future events are not sent. Asks for confirmation.
Global flags
| Flag | Description |
|---|---|
--api-url <url> | Override the API base (default https://api.keebai.com/v1). Useful for staging. |
--output pretty|json | Output format. Use json for piping to jq. |
--verbose | Logs every HTTP request. Never prints the full secret, only the first 12 chars. |
--no-browser | In keebai login, doesn’t open the browser; prints the URL to copy/paste. Useful over SSH/CI. |
--profile <name> | Multi-profile. Default default. Each profile stores separate credentials in ~/.keebai/credentials.json. |
CI/CD
For pipeline use, override the token via env and skip the credentials file:KEEBAI_API_TOKEN takes precedence over ~/.keebai/credentials.json. The PAT must have the webhooks:read and/or webhooks:manage scopes depending on the commands you intend to run.
See also
Signature verification
How to validate
X-Keebai-Signature in your endpoint.Event catalog
Full list of types and
data shapes.REST endpoints
Same operations over HTTP, no CLI required.
Connect WhatsApp via CLI
keebai whatsapp connect and the equivalent API.Connect WhatsApp via QR
keebai whatsapp connect --qr — QR pairing scanned straight from the terminal.Connect WhatsApp from the CLI
There are two pairing modes:--qr mode draws the code in your terminal, refreshes it automatically, and once scanned prints the channel_id of the new channel. SSE flow details in POST /v1/channels/whatsapp/connect (QR mode).
Once a channel is connected (either Cloud API or QR), send messages with the same command:
POST /v1/messages/text, which detects the channel type (Cloud API vs QR) and routes accordingly. Templates and bulk are not supported against QR channels.