Command Line

Wave CLI

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.

Install

Requires Node 20 or later. The CLI is published to npm as @waveai/cli.

Global install
npm install -g @waveai/cli
Run without installing
npx @waveai/cli sessions list

Authenticate

The CLI supports two modes: browser OAuth (recommended) or a pasted token.

Browser OAuth

Opens a browser to app.wave.co, signs you in, writes the token to your OS config dir.

wave login

Paste a token

Mint a token at app.wave.co, then:

wave login --token wave_api_...

Or set WAVE_API_KEY in your environment; the CLI prefers it over stored config.

Commands

Sessions

wave sessions listList 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.

Folders

wave folders listList folders (id, name, color, session count). Pair with sessions list --folder for scoped listing.

Content

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 statsAggregated 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

Webhooks

wave webhooks listList registered webhooks.
wave webhooks createRegister 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.

Config + auth

wave login / logout / whoamiAuthenticate (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.

Example flow: back up the last 50 sessions

# 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"

Full reference

Every command mirrors a /v1/* endpoint. See the interactive API reference for request/response shapes and full parameter docs.