API Reference
Demo Forge REST API for programmatic video generation, storyboarding, voice cloning, and post-processing.
https://video-generator.transilienceapi.comEndpoints
Typical Workflow
POST /create with files and options — returns job_idGET /status/{job_id} — poll every 3s until state: "done"GET /download/{job_id}/video — stream the MP4/bookends before /create for branded intro/outro frames. Use /storyboard to generate visuals from a URL first.Health
/healthHealth check
Response
{ "status": "ok", "service": "video-generator" }Video Generation
/createStart a video generation job from uploaded files. Returns a job ID for polling.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| files | File[] | required | Content files (images, videos, PDFs, PPTX) |
| voice | string | optional | TTS voice name (default: "Smritika") |
| style | string | optional | "marketing" | "feature-explainer" | "tutorial-explainer" |
| product | string | optional | Product/service name for scripts |
| tone | string | optional | Script tone (default: "professional and engaging") |
| resolution | string | optional | "720p" | "1080p" | "4k" (default: "1080p") |
| script_duration | int | optional | Target narration duration in seconds (default: 60) |
| storyline | string | optional | Narrative storyline to guide scripts and animation |
| generate_music | bool | optional | "true" to generate AI background music |
| music_prompt | string | optional | Music style prompt (e.g. "upbeat corporate") |
| generate_intro | bool | optional | "true" to add branded intro frame |
| generate_outro | bool | optional | "true" to add branded outro frame |
| bookend_job_id | string | optional | Job ID from /bookends for pre-generated frames |
| intro_option | int | optional | Selected intro option index (0-2) |
| outro_option | int | optional | Selected outro option index (0-2) |
| intro_veo_prompt | string | optional | Veo animation prompt for intro |
| outro_veo_prompt | string | optional | Veo animation prompt for outro |
Response
{ "job_id": "a1b2c3d4e5f6" }Example
curl -X POST https://video-generator.transilienceapi.com/create \ -F "files=@screenshot1.png" \ -F "files=@screenshot2.png" \ -F "product=My App" \ -F "style=marketing" \ -F "storyline=AI transforms how teams work" \ -F "generate_music=true"
/create-from-storyboardCreate video using images from a completed storyboard job. Same parameters as /create, plus storyboard_job_id.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| storyboard_job_id | string | required | Job ID from /storyboard |
| voice | string | optional | Same as /create |
| style | string | optional | Same as /create |
| product | string | optional | Same as /create |
| tone | string | optional | Same as /create |
| resolution | string | optional | Same as /create |
| storyline | string | optional | Same as /create |
| generate_music | bool | optional | Same as /create |
Response
{ "job_id": "a1b2c3d4e5f6" }/status/{job_id}Poll the status of a video generation job. Returns logs, state, and result when done.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Job ID from /create |
Response
{
"state": "done",
"logs": "Step 1: Scanning files...\nStep 2: ...",
"error": "",
"result": {
"has_video": true,
"has_audio": true,
"has_music": true,
"cost": {
"num_scenes": 5,
"gemini_vision": 0.03,
"veo_animation": 0.25,
"tts": 0.02,
"music": 0.03,
"total": 0.33
}
}
}Example
curl https://video-generator.transilienceapi.com/status/a1b2c3d4e5f6
/download/{job_id}/{file_type}Stream download a completed file. Returns binary data with appropriate Content-Type.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Job ID from /create |
| file_type | string | required | "video" (MP4) | "audio" (MP3 with voice+music) | "music" (MP3 music only) |
Response
Binary stream (video/mp4 or audio/mpeg)
Example
curl -o output.mp4 https://video-generator.transilienceapi.com/download/a1b2c3d4e5f6/video curl -o output.mp3 https://video-generator.transilienceapi.com/download/a1b2c3d4e5f6/audio
Storyboard
/storyboardGenerate a storyboard from a website URL. Crawls the site, plans scenes with Gemini Vision, generates images with Imagen 4.0.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | required | Website URL to capture |
| storyline | string | optional | Narrative storyline |
| product | string | optional | Product name |
| scenes | int | optional | Number of scenes (default: 6) |
| tone | string | optional | Script tone |
| style | string | optional | Video style |
| aspect_ratio | string | optional | Aspect ratio (default: "16:9") |
| skip_screenshots | bool | optional | Skip website screenshots |
| skip_imagen | bool | optional | Skip Imagen generation |
Response
{ "job_id": "sb-a1b2c3d4e5" }Example
curl -X POST https://video-generator.transilienceapi.com/storyboard \ -F "url=https://example.com" \ -F "storyline=AI transforms compliance" \ -F "product=My App" \ -F "scenes=9"
/storyboard-status/{job_id}Poll storyboard generation status. When done, result includes scene data and image filenames.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Storyboard job ID |
Response
{
"state": "done",
"logs": "...",
"error": "",
"result": {
"scenes": [...],
"images": ["scene_001.png", ...],
"sequence_files": ["001_hook_screenshot.png", ...]
}
}/storyboard-image/{job_id}/{filename}Serve a generated storyboard image.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Storyboard job ID |
| filename | string | required | Image filename from storyboard result |
Response
image/png binary
Bookend Frames
/bookendsGenerate 3 intro and/or 3 outro frame options using Gemini + Imagen 4.0. Select one of each before creating the video.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| product | string | optional | Product name |
| storyline | string | optional | Video storyline |
| tone | string | optional | Script tone |
| style | string | optional | Video style |
| generate_intro | bool | optional | "true" to generate intro options |
| generate_outro | bool | optional | "true" to generate outro options |
| intro_prompt | string | optional | Custom prompt for intro frame |
| outro_prompt | string | optional | Custom prompt for outro frame |
| intro_ref | File | optional | Reference image for intro |
| outro_ref | File | optional | Reference image for outro |
Response
{ "job_id": "bk-a1b2c3d4e5" }Example
curl -X POST https://video-generator.transilienceapi.com/bookends \ -F "product=My App" \ -F "tone=energetic" \ -F "generate_intro=true" \ -F "generate_outro=true"
/bookend-status/{job_id}Poll bookend generation status. When done, result includes options with image filenames and Veo prompts.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Bookend job ID |
Response
{
"state": "done",
"error": "",
"result": {
"intro_options": [
{
"option_number": 1,
"title_text": "My App",
"subtitle_text": "Transform your workflow",
"image_filename": "intro_option_1.png",
"veo_motion_prompt": "Elegant branded intro..."
}
],
"outro_options": [...]
}
}/bookend-image/{job_id}/{filename}Serve a generated bookend image.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| job_id | string | required | Bookend job ID |
| filename | string | required | Image filename from bookend result |
Response
image/png binary
Voices
/voicesList all available TTS voices (cloned and premade).
Response
{
"voices": [
{ "name": "Smritika", "category": "cloned", "voice_id": "abc123" },
{ "name": "Rachel", "category": "premade", "voice_id": "def456" }
]
}Example
curl https://video-generator.transilienceapi.com/voices
/voice-cloneClone a voice from audio samples. The cloned voice becomes available for TTS.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| audio_files | File[] | required | Audio samples for cloning (MP3, WAV, etc.) |
| name | string | required | Name for the cloned voice |
| description | string | optional | Voice description |
| accent | string | optional | Accent (e.g. "British", "Indian") |
| gender | string | optional | "male" | "female" |
| age | string | optional | "young" | "middle_aged" | "old" |
Response
{ "name": "Aman", "voice_id": "abc123" }Example
curl -X POST https://video-generator.transilienceapi.com/voice-clone \ -F "audio_files=@sample.mp3" \ -F "name=Aman" \ -F "accent=Indian" \ -F "gender=male"
Post-Processing
/postAdjust video speed, voice volume, and music volume on a generated video.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| video | File | required | Video file (MP4) |
| video_speed | float | optional | Playback speed multiplier (default: 1.0) |
| voice_volume | float | optional | Voice volume (default: 5.0) |
| music_volume | float | optional | Music volume (default: 0.03) |
| voice_audio | File | optional | Voice audio file (MP3) |
| music_audio | File | optional | Music audio file (MP3) |
Response
{ "video": "<base64 encoded MP4>" }/avatarOverlay an avatar (image or video) on top of a video.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| video | File | required | Video file (MP4) |
| avatar | File | required | Avatar image (PNG/JPG) or video (MP4) |
| position | string | optional | "top-left" | "top-right" | "bottom-left" | "bottom-right" |
| scale | float | optional | Avatar size as fraction of video width (default: 0.15) |
| opacity | float | optional | Avatar opacity 0.0-1.0 (default: 1.0, images only) |
Response
{ "video": "<base64 encoded MP4>" }Example
curl -X POST https://video-generator.transilienceapi.com/avatar \ -F "video=@video.mp4" \ -F "avatar=@avatar.png" \ -F "position=bottom-right" \ -F "scale=0.15"
Samples
/sample/{style}Stream a sample video for a given style.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| style | string | required | "marketing" | "feature-explainer" | "tutorial-explainer" |
Response
video/mp4 stream
/sample/{style}Check if a sample video exists without downloading.
Parameters (path)
| Name | Type | Required | Description |
|---|---|---|---|
| style | string | required | Style name |
Response
200 with Content-Length header, or 404
/upload-sampleUpload a sample video for a style.
Parameters (multipart/form-data)
| Name | Type | Required | Description |
|---|---|---|---|
| style | string | required | "marketing" | "feature-explainer" | "tutorial-explainer" |
| video | File | required | Sample video (MP4) |
Response
{ "success": true, "style": "marketing" }Notes
- -All POST endpoints use
multipart/form-data(not JSON) - -Video generation is async — POST returns immediately with a job_id, poll /status for progress
- -Jobs timeout after 30 minutes. Typical generation takes 8-16 minutes for 10 scenes.
- -Generated files are stored temporarily and may be cleaned up after 24 hours
- -CORS is enabled for all origins. No authentication required (Clerk auth is frontend-only).
- -Cost per video: ~$0.25-0.65 (Gemini Vision + Veo 3.1 + TTS + Music)