baz media
Manage media files in your project
baz media [options] [command]| Option | Description |
|---|---|
-h, --help | display help for command |
baz media upload
Upload an image, video, or audio file to the media library
baz media upload [options] <file>| Option | Description |
|---|---|
--name <name> | Custom name for the uploaded file |
-h, --help | display help for command |
Custom names:
If --name has no extension, Baz keeps the source file extension.
For example, uploading file.png with --name hero stores the file as hero.png.
Examples:
baz media upload ./hero.png --project-id <id>
baz media upload ./hero.png --name landing-page-hero --project-id <id> --jsonbaz media list
List uploaded media files for the active project
baz media list [options]| Option | Description |
|---|---|
--type <type> | Filter by type: image, video, audio, logo |
--limit <n> | Max items to show Default: 50. |
-h, --help | display help for command |
baz media compress
Generate lightweight preview renditions for all project video media (run after batch-uploading clips)
baz media compress [options]| Option | Description |
|---|---|
--info | Report master vs preview sizes without compressing anything |
--fix-masters | Losslessly remux non-faststart masters in place first (fixes slow Lambda frame extraction on first export) |
-h, --help | display help for command |
baz media transcribe-voiceover
Transcribe an uploaded audio asset with Whisper word timestamps and persist voiceover alignment metadata
baz media transcribe-voiceover [options] <assetId>| Option | Description |
|---|---|
-h, --help | display help for command |
baz media music
Generate a music bed directly in Bazaar via Suno (sunoapi.org)
baz media music [options] <prompt>| Option | Description |
|---|---|
--title <title> | Track title (custom mode) |
--lyrics <lyrics> | Exact lyrics to sing — only with --vocal in custom mode |
--model <model> | Suno model: V4, V4_5, V4_5PLUS, V4_5ALL, V5, V5_5 Default: V4_5PLUS. |
--vocal | Generate a sung track instead of an instrumental |
--simple | Non-custom mode: treat the prompt as a plain description |
--negative <tags> | Comma-separated tags to exclude |
-h, --help | display help for command |
What it does:
Generates a music bed through Bazaar via sunoapi.org (a third-party Suno
reseller, not Suno's own API). Every call returns TWO takes and is billed
once, so both land in your media library and you pick the better one.
Tracks are re-hosted on Bazaar R2 immediately — the provider deletes its
own copies after 15 days.
Modes:
Custom mode (default) You control style and title. Use for beds.
Non-custom (--simple) One plain description, lyrics auto-written.
Instrumental vs vocal:
Instrumental is the default — it is what a bed under a voiceover needs.
Pass --vocal for a sung track. In custom mode + --vocal, --lyrics is the
LITERAL lyrics that get sung, not a description of them.
Models:
V4_5PLUS Richer sound, up to 8 min — default, best for instrumental beds
V4_5ALL Better song structure, up to 8 min — best for vocal tracks
V5 Latest, most expressive, fastest — hero tracks
V5_5 Use when a persona/custom voice is applied
V4_5 Genre blending, up to 8 min
V4 Highest audio quality, up to 4 min
Inputs:
prompt (positional) The style description in custom mode; the whole brief with --simple.
--title Track title (custom mode). Defaults to a title derived from the prompt.
--lyrics Exact lyrics. Only valid with --vocal in custom mode.
--model One of the models above (default V4_5PLUS).
--vocal Generate a sung track instead of an instrumental.
--simple Non-custom mode: send the prompt as a plain description.
--negative Comma-separated tags to keep out, e.g. "Male Vocals, Distorted Guitar".
Duration:
Suno decides the length from the style; there is no duration parameter.
Describe the shape you want ("quiet 8-second intro, drop, long ambient
fade-out") and trim the returned track. The CLI prints each take's duration.
Examples:
baz media music "Cinematic ambient pad, slow swells, warm analog synths, minor key, editorial tension, no drums"
baz media music --title "Argyle Estate Reel" "Moody luxury deep house, 123 BPM, atmospheric piano intro, hard drop, long elegant fade-out"
baz media music --model V4_5ALL --vocal --lyrics "$(cat hook.txt)" "Upbeat electronic pop, optimistic major key"
baz media music --simple "A short relaxing piano tune"
Live pricing:
baz balance --pricingbaz media tts
Generate a voiceover audio asset directly in Bazaar
Alias: voiceover
baz media tts [options] <text>| Option | Description |
|---|---|
--provider <provider> | TTS provider: gemini, minimax, or elevenlabs Default: gemini. |
--voice-id <voiceId> | Provider voice ID. Gemini accepts Gemini voice names; ElevenLabs requires a connected voice |
--voice-style <style> | Gemini voice direction, e.g. warm documentary narrator, calm British presenter |
--emotion <emotion> | MiniMax emotion hint, e.g. happy, sad, calm, excited |
--speed <speed> | MiniMax speed: 0.5-2.0 |
--pitch <pitch> | MiniMax pitch: -12 to 12 |
--raw | Use text exactly as the spoken script; disables MiniMax AI voice interpretation |
-h, --help | display help for command |
What it does:
Generates one voiceover/audio asset directly in Bazaar and attaches it to the active project.
Use this when you want reusable narration audio without going through the chat agent.
Pricing estimate:
--provider gemini $0.08 per started minute (Gemini 3.1 Flash TTS Preview)
--provider minimax $0.06 per started 1k characters (Minimax Speech)
--provider elevenlabs $0.44 per estimated minute, or $0.00/min with connected BYOK
Provider notes:
gemini is the default and uses Google Gemini TTS voices through Bazaar.
gemini supports --voice-id plus --voice-style for delivery direction.
If --voice-style is omitted, Bazaar reuses the project's stored voice style or derives one from project context.
Supported Gemini voice IDs include Kore (default), Zephyr, Puck, Charon, Aoede, Leda, Orus, Fenrir.
minimax supports emotion, speed, pitch, and optional AI voice interpretation.
elevenlabs requires a connected ElevenLabs key/default voice or a --voice-id.
Examples:
baz media tts --provider gemini "Welcome to the listing. This home opens with warm natural light."
baz media tts --provider gemini --voice-id Zephyr --voice-style "warm, calm, real-estate documentary narrator" "A calm editorial narration for a finance explainer."
baz media tts --provider minimax --emotion happy --speed 1.05 "Three reasons this product launch matters."
Live pricing:
baz balance --pricingbaz media imagegen2
Generate an Image Gen 2 image directly in Bazaar (verbatim prompt, no agent rewriting)
baz media imagegen2 [options] <prompt>| Option | Description |
|---|---|
--provider <provider> | Image provider: openai, nanobanana, flux, xai, or pony Default: openai. |
--aspect-ratio <ratio> | Aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4, 21:9 Default: 1:1. |
--format <fmt> | Output format: jpg, png, webp Default: jpg. |
--resolution <resolution> | xAI output resolution: 1k or 2k Default: 1k. |
--input-image <path> | Repeatable reference image input. Limits: openai=8, nanobanana=3, flux=8, xai=3, pony=0 |
-h, --help | display help for command |
What it does:
Generates or edits one image directly through Bazaar Image Gen 2.
The prompt is sent verbatim; the autonomous video agent does not rewrite it.
The output is uploaded to Bazaar media and returned as a reusable URL/asset id.
Inputs:
prompt Required text prompt.
--input-image <path> Repeatable reference image input. Limits: openai=8, nanobanana=3, flux=8, xai=3, pony=0.
--aspect-ratio Output shape. Common: 1:1, 16:9, 9:16, 4:3, 3:4, 21:9.
--format Output image format: jpg, png, or webp.
--resolution xAI output resolution: 1k or 2k.
Pricing estimate:
--provider openai $0.10 per image (OpenAI GPT Image 2)
--provider nanobanana $0.08 per image (NanoBanana)
--provider flux $0.08 per image (FLUX 2 Pro)
--provider xai $0.16 at 1k; $0.20 at 2k (xAI Grok Imagine Image Quality)
--provider pony $0.03 per image (CyberRealistic Pony v1.25)
If --provider is omitted, the CLI uses openai/Image Gen 2.
Provider notes:
openai accepts up to eight --input-image references.
xai uses the literal grok-imagine-image-quality model and accepts up to three ordered references.
flux is best for clean text-to-image generation.
nanobanana is available as a separate provider/fallback.
pony (CyberRealistic Pony) is the bikini / tactical / thirst-bar still path; text-to-image only. Or use: baz media pony "..."
Examples:
baz media imagegen2 --aspect-ratio 16:9 "Luxury real estate dusk exterior, cinematic"
baz media imagegen2 --input-image ./kitchen.jpg "Make this kitchen brighter and editorial"
baz media imagegen2 --provider xai --resolution 2k --aspect-ratio 9:16 --input-image ./person.jpg --input-image ./outfit.jpg "Keep the same person and apply the outfit"
baz media imagegen2 --provider flux --format webp "Minimal SaaS dashboard hero image"
baz media imagegen2 --provider pony --aspect-ratio 9:16 "score_9, 1girl adult blonde, black string bikini, rooftop pool"
baz media pony --aspect-ratio 9:16 "score_9, 1girl adult blonde, white string bikini, prone on range mat"
Live pricing:
baz balance --pricingbaz media pony
Generate a CyberRealistic Pony still via Bazaar (bikini / tactical / thirst bar)
baz media pony [options] <prompt>| Option | Description |
|---|---|
--aspect-ratio <ratio> | Aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4, … Default: 9:16. |
--format <fmt> | Output format: jpg, png, webp Default: png. |
-h, --help | display help for command |
What it does:
Alias for: baz media imagegen2 --provider pony
Uses Bazaar's Replicate token — customer only needs BAZ_API_KEY + balance.
Best for suggestive-but-clothed stills that xAI/flux/nanobanana reject.
Pricing estimate: $0.03 per image
Examples:
baz media pony "score_9, 1girl adult blonde, black string bikini, rooftop pool, 9:16"
baz media pony --aspect-ratio 9:16 "score_9, prone on range mat, white string bikini, rifle"
Then animate:
baz media grok-video --image <downloaded-or-url> --duration 5 "Look back over shoulder; locked camera"
Live pricing:
baz balance --pricingbaz media describe
Describe what is in an image (URL or local file) using a cheap vision model
Alias: classify
baz media describe [options] <image>| Option | Description |
|---|---|
--prompt <prompt> | What to ask about the image |
--label <label> | Context label to save the description under Default: image-analysis. |
--no-save | Do not save the description into project context |
-h, --help | display help for command |
baz media seedance1
Generate a Seedance 1 video directly in Bazaar
baz media seedance1 [options] <prompt>| Option | Description |
|---|---|
--model <model> | Seedance 1 model: seedance-1-lite or seedance-1-pro-fast Default: seedance-1-pro-fast. |
--aspect-ratio <ratio> | Aspect ratio: 16:9, 9:16, 1:1 Default: 16:9. |
--resolution <resolution> | Resolution: 480p, 720p, 1080p Default: 720p. |
--duration <seconds> | Duration in seconds: 2-12 Default: 5. |
--image <path> | First-frame image for image-to-video |
--last-frame <path> | Last-frame image for frame interpolation |
-h, --help | display help for command |
What it does:
Generates a short Seedance 1 AI video directly through Bazaar media generation.
The prompt is sent verbatim; the autonomous video agent does not rewrite it.
The output is uploaded to Bazaar media and returned as a reusable URL/asset id.
Models:
seedance-1-lite Seedance 1 Lite on Replicate (lower cost)
seedance-1-pro-fast Seedance 1 Pro Fast on Replicate (default, higher quality)
Inputs:
prompt Required text prompt.
--model seedance-1-lite or seedance-1-pro-fast (default seedance-1-pro-fast).
--image <path> Optional first-frame image for image-to-video.
--last-frame <path> Optional ending frame for frame interpolation.
--aspect-ratio Output video shape: 16:9, 9:16, or 1:1.
--resolution Output resolution: 480p, 720p, or 1080p.
--duration Output duration in seconds: 2-12.
Pricing estimate:
Seedance 1 is billed per second of output by resolution:
480p $0.0360/second
720p $0.0720/second
1080p $0.1440/second
Estimated charge = price/second * duration. The CLI prints this estimate before generating.
Examples:
baz media seedance1 --resolution 720p --duration 5 "Slow dolly through a sunlit real estate living room"
baz media seedance1 --model seedance-1-lite --resolution 480p --duration 4 "Fast social teaser for a property listing"
baz media seedance1 --aspect-ratio 9:16 --image ./exterior.jpg "Subtle cinematic push-in at golden hour"
Live pricing:
baz balance --pricingbaz media seedance2
Generate a Seedance 2.0 video directly in Bazaar
baz media seedance2 [options] <prompt>| Option | Description |
|---|---|
--model <model> | Seedance model ID |
--aspect-ratio <ratio> | Aspect ratio: 16:9, 9:16, 1:1 Default: 16:9. |
--resolution <resolution> | Resolution: 480p, 720p, 1080p Default: 720p. |
--duration <seconds> | Duration in seconds: 2-12 Default: 5. |
--image <path> | First-frame image for image-to-video |
--last-frame <path> | Last-frame image for frame interpolation |
--video <path> | Repeatable source video for video-to-video (max 3) |
--reference-image <path> | Repeatable identity/wardrobe reference image (max 8) |
-h, --help | display help for command |
What it does:
Generates a short Seedance 2.0 AI video directly through Bazaar media generation.
The prompt is sent verbatim; the autonomous video agent does not rewrite it.
The output is uploaded to Bazaar media and returned as a reusable URL/asset id.
Models:
doubao-seedance-2-0-260128 Seedance 2.0 on Volcengine Ark
doubao-seedance-2-0-fast-260128 Seedance 2.0 Fast on Volcengine Ark
dreamina-seedance-2-0-260128 Seedance 2.0 on BytePlus ModelArk
dreamina-seedance-2-0-fast-260128 Seedance 2.0 Fast on BytePlus ModelArk
If --model is omitted, Bazaar uses the server-configured default model.
Inputs:
prompt Required text prompt.
--image <path> Optional first-frame image for image-to-video.
--last-frame <path> Optional ending frame for interpolation when supported.
--video <path> Repeatable source video for video-to-video (max 3).
--reference-image <path> Repeatable identity/wardrobe image refs (max 8; not locked as first frame).
--aspect-ratio Output video shape: 16:9, 9:16, or 1:1.
--resolution Output resolution: 480p, 720p, or 1080p.
--duration Output duration in seconds: 2-12.
Pricing estimate:
Seedance 2 is billed from actual Ark token usage returned by the completed task.
Bazaar price uses a 50% gross margin over the provider token cost.
Standard, no video input: 480p/720p $0.0140/1K tokens, 1080p $0.0154/1K tokens
Standard, video input: 480p/720p $0.0086/1K tokens, 1080p $0.0094/1K tokens
Fast, no video input: 480p/720p $0.0112/1K tokens
Fast, video input: 480p/720p $0.0066/1K tokens
Seedance 2.0 Fast does not support 1080p output; use standard Seedance 2.0 for 1080p.
Reference frames / video-to-video:
--image uploads a first-frame image for image-to-video.
--last-frame uploads an ending frame for interpolation when supported by the model.
--video uploads a source clip whose motion/composition should transfer (IG reel recreate path).
--reference-image uploads character/outfit refs used as Ark reference_image (not first frame).
Passing --video switches billing to the cheaper Ark video-input token rate.
Examples:
baz media seedance2 --resolution 720p --duration 5 "Slow dolly through a sunlit real estate living room"
baz media seedance2 --aspect-ratio 9:16 --duration 6 --image ./exterior.jpg "Subtle cinematic push-in at golden hour"
baz media seedance2 --aspect-ratio 9:16 --video ./source-reel.mp4 --reference-image ./face-sheet.jpg --reference-image ./outfit.jpg "Recreate the motion from the source video with this woman and outfit"
baz media seedance2 --model dreamina-seedance-2-0-260128 --resolution 720p "Polished product teaser"
baz media seedance2 --model doubao-seedance-2-0-fast-260128 --resolution 480p "Fast social teaser for a property listing"
Live pricing:
baz balance --pricingbaz media grok-video
Generate a Grok Imagine Video 1.5 clip (image-to-video or reference-to-video)
baz media grok-video [options] <prompt>| Option | Description |
|---|---|
--image <path> | Approved still for image-to-video (locked first frame) |
--reference-image <path> | Repeatable reference image for reference-to-video (1-7) |
--aspect-ratio <ratio> | Aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3 |
--resolution <resolution> | i2v: 720p or 1080p (r2v is 720p only) Default: 720p. |
--duration <seconds> | Duration in seconds: 1-15 |
-h, --help | display help for command |
What it does:
Generates a Grok Imagine Video 1.5 clip through one of two mutually exclusive modes:
1) --image image-to-video — locks your approved still as frame zero (default for persona clips)
2) --reference-image reference-to-video — 1-7 refs guide a newly composed opening frame
The output is copied from xAI's temporary URL into Bazaar media and returned as a reusable asset.
Model and limits:
grok-imagine-video-1.5
--image Single local still for image-to-video (cannot combine with --reference-image).
--reference-image Repeatable; 1-7 local image files for reference-to-video.
--duration 1-15 seconds (default: 5 for i2v, 3 for r2v).
--aspect-ratio 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, or 2:3 (i2v inherits the still if omitted; r2v defaults to 9:16).
--resolution i2v: 720p (default) or 1080p. r2v: 720p only.
Important:
Do not mix --image and --reference-image; xAI rejects combined modes.
For reference-to-video, address ordered images as <IMAGE_1>, <IMAGE_2>, … (1-indexed).
Prefer image-to-video once a human has approved the still — that is the identity-safe path.
Pricing estimate (Bazaar):
image-to-video 720p: $0.32/sec
image-to-video 1080p: $0.56/sec
reference-to-video: $0.32/sec
Examples:
baz media grok-video --image ./approved-look.jpg --resolution 1080p --duration 5 "She settles into a ready stance; camera locked-off tripod, real-time speed"
baz media grok-video --reference-image ./face-sheet.jpg --reference-image ./outfit.jpg --aspect-ratio 9:16 --duration 3 "The woman from <IMAGE_1> wearing the kit from <IMAGE_2> walks toward camera"
Live pricing:
baz balance --pricing