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.
See Error Handling for more details.
Request Body
Array of image URLs for the slideshow. Must contain 6 to 15 images.Images should be:
- Publicly accessible URLs
- JPEG, PNG, or WebP format
- Minimum resolution: 720p recommended
- All URLs must be unique (no duplicates allowed)
Optional output orientation for the final video.
If omitted, VibePeak auto-detects the orientation from the first image and defaults to
| Value | Description |
|---|---|
landscape | Generate a horizontal 16:9 video |
portrait | Generate a vertical 9:16 video |
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.Voice configuration for the AI-generated narration.
Narration script for text-to-speech.The script length must be proportional to the number of images to ensure proper narration pacing (~3 seconds per image):
Formula:
| Images | Min Characters | Max Characters |
|---|---|---|
| 6 | 240 | 300 |
| 10 | 400 | 500 |
| 15 | 600 | 750 |
min = images × 40, max = images × 50Video orchestration mode that controls scene pacing and transitions.
| Value | Description |
|---|---|
standard | Standard mode with scenes of 3-7 seconds |
artistic | Cinematic mode with 2-3 second scenes and visual weight hierarchy (default) |
sequential | Images appear in order without AI reordering. Scene duration is auto-calculated. |
URL to receive webhook notification when the task completes.Must be a valid HTTPS URL. See Webhooks for details.
Optional UUID of an avatar to include in the video.Must be a valid UUID v4 format (e.g.,
123e4567-e89b-12d3-a456-426614174000).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.
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.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.Minimum duration for each scene in seconds. Range: 1-30.
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.
Minimum duration for hero (primary) scenes in seconds. Range: 1-30.
Maximum duration for hero (primary) scenes in seconds. Range: 1-30.
Minimum duration for secondary scenes in seconds. Range: 1-30.
Maximum duration for secondary scenes in seconds. Range: 1-30.
Test Mode
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.| Value | Outcome |
|---|---|
success | Synthetic task completes with a watermarked sample video |
fail | Synthetic task fails with a sanitized, public-safe error |
slow | Like success, but completes after a noticeably longer delay |
Test mode never spends credits or runs the real pipeline. See Test Mode for the full sandbox model.
Response
Unique identifier for the task. Use this to check status.
Initial task status. Always
queued for new tasks.Position in the processing queue.
Estimated completion time (ISO 8601 format).
Task creation timestamp (ISO 8601 format).
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.Error Codes
| Code | Status | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid request parameters |
INVALID_IMAGE_URL | 400 | One or more image URLs are inaccessible or invalid |
SCRIPT_TOO_SHORT | 400 | Script is too short for the number of images (min 40 chars/image) |
SCRIPT_TOO_LONG | 400 | Script is too long for the number of images (max 50 chars/image) |
SCRIPT_INVALID_CHARACTERS | 400 | Script contains numbers or special symbols not supported by TTS |
INVALID_API_KEY | 401 | Invalid or missing API key |
PLAN_REQUIRED | 403 | Plan doesn’t include API access |
CONCURRENCY_LIMIT_EXCEEDED | 429 | Concurrent task limit reached |
SERVICE_UNAVAILABLE | 503 | Video generation service temporarily unavailable |
SERVICE_TIMEOUT | 504 | Service request timed out |
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

