Videos
Create Narrated Slideshow
Create an AI-powered real estate narrated slideshow video
POST
Creates a new video generation task from property images. The video is generated asynchronously - you’ll receive a task ID to poll for status or configure a webhook to be notified when complete.
Request Body
string[] | object[]
required
Images for the slideshow. Must contain 6 to 15 images, and all entries must be unique (no duplicates allowed).Each array entry can take one of two shapes. Pick a single shape for the whole array — you cannot mix strings and objects.1. Simple (URL strings): an array of image URLs. Every image renders as a static still. This is the default behavior.2. Rich (objects): an array of objects, where each image can opt into a subtle camera move (the “reanimate” option).Images should be:
- Publicly accessible HTTP(S) URLs (not a private/internal address)
- JPEG, PNG, or WebP format
- Minimum resolution: 720p recommended
string
Optional output orientation for the final video.
If omitted, VibePeak auto-detects the orientation from the first image and defaults to
landscape if detection is not possible.Choosing
portrait is useful when you want social-first vertical output from a mixed or landscape-heavy photo set.boolean
default:"true"
Whether the video has a voiceover (narration). Defaults to
true.Set to false to create a music-only slideshow: omit voice and script, and the video is produced with background music only (or silent if background_music is false). Without a voiceover, subtitle and avatar_id are not available and will be rejected.object
Voice configuration for the AI-generated narration. Required when
voiceover_enabled is true (the default); omit it together with script when voiceover_enabled is false.string
Narration script for text-to-speech. Required when
voiceover_enabled is true (the default); omit it together with voice when voiceover_enabled is false.The script length must be proportional to the number of images to ensure proper narration pacing (~3 seconds per image):Formula:
min = images × 40, max = images × 50string
default:"artistic"
Video orchestration mode that controls scene pacing and transitions.
string
URL to receive webhook notification when the task completes.Must be a valid HTTPS URL. See Webhooks for details.
string
Optional UUID of an avatar to include in the video.Must be a valid UUID v4 format (e.g.,
123e4567-e89b-12d3-a456-426614174000).Requires voiceover. A speaking avatar needs narration, so omit
avatar_id when voiceover_enabled is false (music-only or silent video) — the request is rejected otherwise.boolean
default:"false"
Enable AI-generated background music for the video.When
true, generates calm ambient music that matches the video duration. The music is automatically generated with a real estate style (soft piano, elegant, minimal) and mixed at 20% volume to complement the narration.Background music generation adds a few seconds to the processing time. If music generation fails, the video will still be created without background music.
object
Subtitle configuration for word-level animated overlays. Use
subtitle_style_preset for quick setup or styles for granular control. Providing both will result in a validation error.Requires voiceover. Subtitles are derived from the narration’s word timing, so omit
subtitle (or set it to false) when voiceover_enabled is false — the request is rejected otherwise.object
Configuration for visual elements and branding overlays. If not provided, elements are disabled by default.
Scene Duration Overrides
For fine-tuned control over video pacing, you can override the default scene durations.number
Minimum duration for each scene in seconds. Range: 1-30.
number
Maximum duration for each scene in seconds. Range: 1-30.
Artistic Mode Duration Overrides
When usingorchestration_mode: "artistic", you can separately control hero and secondary scene durations.
number
Minimum duration for hero (primary) scenes in seconds. Range: 1-30.
number
Maximum duration for hero (primary) scenes in seconds. Range: 1-30.
number
Minimum duration for secondary scenes in seconds. Range: 1-30.
number
Maximum duration for secondary scenes in seconds. Range: 1-30.
Test Mode
string
default:"success"
Sandbox-only scenario selector. Honored only for test-mode (
vpk_test_) keys and silently ignored for live keys, so it is safe to leave in shared request-building code.Test mode never spends credits or runs the real pipeline. See Test Mode for the full sandbox model.
Response
string
required
Unique identifier for the task. Use this to check status.
string
required
Initial task status. Always
queued for new tasks.integer
Position in the processing queue.
string
Estimated completion time (ISO 8601 format).
string
required
Task creation timestamp (ISO 8601 format).
boolean
required
true for live (vpk_live_) requests; false for test-mode (vpk_test_) requests. Use this to tell a real task from a sandbox one. See Test Mode.Example: images with camera motion
To apply subtle per-image camera moves, passimages as an array of objects with reanimate: true and a movement value (or null to let VibePeak pick one). Remember you cannot mix strings and objects in the same array.
Error Codes
See Error Handling for more details.
Next Steps
After creating a task:- Poll for status: Use Get Task to check progress
- Wait for webhook: If configured, receive notification when complete
- Download video: Access the video URL from the completed task result

