Set video_source in the [app] section of config.toml to choose where MoneyPrinterTurbo searches for b-roll footage.
video_source = "pexels" # "pexels", "pixabay", or "local"
Pexels
Pixabay
Local materials
Pexels
Pexels offers a free API with a large library of high-quality, royalty-free stock videos.Register for a free API key at pexels.com/api.video_source = "pexels"
# Single key
pexels_api_keys = ["your-pexels-api-key"]
# Multiple keys to distribute requests and avoid rate limits
pexels_api_keys = ["key-one", "key-two", "key-three"]
Keys must be wrapped in double quotes and separated by commas. The format is a TOML array of strings.
MoneyPrinterTurbo rotates through the list of keys automatically. Add more keys from additional Pexels accounts to increase your effective rate limit.Proxy support
If you need to route Pexels API requests through a proxy, configure it in the [proxy] section:[proxy]
http = "http://user:pass@proxy-host:3128"
https = "http://user:pass@proxy-host:1080"
Pixabay
Pixabay provides another large collection of free stock videos and images via its API.Register for a free API key at pixabay.com/api/docs.video_source = "pixabay"
# Single key
pixabay_api_keys = ["your-pixabay-api-key"]
# Multiple keys to distribute requests and avoid rate limits
pixabay_api_keys = ["key-one", "key-two", "key-three"]
Keys must be wrapped in double quotes and separated by commas. The format is a TOML array of strings.
Like Pexels, MoneyPrinterTurbo rotates through multiple Pixabay keys automatically.Proxy support
Pixabay requests also respect the [proxy] section:[proxy]
http = "http://user:pass@proxy-host:3128"
https = "http://user:pass@proxy-host:1080"
Local materials
Use your own video or image files instead of fetching from an online library. No API key is required.video_source = "local"
material_directory = "/path/to/your/videos"
| Type | Extensions |
|---|
| Video | mp4, mov, avi, flv, mkv |
| Image | jpg, jpeg, png |
MoneyPrinterTurbo selects clips from material_directory when building the final video. Images are treated as static frames.Uploading materials via the API
You can add files to the material library without accessing the server filesystem directly by uploading through the REST API:POST /api/v1/video_materials
Content-Type: multipart/form-data
curl -X POST http://localhost:8080/api/v1/video_materials \
-F "file=@/local/path/clip.mp4"
Uploaded files are stored in material_directory and become available for use in subsequent video generation jobs.
material_directory options
This setting controls where downloaded (or uploaded) clips are cached, regardless of which video source you choose.
| Value | Behaviour |
|---|
"" (empty) | Default. Clips stored in ./storage/cache_videos inside the project root. |
/absolute/path | Clips stored in the specified directory. Useful when you want to store large amounts of footage on a separate disk. |
"task" | Each generation task gets its own isolated folder. Clips are never shared between tasks. Increases disk usage. |
# Default shared cache
material_directory = ""
# Custom directory on a separate volume
material_directory = "/mnt/media/moneyprinter-clips"
# Per-task isolation (no sharing)
material_directory = "task"
Using material_directory = "" (the default) is recommended for most setups. Already-downloaded clips are reused across tasks, which reduces API calls and speeds up generation.
Setting material_directory = "task" disables clip sharing. Every task re-downloads the footage it needs, which can quickly consume disk space and exhaust API rate limits on busy systems.
Multiple API keys
Both Pexels and Pixabay enforce per-key rate limits. Providing multiple keys spreads the load:
pexels_api_keys = [
"key-from-account-1",
"key-from-account-2",
"key-from-account-3"
]
MoneyPrinterTurbo cycles through the list for each request. Each key must correspond to a valid registered account on the respective service.