Bold Video CLI (boldvideo)
Install, authenticate and use every boldvideo CLI command, with flags, examples, recipes and exit codes.
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.
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. An eventual heading
boldvideo videos list will have the anchor #boldvideo-videos-list.
boldvideo
Run your Bold video library.
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.
boldvideo --helpRead the command tree as JSON.
boldvideo help --jsonboldvideo import
Import videos and wait until their content is searchable.
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.
boldvideo import youtube https://www.youtube.com/@takimoore --waitSubmit one direct video URL.
boldvideo import url https://cdn.example.com/paid-workshops.mp4 --title "Paid workshops"boldvideo import youtube
Import a YouTube video, playlist or channel.
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.
boldvideo import youtube https://www.youtube.com/watch?v=aqz-KE-bpKQ --waitImport a channel into a named collection.
boldvideo import youtube https://www.youtube.com/@takimoore --collection "Coaching"boldvideo import url
Import a direct video URL or a YouTube/Vimeo video.
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.
boldvideo import url https://cdn.example.com/paid-workshops.mp4 --title "Paid workshops" --collection workshops --waitPreview a Vimeo import published at midnight UTC.
boldvideo import url https://vimeo.com/76979871 --published-at 2026-10-18 --dry-runboldvideo import status
Show a video or import run, or resume waiting for readiness.
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.
boldvideo import status run_taki_20261019Resume waiting for up to two hours.
boldvideo import status run_taki_20261019 --wait --timeout 7200boldvideo import cancel
Cancel an import run; an already-submitted batch drains.
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.
boldvideo import cancel run_taki_20261019 --yesPreview cancellation without changing the run.
boldvideo import cancel run_taki_20261019 --dry-run --yesboldvideo 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.
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.
boldvideo ask "How should I price my first workshop?" --collection paid-workshopsContinue a personalized conversation.
boldvideo ask "What should I try next?" --as customer-1042 --conversation 8f92bc73-391c-45e1-908d-b6acb7ba02fbboldvideo 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.
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.
boldvideo search "pricing a live workshop" --limit 5Find keyword matches without AI.
boldvideo search "early bird" --keyword --fields id,titleboldvideo help
Show the command tree and exit codes.
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.
boldvideo help --jsonLook up process exit codes.
boldvideo help exit-codesboldvideo help exit-codes
Explain process exit codes.
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.
boldvideo help exit-codesRead exit codes in a script.
boldvideo help exit-codes --jsonboldvideo 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.
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.
boldvideo loginVerify a key and activate a named profile.
boldvideo login --token bold_demo_key_2026 --profile customer-demoboldvideo 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.
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.
boldvideo whoamiInspect a named profile without switching the default.
boldvideo whoami --profile customer-demo --jsonboldvideo profiles
List, switch and remove stored account profiles.
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.
boldvideo profiles listSwitch the default account.
boldvideo profiles use customer-demoboldvideo profiles list
List saved profile names without exposing keys.
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.
boldvideo profiles listRead a bounded page of profile names.
boldvideo profiles list --limit 5 --fields name,activeboldvideo profiles use
Make a saved profile the default for future commands.
BOLDVIDEO_API_KEY takes precedence even after switching the stored default.
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.
boldvideo profiles use customer-demoPreview switching to production.
boldvideo profiles use production --dry-runboldvideo profiles remove
Remove a saved profile and its key.
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.
boldvideo profiles remove customer-demo --yesPreview removing a production profile.
boldvideo profiles remove production --dry-run --yesboldvideo 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.
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.
boldvideo logout --yesPreview removing a named profile.
boldvideo logout --profile customer-demo --dry-run --yesboldvideo videos
Browse library videos and retrieve transcripts.
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.
boldvideo videos listInspect a video by slug.
boldvideo videos get paid-workshopsboldvideo videos list
List a bounded page of library videos.
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.
boldvideo videos list --status ready --privacy private --limit 10Select fields from the second page.
boldvideo videos list --collection paid-workshops --fields internal_id,title --page 2boldvideo videos get
Show the full video record by UUID, hashid or slug.
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.
boldvideo videos get paid-workshopsRetrieve a complete admin record by UUID.
boldvideo videos get 30c0d0a0-278c-4c90-b15c-e64e197abf12 --jsonboldvideo 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.
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.
boldvideo videos transcript paid-workshopsSave subtitles to a file.
boldvideo videos transcript paid-workshops --format srt --out paid-workshops.srtboldvideo 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.
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.
boldvideo videos update paid-workshops --title 'Paid workshops: October' --privacy unlistedApply the same metadata changes to multiple videos.
boldvideo videos update paid-workshops sales-onboarding --add-tags sales,training --remove-collection archivedboldvideo 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.
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.
boldvideo videos publish paid-workshops sales-onboardingPreview publishing with an explicit date.
boldvideo videos publish paid-workshops --published-at 2026-10-19T10:00:00Z --dry-runboldvideo 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.
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.
boldvideo videos unpublish paid-workshops sales-onboardingPreview unpublishing without changing the video.
boldvideo videos unpublish paid-workshops --dry-runboldvideo 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.
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.
boldvideo videos delete paid-workshops sales-onboarding --yesPreview deletion, including the video's title.
boldvideo videos delete paid-workshops --dry-run --yesboldvideo collections
Organize the video library into collections.
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.
boldvideo collections listCreate a collection for customer workshops.
boldvideo collections create "Customer workshops"boldvideo collections list
List collections, including empty collections.
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.
boldvideo collections listSelect collection fields for a bounded page.
boldvideo collections list --limit 5 --fields id,name,video_countboldvideo collections create
Create a collection or return the existing collection by name.
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.
boldvideo collections create "Customer workshops"Preview a nested collection.
boldvideo collections create "Pricing lessons" --parent customer-workshops --dry-runboldvideo collections rename
Rename a collection without changing its memberships.
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.
boldvideo collections rename customer-workshops "Customer training"Preview a rename by UUID.
boldvideo collections rename 8c36b95c-7be2-4b7e-bf63-2ee639f7a246 "Advanced lessons" --dry-runboldvideo 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.
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.
boldvideo collections add customer-workshops pricing-masterclass onboarding-basicsPreview a membership change using a video hashid.
boldvideo collections add customer-workshops aB12cD34 --dry-runboldvideo 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.
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.
boldvideo collections remove customer-workshops pricing-masterclass onboarding-basicsPreview a membership change using a video hashid.
boldvideo collections remove customer-workshops aB12cD34 --dry-runboldvideo collections videos
List videos in a collection.
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.
boldvideo collections videos customer-workshopsSelect video identifiers and titles.
boldvideo collections videos customer-workshops --limit 5 --fields id,titleboldvideo viewers
Sync members and inspect viewer progress and memory.
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.
boldvideo viewers listPreview member changes.
boldvideo viewers sync members.csv --dry-runboldvideo viewers list
List a bounded page of viewers.
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.
boldvideo viewers list --limit 10Project the second page.
boldvideo viewers list --page 2 --fields id,emailboldvideo viewers get
Get a viewer by UUID, email or external ID.
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.
boldvideo viewers get maria@acme.comFind a member by your platform ID.
boldvideo viewers get member_2048boldvideo 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.
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.
boldvideo viewers sync members.csv --dry-runRead a member export from piped stdin.
boldvideo viewers sync -boldvideo viewers progress
Show a viewer's watch progress.
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.
boldvideo viewers progress member_2048Inspect progress on one video.
boldvideo viewers progress maria@acme.com --video onboardingboldvideo 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.
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.
boldvideo viewers memory get member_2048Clear a member's memory content.
boldvideo viewers memory clear maria@acme.com --yesboldvideo viewers memory get
Read memory or toggle future memory distillation.
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.
boldvideo viewers memory get member_2048Stop future distillation without clearing existing memory.
boldvideo viewers memory get maria@acme.com --disableboldvideo viewers memory clear
Delete a viewer's memory content.
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.
boldvideo viewers memory clear member_2048 --yesPreview clearing memory without deleting content.
boldvideo viewers memory clear maria@acme.com --dry-run --yesboldvideo insights
Explore member questions and content gaps.
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
boldvideo insights questions --since 14d --until 7d --format mdquestions for one collection
boldvideo insights questions --collection a31c608a-2ab7-457f-8734-4f8f055d2e08boldvideo 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.
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
boldvideo insights questions --since 14d --until 7d --format mdquestions for one collection
boldvideo insights questions --collection a31c608a-2ab7-457f-8734-4f8f055d2e08boldvideo 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.
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.
boldvideo api GET /videosCreate a collection with a string field.
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. Requests time out after 10 seconds and never send API credentials.
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.
boldvideo docs --search authenticationRead the quickstart without leaving the shell.
boldvideo docs guides/quickstartboldvideo 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.
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.
boldvideo upgradeRead upgrade instructions offline as JSON.
boldvideo upgrade --no-check --jsonRecipes
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:
boldvideo help --json
boldvideo whoamiBulk-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.
boldvideo help exit-codes --jsonError 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:
{
"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
--jsonis passed; terminals receive readable text or tables. IDs are never truncated. - Exception:
boldvideo docs <topic>prints raw markdown even when piped. Use--jsonfor an object withurl,titleandmarkdowninstead. - Lists accept
--limit(default 20) and--fields(comma-separated or repeated). A page is{ "items": [], "has_more": false }; when more exists,has_moreis true andnextcontains 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.
--debugnever dumps API keys. NonemptyNO_COLORdisables color; pipes never receive ANSI color escapes. - Every write supports
--dry-run. Destructive commands require--yeswhen stdin is not a terminal, including previews (--dry-run --yes). Preview first and check the target account withboldvideo whoamibefore 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:
boldvideo help --json