# Bold Video CLI (boldvideo)

URL: https://docs.boldvideo.com/cli



The Bold Video CLI (`boldvideo`) lets you manage your Bold video library from a shell, with structured output for scripts and agents.

Generated from CLI version **0.1.0**.

## Install

With Node.js 22 or newer, run `npm install -g boldvideo`; Bun is not required.

## Authenticate

Create a key in Bold under **Settings → Developer**, then run `boldvideo login` and enter it at the hidden prompt; for automation, inject `BOLDVIDEO_API_KEY` from a secret store (it overrides `--profile` and the active saved profile), never from a committed script or logged argument.

## Quick start

Planned workflow: `import` and `ask` are not registered in this base version.
These three invocations show the intended import, wait, ask sequence, not
commands you can execute yet. The second invocation repeats the same source
with `--wait`; imports deduplicate by source URL. There is no separate `wait`
command. Confirm support with `boldvideo help --json` after the sibling commands
merge, then parser-check this block before treating it as runnable shell.

```text
boldvideo import youtube https://www.youtube.com/@takimoore
boldvideo import youtube https://www.youtube.com/@takimoore --wait
boldvideo ask "What does Taki say about paid workshops versus free webinars?"
```

The command sections below document only the registered surface. Each uses a
plain heading with a predictable anchor: for example,
[`boldvideo profiles list`](#boldvideo-profiles-list). An eventual heading
`boldvideo videos list` will have the anchor `#boldvideo-videos-list`.

## boldvideo

Run your Bold video library.

```sh
boldvideo <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --version | boolean | false   | Print the installed version.                                              |

### Examples

Discover available commands.

```sh
boldvideo --help
```

Read the command tree as JSON.

```sh
boldvideo help --json
```

## boldvideo import

Import videos and wait until their content is searchable.

```sh
boldvideo import <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Import a YouTube channel and wait for readiness.

```sh
boldvideo import youtube https://www.youtube.com/@takimoore --wait
```

Submit one direct video URL.

```sh
boldvideo import url https://cdn.example.com/paid-workshops.mp4 --title "Paid workshops"
```

## boldvideo import youtube

Import a YouTube video, playlist or channel.

```sh
boldvideo import youtube [source_url] [flags]
```

### Arguments

| Argument    | Required | Description                                                                     |
| ----------- | -------- | ------------------------------------------------------------------------------- |
| source\_url | No       | HTTP or HTTPS source URL; otherwise read one URL per line from stdin or --from. |

### Flags

| Flag            | Type    | Default    | Description                                                                     |
| --------------- | ------- | ---------- | ------------------------------------------------------------------------------- |
| --help          | boolean | false      | Show command help.                                                              |
| --json          | boolean | false      | Print JSON, even on a terminal.                                                 |
| --debug         | boolean | false      | Enable diagnostics on terminal stderr; never print API keys.                    |
| --profile       | string  | —          | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence.       |
| --dry-run       | boolean | false      | Preview the write without making changes.                                       |
| --yes           | boolean | false      | Confirm a destructive operation.                                                |
| --from          | string  | —          | Read URLs one per line from a file instead of a positional URL or stdin.        |
| --title         | string  | —          | Single-video title; required for direct media URLs.                             |
| --description   | string  | —          | Single-video description.                                                       |
| --tags          | list    | —          | Tag names, comma-separated or repeated.                                         |
| --collection    | list    | —          | Collection IDs or exact names, comma-separated or repeated.                     |
| --type          | string  | —          | Video type UUID or slug.                                                        |
| --privacy       | string  | "unlisted" | Visibility: public, unlisted or private.                                        |
| --published-at  | string  | —          | Single: ISO date or datetime with timezone. Run: source (default), now or none. |
| --external-id   | string  | —          | Single-video external identifier.                                               |
| --language      | string  | —          | Single-video language code.                                                     |
| --max           | number  | —          | Maximum videos in a playlist/channel run (positive integer).                    |
| --order         | string  | —          | Playlist/channel order: latest or oldest.                                       |
| --wait          | boolean | false      | Wait until imported videos are transcribed and indexed.                         |
| --poll-interval | number  | 5          | Seconds between polls (positive number).                                        |
| --timeout       | number  | 3600       | Maximum seconds to wait (positive number; default 60 minutes).                  |

### Examples

Import one video and wait for a searchable transcript.

```sh
boldvideo import youtube https://www.youtube.com/watch?v=aqz-KE-bpKQ --wait
```

Import a channel into a named collection.

```sh
boldvideo import youtube https://www.youtube.com/@takimoore --collection "Coaching"
```

## boldvideo import url

Import a direct video URL or a YouTube/Vimeo video.

```sh
boldvideo import url [source_url] [flags]
```

### Arguments

| Argument    | Required | Description                                                                     |
| ----------- | -------- | ------------------------------------------------------------------------------- |
| source\_url | No       | HTTP or HTTPS source URL; otherwise read one URL per line from stdin or --from. |

### Flags

| Flag            | Type    | Default    | Description                                                                     |
| --------------- | ------- | ---------- | ------------------------------------------------------------------------------- |
| --help          | boolean | false      | Show command help.                                                              |
| --json          | boolean | false      | Print JSON, even on a terminal.                                                 |
| --debug         | boolean | false      | Enable diagnostics on terminal stderr; never print API keys.                    |
| --profile       | string  | —          | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence.       |
| --dry-run       | boolean | false      | Preview the write without making changes.                                       |
| --yes           | boolean | false      | Confirm a destructive operation.                                                |
| --from          | string  | —          | Read URLs one per line from a file instead of a positional URL or stdin.        |
| --title         | string  | —          | Single-video title; required for direct media URLs.                             |
| --description   | string  | —          | Single-video description.                                                       |
| --tags          | list    | —          | Tag names, comma-separated or repeated.                                         |
| --collection    | list    | —          | Collection IDs or exact names, comma-separated or repeated.                     |
| --type          | string  | —          | Video type UUID or slug.                                                        |
| --privacy       | string  | "unlisted" | Visibility: public, unlisted or private.                                        |
| --published-at  | string  | —          | Single: ISO date or datetime with timezone. Run: source (default), now or none. |
| --external-id   | string  | —          | Single-video external identifier.                                               |
| --language      | string  | —          | Single-video language code.                                                     |
| --max           | number  | —          | Maximum videos in a playlist/channel run (positive integer).                    |
| --order         | string  | —          | Playlist/channel order: latest or oldest.                                       |
| --wait          | boolean | false      | Wait until imported videos are transcribed and indexed.                         |
| --poll-interval | number  | 5          | Seconds between polls (positive number).                                        |
| --timeout       | number  | 3600       | Maximum seconds to wait (positive number; default 60 minutes).                  |

### Examples

Import a workshop into a collection and wait for readiness.

```sh
boldvideo import url https://cdn.example.com/paid-workshops.mp4 --title "Paid workshops" --collection workshops --wait
```

Preview a Vimeo import published at midnight UTC.

```sh
boldvideo import url https://vimeo.com/76979871 --published-at 2026-10-18 --dry-run
```

## boldvideo import status

Show a video or import run, or resume waiting for readiness.

```sh
boldvideo import status <id-or-run> [flags]
```

### Arguments

| Argument  | Required | Description                                        |
| --------- | -------- | -------------------------------------------------- |
| id-or-run | Yes      | Video UUID, hashid, slug or import run identifier. |

### Flags

| Flag            | Type    | Default | Description                                                               |
| --------------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help          | boolean | false   | Show command help.                                                        |
| --json          | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug         | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile       | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --wait          | boolean | false   | Wait until imported videos are transcribed and indexed.                   |
| --poll-interval | number  | 5       | Seconds between polls (positive number).                                  |
| --timeout       | number  | 3600    | Maximum seconds to wait (positive number; default 60 minutes).            |
| --page          | number  | 1       | Run video page (positive integer); --wait checks every page.              |

### Examples

Inspect a channel import.

```sh
boldvideo import status run_taki_20261019
```

Resume waiting for up to two hours.

```sh
boldvideo import status run_taki_20261019 --wait --timeout 7200
```

## boldvideo import cancel

Cancel an import run; an already-submitted batch drains.

```sh
boldvideo import cancel <run_id> [flags]
```

### Arguments

| Argument | Required | Description            |
| -------- | -------- | ---------------------- |
| run\_id  | Yes      | Import run identifier. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Cancel further submission; the current batch drains.

```sh
boldvideo import cancel run_taki_20261019 --yes
```

Preview cancellation without changing the run.

```sh
boldvideo import cancel run_taki_20261019 --dry-run --yes
```

## boldvideo ask

Ask your library a question and show cited moments.

Sources keep their original citation numbers. --limit bounds displayed sources, not retrieval; increasing it regenerates the answer.

```sh
boldvideo ask <prompt> [flags]
```

### Arguments

| Argument | Required | Description                         |
| -------- | -------- | ----------------------------------- |
| prompt   | Yes      | Question to ask your video library. |

### Flags

| Flag           | Type    | Default | Description                                                               |
| -------------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help         | boolean | false   | Show command help.                                                        |
| --json         | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug        | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile      | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit        | number  | 20      | Maximum items to return (positive integer).                               |
| --fields       | list    | —       | API fields to include, comma-separated or repeated.                       |
| --collection   | string  | —       | Restrict the question to this collection ID or slug.                      |
| --as           | string  | —       | Personalize for a viewer UUID or external ID.                             |
| --conversation | string  | —       | Continue this conversation ID.                                            |
| --no-sources   | boolean | false   | Omit sources from output; JSON reports the omitted count.                 |

### Examples

Ask a collection and show timestamped sources.

```sh
boldvideo ask "How should I price my first workshop?" --collection paid-workshops
```

Continue a personalized conversation.

```sh
boldvideo ask "What should I try next?" --as customer-1042 --conversation 8f92bc73-391c-45e1-908d-b6acb7ba02fb
```

## boldvideo search

Search your library with AI or find keyword matches.

AI search shows a summary with cited sources. --limit bounds displayed sources, not retrieval; increasing it regenerates the summary. --keyword uses paginated keyword results instead. --fields selects source or keyword-result fields.

```sh
boldvideo search <query> [flags]
```

### Arguments

| Argument | Required | Description                         |
| -------- | -------- | ----------------------------------- |
| query    | Yes      | Question or keywords to search for. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit   | number  | 20      | Maximum items to return (positive integer).                               |
| --fields  | list    | —       | API fields to include, comma-separated or repeated.                       |
| --keyword | boolean | false   | Search keywords without AI synthesis.                                     |
| --page    | number  | 1       | Keyword results page (positive integer; requires --keyword).              |

### Examples

Find relevant moments with an AI summary.

```sh
boldvideo search "pricing a live workshop" --limit 5
```

Find keyword matches without AI.

```sh
boldvideo search "early bird" --keyword --fields id,title
```

## boldvideo help

Show the command tree and exit codes.

```sh
boldvideo help <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Read every command and flag as JSON.

```sh
boldvideo help --json
```

Look up process exit codes.

```sh
boldvideo help exit-codes
```

## boldvideo help exit-codes

Explain process exit codes.

```sh
boldvideo help exit-codes [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Read the exit-code table.

```sh
boldvideo help exit-codes
```

Read exit codes in a script.

```sh
boldvideo help exit-codes --json
```

## boldvideo login

Verify an API key and save it as the active profile.

Create keys in Bold: Settings → Developer. Omit --token to read stdin or prompt without echo. --profile names the saved profile; otherwise use the account slug. BOLDVIDEO\_API\_KEY still overrides saved profiles.

```sh
boldvideo login [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |
| --token   | string  | —       | API key to verify and store; omit to read it privately.                   |

### Examples

Enter a key privately, or supply it through stdin.

```sh
boldvideo login
```

Verify a key and activate a named profile.

```sh
boldvideo login --token bold_demo_key_2026 --profile customer-demo
```

## boldvideo whoami

Show the authenticated account, key kind and profile.

A null profile means BOLDVIDEO\_API\_KEY supplied the key. The API base URL comes from BOLDVIDEO\_API\_URL or the Bold production default.

```sh
boldvideo whoami [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Check the current account.

```sh
boldvideo whoami
```

Inspect a named profile without switching the default.

```sh
boldvideo whoami --profile customer-demo --json
```

## boldvideo profiles

List, switch and remove stored account profiles.

```sh
boldvideo profiles <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Find saved accounts.

```sh
boldvideo profiles list
```

Switch the default account.

```sh
boldvideo profiles use customer-demo
```

## boldvideo profiles list

List saved profile names without exposing keys.

```sh
boldvideo profiles list [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit   | number  | 20      | Maximum items to return (positive integer).                               |
| --fields  | list    | —       | API fields to include, comma-separated or repeated.                       |
| --offset  | number  | 0       | Start at this profile (nonnegative integer).                              |

### Examples

Show saved profiles and the active default.

```sh
boldvideo profiles list
```

Read a bounded page of profile names.

```sh
boldvideo profiles list --limit 5 --fields name,active
```

## boldvideo profiles use

Make a saved profile the default for future commands.

BOLDVIDEO\_API\_KEY takes precedence even after switching the stored default.

```sh
boldvideo profiles use <name> [flags]
```

### Arguments

| Argument | Required | Description          |
| -------- | -------- | -------------------- |
| name     | Yes      | Stored profile name. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Switch to a demo account.

```sh
boldvideo profiles use customer-demo
```

Preview switching to production.

```sh
boldvideo profiles use production --dry-run
```

## boldvideo profiles remove

Remove a saved profile and its key.

```sh
boldvideo profiles remove <name> [flags]
```

### Arguments

| Argument | Required | Description          |
| -------- | -------- | -------------------- |
| name     | Yes      | Stored profile name. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Remove a demo account's key.

```sh
boldvideo profiles remove customer-demo --yes
```

Preview removing a production profile.

```sh
boldvideo profiles remove production --dry-run --yes
```

## boldvideo logout

Remove the active stored profile and its key.

\--profile removes that profile instead. Environment variables are unchanged; unset BOLDVIDEO\_API\_KEY separately. Removing the active profile leaves no active profile.

```sh
boldvideo logout [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Remove the active stored key.

```sh
boldvideo logout --yes
```

Preview removing a named profile.

```sh
boldvideo logout --profile customer-demo --dry-run --yes
```

## boldvideo videos

Browse library videos and retrieve transcripts.

```sh
boldvideo videos <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Browse the first page of videos.

```sh
boldvideo videos list
```

Inspect a video by slug.

```sh
boldvideo videos get paid-workshops
```

## boldvideo videos list

List a bounded page of library videos.

```sh
boldvideo videos list [flags]
```

### Flags

| Flag         | Type    | Default | Description                                                               |
| ------------ | ------- | ------- | ------------------------------------------------------------------------- |
| --help       | boolean | false   | Show command help.                                                        |
| --json       | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug      | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile    | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit      | number  | 20      | Maximum items to return (positive integer).                               |
| --fields     | list    | —       | API fields to include, comma-separated or repeated.                       |
| --status     | string  | —       | Filter by video status.                                                   |
| --privacy    | string  | —       | Filter by video privacy.                                                  |
| --collection | string  | —       | Filter by video collection.                                               |
| --tag        | string  | —       | Filter by video tag.                                                      |
| --type       | string  | —       | Filter by video type.                                                     |
| --since      | string  | —       | Videos updated since this ISO timestamp.                                  |
| --page       | number  | 1       | Page number (positive integer).                                           |

### Examples

Find ready private videos with an admin key.

```sh
boldvideo videos list --status ready --privacy private --limit 10
```

Select fields from the second page.

```sh
boldvideo videos list --collection paid-workshops --fields internal_id,title --page 2
```

## boldvideo videos get

Show the full video record by UUID, hashid or slug.

```sh
boldvideo videos get <id> [flags]
```

### Arguments

| Argument | Required | Description                 |
| -------- | -------- | --------------------------- |
| id       | Yes      | Video UUID, hashid or slug. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Inspect a video by slug.

```sh
boldvideo videos get paid-workshops
```

Retrieve a complete admin record by UUID.

```sh
boldvideo videos get 30c0d0a0-278c-4c90-b15c-e64e197abf12 --json
```

## boldvideo videos transcript

Retrieve a video transcript or save it to a file.

Defaults to txt on a terminal and json when piped. Piped text formats are JSON strings; --out saves the raw body.

```sh
boldvideo videos transcript <id> [flags]
```

### Arguments

| Argument | Required | Description                 |
| -------- | -------- | --------------------------- |
| id       | Yes      | Video UUID, hashid or slug. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |
| --format  | string  | —       | Transcript format: txt, srt, vtt or json.                                 |
| --out     | string  | —       | Save the transcript body to this file.                                    |

### Examples

Read the transcript in the default format.

```sh
boldvideo videos transcript paid-workshops
```

Save subtitles to a file.

```sh
boldvideo videos transcript paid-workshops --format srt --out paid-workshops.srt
```

## boldvideo videos update

Update metadata and visibility for one or more videos.

Processes IDs in order and continues on individual failures. Reads one ID per stdin line when no IDs are given. Exit 1 means at least one video failed; stdout still contains every result. --dry-run previews without writing.

```sh
boldvideo videos update [id] [flags]
```

### Arguments

| Argument | Required | Description                                                     |
| -------- | -------- | --------------------------------------------------------------- |
| id       | No       | Video UUIDs, hashids or slugs; omit to read one per stdin line. |

### Flags

| Flag                | Type    | Default | Description                                                                   |
| ------------------- | ------- | ------- | ----------------------------------------------------------------------------- |
| --help              | boolean | false   | Show command help.                                                            |
| --json              | boolean | false   | Print JSON, even on a terminal.                                               |
| --debug             | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.                  |
| --profile           | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence.     |
| --dry-run           | boolean | false   | Preview the write without making changes.                                     |
| --yes               | boolean | false   | Confirm a destructive operation.                                              |
| --title             | string  | —       | Replace the video title.                                                      |
| --description       | string  | —       | Replace the description; an empty string clears it.                           |
| --published-at      | string  | —       | ISO date or datetime (UTC if no timezone), or none to clear.                  |
| --type              | string  | —       | Video type UUID or slug.                                                      |
| --privacy           | string  | —       | Visibility: public, unlisted or private.                                      |
| --tags              | list    | —       | Replace tags, comma-separated or repeated; an empty value clears them.        |
| --add-tags          | list    | —       | Add tags, comma-separated or repeated.                                        |
| --remove-tags       | list    | —       | Remove tags, comma-separated or repeated.                                     |
| --collections       | list    | —       | Replace collections, comma-separated or repeated; an empty value clears them. |
| --add-collection    | list    | —       | Add collections, comma-separated or repeated.                                 |
| --remove-collection | list    | —       | Remove collections, comma-separated or repeated.                              |

### Examples

Rename a video and change visibility.

```sh
boldvideo videos update paid-workshops --title 'Paid workshops: October' --privacy unlisted
```

Apply the same metadata changes to multiple videos.

```sh
boldvideo videos update paid-workshops sales-onboarding --add-tags sales,training --remove-collection archived
```

## boldvideo videos publish

Publish one or more videos, optionally setting the publication date.

Processes IDs in order and continues on individual failures. Reads one ID per stdin line when no IDs are given. Exit 1 means at least one video failed; stdout still contains every result. --dry-run previews without writing.

```sh
boldvideo videos publish [id] [flags]
```

### Arguments

| Argument | Required | Description                                                     |
| -------- | -------- | --------------------------------------------------------------- |
| id       | No       | Video UUIDs, hashids or slugs; omit to read one per stdin line. |

### Flags

| Flag           | Type    | Default | Description                                                               |
| -------------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help         | boolean | false   | Show command help.                                                        |
| --json         | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug        | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile      | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run      | boolean | false   | Preview the write without making changes.                                 |
| --yes          | boolean | false   | Confirm a destructive operation.                                          |
| --published-at | string  | —       | Publication ISO date or datetime (UTC if no timezone).                    |

### Examples

Publish two videos in sequence.

```sh
boldvideo videos publish paid-workshops sales-onboarding
```

Preview publishing with an explicit date.

```sh
boldvideo videos publish paid-workshops --published-at 2026-10-19T10:00:00Z --dry-run
```

## boldvideo videos unpublish

Unpublish one or more videos.

Processes IDs in order and continues on individual failures. Reads one ID per stdin line when no IDs are given. Exit 1 means at least one video failed; stdout still contains every result. --dry-run previews without writing.

```sh
boldvideo videos unpublish [id] [flags]
```

### Arguments

| Argument | Required | Description                                                     |
| -------- | -------- | --------------------------------------------------------------- |
| id       | No       | Video UUIDs, hashids or slugs; omit to read one per stdin line. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Unpublish two videos in sequence.

```sh
boldvideo videos unpublish paid-workshops sales-onboarding
```

Preview unpublishing without changing the video.

```sh
boldvideo videos unpublish paid-workshops --dry-run
```

## boldvideo videos delete

Delete one or more videos after confirmation.

Processes IDs in order and continues on individual failures. Reads one ID per stdin line when no IDs are given. Exit 1 means at least one video failed; stdout still contains every result. --dry-run previews without writing. On a terminal, asks once listing video titles unless --yes is given. Piped stdin requires --yes, including with --dry-run.

```sh
boldvideo videos delete [id] [flags]
```

### Arguments

| Argument | Required | Description                                                     |
| -------- | -------- | --------------------------------------------------------------- |
| id       | No       | Video UUIDs, hashids or slugs; omit to read one per stdin line. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Delete two videos without an interactive prompt.

```sh
boldvideo videos delete paid-workshops sales-onboarding --yes
```

Preview deletion, including the video's title.

```sh
boldvideo videos delete paid-workshops --dry-run --yes
```

## boldvideo collections

Organize the video library into collections.

```sh
boldvideo collections <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Find collections in the library.

```sh
boldvideo collections list
```

Create a collection for customer workshops.

```sh
boldvideo collections create "Customer workshops"
```

## boldvideo collections list

List collections, including empty collections.

```sh
boldvideo collections list [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit   | number  | 20      | Maximum items to return (positive integer).                               |
| --fields  | list    | —       | API fields to include, comma-separated or repeated.                       |
| --offset  | number  | 0       | Start at this result (nonnegative integer).                               |

### Examples

Show the first page of collections.

```sh
boldvideo collections list
```

Select collection fields for a bounded page.

```sh
boldvideo collections list --limit 5 --fields id,name,video_count
```

## boldvideo collections create

Create a collection or return the existing collection by name.

```sh
boldvideo collections create <name> [flags]
```

### Arguments

| Argument | Required | Description      |
| -------- | -------- | ---------------- |
| name     | Yes      | Collection name. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |
| --parent  | string  | —       | Parent collection UUID or slug.                                           |

### Examples

Create a root collection.

```sh
boldvideo collections create "Customer workshops"
```

Preview a nested collection.

```sh
boldvideo collections create "Pricing lessons" --parent customer-workshops --dry-run
```

## boldvideo collections rename

Rename a collection without changing its memberships.

```sh
boldvideo collections rename <id> <name> [flags]
```

### Arguments

| Argument | Required | Description              |
| -------- | -------- | ------------------------ |
| id       | Yes      | Collection UUID or slug. |
| name     | Yes      | New collection name.     |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Rename a collection by slug.

```sh
boldvideo collections rename customer-workshops "Customer training"
```

Preview a rename by UUID.

```sh
boldvideo collections rename 8c36b95c-7be2-4b7e-bf63-2ee639f7a246 "Advanced lessons" --dry-run
```

## boldvideo collections add

Add videos to a collection without duplicating memberships.

When no video arguments are given, read one video UUID, hashid or slug per line from piped stdin.

```sh
boldvideo collections add <collection> [video] [flags]
```

### Arguments

| Argument   | Required | Description                                          |
| ---------- | -------- | ---------------------------------------------------- |
| collection | Yes      | Collection UUID or slug.                             |
| video      | No       | Video UUIDs, hashids or slugs; otherwise read stdin. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Add two video memberships.

```sh
boldvideo collections add customer-workshops pricing-masterclass onboarding-basics
```

Preview a membership change using a video hashid.

```sh
boldvideo collections add customer-workshops aB12cD34 --dry-run
```

## boldvideo collections remove

Remove collection memberships without deleting videos.

When no video arguments are given, read one video UUID, hashid or slug per line from piped stdin.

```sh
boldvideo collections remove <collection> [video] [flags]
```

### Arguments

| Argument   | Required | Description                                          |
| ---------- | -------- | ---------------------------------------------------- |
| collection | Yes      | Collection UUID or slug.                             |
| video      | No       | Video UUIDs, hashids or slugs; otherwise read stdin. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Remove two video memberships.

```sh
boldvideo collections remove customer-workshops pricing-masterclass onboarding-basics
```

Preview a membership change using a video hashid.

```sh
boldvideo collections remove customer-workshops aB12cD34 --dry-run
```

## boldvideo collections videos

List videos in a collection.

```sh
boldvideo collections videos <collection> [flags]
```

### Arguments

| Argument   | Required | Description              |
| ---------- | -------- | ------------------------ |
| collection | Yes      | Collection UUID or slug. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit   | number  | 20      | Maximum items to return (positive integer).                               |
| --fields  | list    | —       | API fields to include, comma-separated or repeated.                       |
| --offset  | number  | 0       | Start at this result (nonnegative integer).                               |

### Examples

Browse a collection's videos.

```sh
boldvideo collections videos customer-workshops
```

Select video identifiers and titles.

```sh
boldvideo collections videos customer-workshops --limit 5 --fields id,title
```

## boldvideo viewers

Sync members and inspect viewer progress and memory.

```sh
boldvideo viewers <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

List account members.

```sh
boldvideo viewers list
```

Preview member changes.

```sh
boldvideo viewers sync members.csv --dry-run
```

## boldvideo viewers list

List a bounded page of viewers.

```sh
boldvideo viewers list [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit   | number  | 20      | Maximum items to return (positive integer).                               |
| --fields  | list    | —       | API fields to include, comma-separated or repeated.                       |
| --page    | number  | 1       | Page number (positive integer).                                           |

### Examples

List ten members.

```sh
boldvideo viewers list --limit 10
```

Project the second page.

```sh
boldvideo viewers list --page 2 --fields id,email
```

## boldvideo viewers get

Get a viewer by UUID, email or external ID.

```sh
boldvideo viewers get <viewer> [flags]
```

### Arguments

| Argument | Required | Description                        |
| -------- | -------- | ---------------------------------- |
| viewer   | Yes      | Viewer UUID, email or external ID. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Find a member by email.

```sh
boldvideo viewers get maria@acme.com
```

Find a member by your platform ID.

```sh
boldvideo viewers get member_2048
```

## boldvideo viewers sync

Create or update viewers from CSV, JSON or stdin.

Rows require external\_id and may include email and name. Every other column becomes a key in traits; JSON values retain their types and CSV values are strings. New viewers require name. Omitted fields remain unchanged; supplied traits replace the map. Sync never deletes unless --prune is set. Prune snapshots all pages, then deletes viewers absent from the file only if every sync row succeeded. Four sequential lanes preserve duplicate-ID order. Each request retries a 429 once using Retry-After; other failures are not retried. Dry-run reports planned actions without writes. Partial failures return row errors and exit 1.

```sh
boldvideo viewers sync <file> [flags]
```

### Arguments

| Argument | Required | Description                                                              |
| -------- | -------- | ------------------------------------------------------------------------ |
| file     | Yes      | CSV file, JSON array file, or - for stdin (JSON detected by leading \[). |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |
| --prune   | boolean | —       | Delete viewers absent from the input (requires --yes when piped).         |

### Examples

Preview member changes without writing.

```sh
boldvideo viewers sync members.csv --dry-run
```

Read a member export from piped stdin.

```sh
boldvideo viewers sync -
```

## boldvideo viewers progress

Show a viewer's watch progress.

```sh
boldvideo viewers progress <viewer> [flags]
```

### Arguments

| Argument | Required | Description                        |
| -------- | -------- | ---------------------------------- |
| viewer   | Yes      | Viewer UUID, email or external ID. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --video   | string  | —       | Restrict progress to this video ID.                                       |

### Examples

Inspect a member's viewing history.

```sh
boldvideo viewers progress member_2048
```

Inspect progress on one video.

```sh
boldvideo viewers progress maria@acme.com --video onboarding
```

## boldvideo viewers memory

Read, toggle or clear a viewer's AI memory.

Use get with --enable or --disable to toggle future memory distillation without replacing content. Clear deletes content; it may regrow unless disabled.

```sh
boldvideo viewers memory <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

Read a member's memory.

```sh
boldvideo viewers memory get member_2048
```

Clear a member's memory content.

```sh
boldvideo viewers memory clear maria@acme.com --yes
```

## boldvideo viewers memory get

Read memory or toggle future memory distillation.

```sh
boldvideo viewers memory get <viewer> [flags]
```

### Arguments

| Argument | Required | Description                        |
| -------- | -------- | ---------------------------------- |
| viewer   | Yes      | Viewer UUID, email or external ID. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |
| --enable  | boolean | —       | Enable future memory distillation.                                        |
| --disable | boolean | —       | Disable future memory distillation.                                       |

### Examples

Read a member's memory.

```sh
boldvideo viewers memory get member_2048
```

Stop future distillation without clearing existing memory.

```sh
boldvideo viewers memory get maria@acme.com --disable
```

## boldvideo viewers memory clear

Delete a viewer's memory content.

```sh
boldvideo viewers memory clear <viewer> [flags]
```

### Arguments

| Argument | Required | Description                        |
| -------- | -------- | ---------------------------------- |
| viewer   | Yes      | Viewer UUID, email or external ID. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --dry-run | boolean | false   | Preview the write without making changes.                                 |
| --yes     | boolean | false   | Confirm a destructive operation.                                          |

### Examples

Clear a member's memory content.

```sh
boldvideo viewers memory clear member_2048 --yes
```

Preview clearing memory without deleting content.

```sh
boldvideo viewers memory clear maria@acme.com --dry-run --yes
```

## boldvideo insights

Explore member questions and content gaps.

```sh
boldvideo insights <command> [flags]
```

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |

### Examples

last week's questions

```sh
boldvideo insights questions --since 14d --until 7d --format md
```

questions for one collection

```sh
boldvideo insights questions --collection a31c608a-2ab7-457f-8734-4f8f055d2e08
```

## boldvideo insights questions

Read member questions and identify content gaps.

Requires an admin key. Windows are half-open \[since, until); dates, ISO 8601 timestamps and Nd/Nh durations are passed through verbatim. Until defaults to the server's now. Results are newest first as served. Grouping counts only the fetched page: video counts each question once per distinct source video (none/unobserved are separate); day uses the date in asked\_at. Terminal sources '?' means unobserved, 0 means none; only question text is shortened.

```sh
boldvideo insights questions [flags]
```

### Flags

| Flag              | Type    | Default | Description                                                                                                                         |
| ----------------- | ------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| --help            | boolean | false   | Show command help.                                                                                                                  |
| --json            | boolean | false   | Print JSON, even on a terminal.                                                                                                     |
| --debug           | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.                                                                        |
| --profile         | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence.                                                           |
| --limit           | number  | 20      | Maximum items to return (positive integer).                                                                                         |
| --fields          | list    | —       | API fields to include, comma-separated or repeated.                                                                                 |
| --since           | string  | "7d"    | Window start: ISO timestamp, date, or Nd/Nh duration.                                                                               |
| --until           | string  | —       | Exclusive window end: ISO timestamp, date, or Nd/Nh duration; default now.                                                          |
| --collection      | string  | —       | Filter by collection UUID.                                                                                                          |
| --video           | string  | —       | Filter by video UUID, hashid or slug.                                                                                               |
| --kind            | string  | —       | Filter by question kind.                                                                                                            |
| --channel         | string  | —       | Filter by channel.                                                                                                                  |
| --outcome         | string  | —       | Filter by classification outcome.                                                                                                   |
| --status          | string  | —       | Filter by review status.                                                                                                            |
| --reason          | string  | —       | Filter by classification reason.                                                                                                    |
| --needs-a-look    | boolean | —       | Only questions needing a look.                                                                                                      |
| --include-team    | boolean | —       | Include questions from team members.                                                                                                |
| --include-noise   | boolean | —       | Include questions classified as noise.                                                                                              |
| --include-pending | boolean | —       | Include pending questions.                                                                                                          |
| --page            | number  | 1       | Page number (positive integer); --limit sets page\_size, maximum 100.                                                               |
| --group-by        | string  | —       | Count by video, outcome or day over the fetched page only.                                                                          |
| --format          | string  | —       | Use md for a compact Markdown question list, even when piped. --json wins; otherwise md cannot combine with --group-by or --fields. |

### Examples

last week's questions

```sh
boldvideo insights questions --since 14d --until 7d --format md
```

questions for one collection

```sh
boldvideo insights questions --collection a31c608a-2ab7-457f-8734-4f8f055d2e08
```

## boldvideo api

Call any Bold API endpoint with the active key.

Paths are relative to /api/v1. Use --list \[filter] to discover endpoints. -f preserves strings; -F parses JSON values. --input reads a JSON file or stdin (-), and cannot be combined with fields. --paginate concatenates data arrays, bounded by --limit (default 20); --fields projects pagination or discovery results. DELETE requires --yes on piped stdin, including dry-run.

```sh
boldvideo api [method] [path] [flags]
```

### Arguments

| Argument | Required | Description                                                  |
| -------- | -------- | ------------------------------------------------------------ |
| method   | No       | GET, POST, PUT, PATCH, DELETE, or an optional --list filter. |
| path     | No       | Endpoint path, including optional query parameters.          |

### Flags

| Flag          | Type    | Default | Description                                                               |
| ------------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help        | boolean | false   | Show command help.                                                        |
| --json        | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug       | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile     | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit       | number  | 20      | Maximum items to return (positive integer).                               |
| --fields      | list    | —       | API fields to include, comma-separated or repeated.                       |
| --dry-run     | boolean | false   | Preview the write without making changes.                                 |
| --yes         | boolean | false   | Confirm a destructive operation.                                          |
| --field       | list    | —       | String body field (-f key=value), repeatable.                             |
| --typed-field | list    | —       | JSON body field (-F key=value), repeatable.                               |
| --query       | list    | —       | Query parameter (-q key=value), repeatable.                               |
| --input       | string  | —       | Read the whole JSON body from a file, or - for stdin.                     |
| --paginate    | boolean | false   | Follow Link or meta pagination up to --limit items.                       |
| --list        | boolean | false   | Fetch OpenAPI and list methods, paths and summaries.                      |
| --offset      | number  | 0       | Skip this many endpoints in --list results.                               |

### Examples

Read the video response as JSON.

```sh
boldvideo api GET /videos
```

Create a collection with a string field.

```sh
boldvideo api POST /collections -f title="Paid workshops"
```

## boldvideo docs

List documentation topics or print a page as markdown.

Resolve an exact topic, then a unique prefix or substring. The cli topic renders the installed command tree offline, without network requests. Other topics require network access. Pages print raw markdown even when piped; --json returns \{url, title, markdown}. BOLDVIDEO\_DOCS\_URL overrides [https://docs.boldvideo.com](https://docs.boldvideo.com). Requests time out after 10 seconds and never send API credentials.

```sh
boldvideo docs [topic] [flags]
```

### Arguments

| Argument | Required | Description                   |
| -------- | -------- | ----------------------------- |
| topic    | No       | Documentation topic or match. |

### Flags

| Flag      | Type    | Default | Description                                                               |
| --------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help    | boolean | false   | Show command help.                                                        |
| --json    | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug   | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --limit   | number  | 20      | Maximum items to return (positive integer).                               |
| --fields  | list    | —       | API fields to include, comma-separated or repeated.                       |
| --search  | string  | —       | Filter topics, titles and descriptions by substring.                      |
| --offset  | number  | 0       | Start at this topic (nonnegative integer).                                |

### Examples

Find documentation about API authentication.

```sh
boldvideo docs --search authentication
```

Read the quickstart without leaving the shell.

```sh
boldvideo docs guides/quickstart
```

## boldvideo upgrade

Show how to upgrade this installation without changing it.

Detect the install channel and print its upgrade command; never replace the running executable. Check npm for the latest version unless --no-check is passed. Check failures are ignored.

```sh
boldvideo upgrade [flags]
```

### Flags

| Flag       | Type    | Default | Description                                                               |
| ---------- | ------- | ------- | ------------------------------------------------------------------------- |
| --help     | boolean | false   | Show command help.                                                        |
| --json     | boolean | false   | Print JSON, even on a terminal.                                           |
| --debug    | boolean | false   | Enable diagnostics on terminal stderr; never print API keys.              |
| --profile  | string  | —       | Use a stored profile for this call; BOLDVIDEO\_API\_KEY takes precedence. |
| --no-check | boolean | false   | Skip the optional npm version check (3 second timeout).                   |

### Examples

Find the upgrade command for this install.

```sh
boldvideo upgrade
```

Read upgrade instructions offline as JSON.

```sh
boldvideo upgrade --no-check --json
```

## Recipes

The five video workflows below depend on sibling command branches. They are
not executable in this reference's current base: it registers auth, profiles,
help and docs, but not videos, insights, import, ask, collections or viewers.
No speculative flags or unsupported shell commands are supplied. After those
commands merge, replace these pending workflows with parser-checked shell
recipes and regenerate the page before publishing a release. `jq` is needed
for the list pipeline.

Check the installed commands before starting:

```sh
boldvideo help --json
boldvideo whoami
```

### Bulk-edit from a list pipeline

Pending `videos list` and `videos update`. Request a bounded page with only the
IDs and fields needed to select videos. Pipe the JSON `items` through `jq` to
select IDs, then loop over the IDs with quoted arguments and preview each update
using `--dry-run`. Review the previews before applying the same updates. Follow
the exact `next` command if another page exists; do not assume the first page is
the entire library.

### Weekly questions digest

Pending `insights questions`. Request questions from the last seven days, save
the JSON response to a dated file and format the returned questions into a
digest. Follow pagination when present. Schedule the read-only invocation in
your own weekly job with a secret-injected key; do not put a key in the job's
command line or digest.

### Import a channel and ask

Pending `import youtube` and `ask`. Import the channel
`https://www.youtube.com/@takimoore` into a collection and wait for ingest to
finish with `--wait`. Then ask “What does Taki say about paid workshops versus
free webinars?” scoped to that collection. Reruns deduplicate by source URL;
waiting avoids asking before content is ready.

### Kajabi migration from a folder of URLs

Pending `import url`. Export the Kajabi lesson media URLs you are allowed to
download into UTF-8 text files under `kajabi-urls/`, one URL per line. Iterate
through the files and URLs, preserving each URL as one quoted argument; import
each source into the destination course collection and wait for ingest with
`--wait`. Use stable source URLs so reruns can deduplicate, and resolve expiring
or inaccessible links before retrying. Keep a migration log and reconcile its
successful imports with the exported lesson count before switching learners.
Do not assume `import dir` reads URL lists; its input contract must be checked
when that command lands.

### Customer onboarding: create collections, import, sync viewers

Pending `collections create`, `import url` and `viewers sync`. Check the customer
account with `boldvideo whoami`, create a collection for the onboarding course,
and record its returned ID. Import the welcome and training videos into that
collection, waiting for ingest before inviting learners. Preview the viewer
sync with `--dry-run`, review the customer roster and collection assignments,
then apply the sync. Verify the resulting viewers before sharing access. The
roster format and assignment flags must come from the registered command spec,
not an assumed CSV schema.

## Exit codes

| Exit | Meaning                            |
| ---- | ---------------------------------- |
| 0    | Success                            |
| 1    | General failure                    |
| 2    | Usage error                        |
| 3    | Not authenticated or not permitted |
| 4    | Not found                          |
| 5    | Timed out while waiting            |

Check the process exit status before parsing a success response. Exit 3 covers
both missing/invalid authentication and insufficient permissions. HTTP 404 maps
to exit 4; HTTP 408/504 and wait deadlines map to exit 5. Other API failures use
exit 1. Errors include a stable code and a next-command hint on stderr; scripts
should branch on the exit status or code, not the human-readable message.

```sh
boldvideo help exit-codes --json
```

## Error shape

On nonterminal stderr, failures produce exactly one newline-terminated JSON
object and no success output on stdout. For example, an unknown command returns
exit 2 and:

```json
{
  "code": "unknown_command",
  "message": "Unknown command 'hlep'.",
  "hint": "boldvideo help --help\nRead: boldvideo docs cli",
  "docs": "https://docs.boldvideo.com/cli#unknown-command"
}
```

`code` is stable snake\_case; `message` is a single human-readable line; `hint`
names the next command to run; `docs` points to the relevant documentation.
`request_id` is an additional string when supplied by the API and is omitted
otherwise. Preserve it when reporting an API failure. Terminal stderr prints
the same fields as text. `--json` changes success output, not error formatting.

### Output and safety contract

* Success is one JSON value on stdout when piped or when `--json` is passed;
  terminals receive readable text or tables. IDs are never truncated.
* Exception: `boldvideo docs <topic>` prints raw markdown even when piped.
  Use `--json` for an object with `url`, `title` and `markdown` instead.
* Lists accept `--limit` (default 20) and `--fields` (comma-separated or repeated).
  A page is `{ "items": [], "has_more": false }`; when more exists, `has_more`
  is true and `next` contains the exact command for the next page. Follow it
  explicitly; the CLI does not silently fetch the whole library.
* Progress and continuation hints go to terminal stderr only. `--debug` never
  dumps API keys. Nonempty `NO_COLOR` disables color; pipes never receive ANSI
  color escapes.
* Every write supports `--dry-run`. Destructive commands require `--yes` when
  stdin is not a terminal, including previews (`--dry-run --yes`). Preview first
  and check the target account with `boldvideo whoami` before applying a write.
* Ingest commands, when registered, expose `--wait`. Imports deduplicate on
  source URL so rerunning an import is safe.

To discover the exact installed surface as structured data:

```sh
boldvideo help --json
```
