List sessions, search transcripts, bulk-export, and manage webhooks — all from your terminal. Same Developer API as the SDK and MCP, just closer to your shell.
Requires Node 20 or later. The CLI is published to npm as @waveai/cli.
npm install -g @waveai/cli
npx @waveai/cli sessions list
The CLI supports two modes: browser OAuth (recommended) or a pasted token.
Opens a browser to app.wave.co, signs you in, writes the token to your OS config dir.
wave login
Or set WAVE_API_KEY in your environment; the CLI prefers it over stored config.
| wave sessions list | List sessions. Supports --limit, --type, --since (ISO or 7d/2w/1m), --cursor, --folder, --json.wave sessions list --folder work --since 7d |
| wave sessions get <id> | Full detail for one session: title, summary, notes, tags, favorite. |
| wave sessions update <id> | Patch title, notes, tags, or favorite. Requires sessions:write scope.wave sessions update sess_01HX... --tags work,roadmap --favorite |
| wave sessions delete <id> | Delete a session. Confirms by default; pass --force to skip. |
| wave folders list | List folders (id, name, color, session count). Pair with sessions list --folder for scoped listing. |
| wave search <query> | Semantic search across all sessions. Prints snippets with similarity scores.wave search "retail media strategy" |
| wave transcript <id> | Full transcript with speaker labels. |
| wave media <id> | Get a signed audio/video URL, or pass --download to save to disk. |
| wave stats | Aggregated session counts by type and platform. |
| wave bulk <ids...> | Fetch up to 50 sessions in one request. Pass --include-transcript for full transcripts (requires transcripts:read scope).wave bulk sess_a sess_b sess_c --include-transcript --json > backup.json |
| wave webhooks list | List registered webhooks. |
| wave webhooks create | Register a new webhook. Signing secret is returned once at creation.wave webhooks create --url https://example.com/wave --events session.completed,session.updated |
| wave webhooks update <id> | Update URL, events, or active status. |
| wave webhooks delete <id> | Delete a webhook and cancel pending deliveries. |
| wave login / logout / whoami | Authenticate (browser or --token), clear credentials, print the current user. |
| wave config get|set|unset <key> | Persistent config. Keys: api_key, api_url, default_format. |
Every command supports --json for machine-readable output. Errors go to stderr with a red wave: error: prefix and a non-zero exit code.
# Sign in wave login # Grab 50 most recent session IDs (JSON output for scripting) IDS=$(wave sessions list --limit 50 --json | jq -r '.sessions[].id') # Pull everything — metadata, summary, full transcript — in one call wave bulk $IDS --include-transcript --include-summary --json > wave-backup.json echo "Backed up $(jq '.sessions | length' wave-backup.json) sessions"
Every command mirrors a /v1/* endpoint. See the interactive API reference for request/response shapes and full parameter docs.