Default model: When you omit
llm=/--model/model=, every surface — SDK VideoAgent, capability video_generate, MCP praisonai.videos.generate, and CLI praisonai videos — falls back to openai/sora-2 (the canonical default from VideoAgent.DEFAULT_MODEL).Generate Video
- Basic
- Advanced
Providers
OpenAI Sora
Sora-2
Gemini
Omni Flash (default), Veo 3.1
RunwayML
Gen-4
Azure
Sora
OpenRouter
Veo, Kling, Hailuo, Seedance, Wan…
Supported models
Only models with a LiteLLM video-generation backend work inVideoAgent.
Pick a model that is in LiteLLM’s chat/cost catalogue but has no video route (for example xai/grok-imagine-video-*) and VideoAgent raises a clear ValueError naming models that do work.
Known-good defaults:
Error you’ll see on an unsupported model
llm= to a supported model and re-run:
Desktop app
Prefer a native app? The Desktop Video tab generates an MP4 from a prompt with a built-in model picker (MiniMax, Sora 2, Veo 3.1) — no code required.Desktop → Video
Generate video from the Desktop app
Troubleshooting
ValueError: '...' has no LiteLLM video-generation backend
ValueError: '...' has no LiteLLM video-generation backend
The model you passed to If LiteLLM later adds a video backend for your preferred provider,
llm= is in LiteLLM’s model/cost catalogue but has no video-generation provider config. This is common for xAI Grok Imagine ids (xai/grok-imagine-video-*), which are chat-priced only.Fix: switch to one of the supported models from the error message:VideoAgent picks it up automatically — nothing is hardcoded to a denylist.AuthenticationError
AuthenticationError
The model’s video backend does exist, but your API key is missing or wrong. This error propagates unchanged —
VideoAgent never masks it. Set the provider’s env var (e.g. OPENAI_API_KEY, GEMINI_API_KEY, RUNWAYML_API_SECRET) and re-run.video size is not supported
video size is not supported
The working backend rejected a specific request parameter (size, duration, prompt format). This is a bad request to a real video backend — not a missing backend — so it propagates unchanged. Fix the request, not the model: for example, drop
size= to use the provider default.
