API Reference

Demo Forge REST API for programmatic video generation, storyboarding, voice cloning, and post-processing.

Base URLhttps://video-generator.transilienceapi.com

Typical Workflow

1.POST /create with files and options — returns job_id
2.GET /status/{job_id} — poll every 3s until state: "done"
3.GET /download/{job_id}/video — stream the MP4
Optional: Use /bookends before /create for branded intro/outro frames. Use /storyboard to generate visuals from a URL first.

Health

GET/health

Health check

Response

{ "status": "ok", "service": "video-generator" }

Video Generation

POST/create

Start a video generation job from uploaded files. Returns a job ID for polling.

Parameters (multipart/form-data)

NameTypeRequiredDescription
filesFile[]requiredContent files (images, videos, PDFs, PPTX)
voicestringoptionalTTS voice name (default: "Smritika")
stylestringoptional"marketing" | "feature-explainer" | "tutorial-explainer"
productstringoptionalProduct/service name for scripts
tonestringoptionalScript tone (default: "professional and engaging")
resolutionstringoptional"720p" | "1080p" | "4k" (default: "1080p")
script_durationintoptionalTarget narration duration in seconds (default: 60)
storylinestringoptionalNarrative storyline to guide scripts and animation
generate_musicbooloptional"true" to generate AI background music
music_promptstringoptionalMusic style prompt (e.g. "upbeat corporate")
generate_introbooloptional"true" to add branded intro frame
generate_outrobooloptional"true" to add branded outro frame
bookend_job_idstringoptionalJob ID from /bookends for pre-generated frames
intro_optionintoptionalSelected intro option index (0-2)
outro_optionintoptionalSelected outro option index (0-2)
intro_veo_promptstringoptionalVeo animation prompt for intro
outro_veo_promptstringoptionalVeo 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"
POST/create-from-storyboard

Create video using images from a completed storyboard job. Same parameters as /create, plus storyboard_job_id.

Parameters (multipart/form-data)

NameTypeRequiredDescription
storyboard_job_idstringrequiredJob ID from /storyboard
voicestringoptionalSame as /create
stylestringoptionalSame as /create
productstringoptionalSame as /create
tonestringoptionalSame as /create
resolutionstringoptionalSame as /create
storylinestringoptionalSame as /create
generate_musicbooloptionalSame as /create

Response

{ "job_id": "a1b2c3d4e5f6" }
GET/status/{job_id}

Poll the status of a video generation job. Returns logs, state, and result when done.

Parameters (path)

NameTypeRequiredDescription
job_idstringrequiredJob 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
GET/download/{job_id}/{file_type}

Stream download a completed file. Returns binary data with appropriate Content-Type.

Parameters (path)

NameTypeRequiredDescription
job_idstringrequiredJob ID from /create
file_typestringrequired"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

POST/storyboard

Generate a storyboard from a website URL. Crawls the site, plans scenes with Gemini Vision, generates images with Imagen 4.0.

Parameters (multipart/form-data)

NameTypeRequiredDescription
urlstringrequiredWebsite URL to capture
storylinestringoptionalNarrative storyline
productstringoptionalProduct name
scenesintoptionalNumber of scenes (default: 6)
tonestringoptionalScript tone
stylestringoptionalVideo style
aspect_ratiostringoptionalAspect ratio (default: "16:9")
skip_screenshotsbooloptionalSkip website screenshots
skip_imagenbooloptionalSkip 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"
GET/storyboard-status/{job_id}

Poll storyboard generation status. When done, result includes scene data and image filenames.

Parameters (path)

NameTypeRequiredDescription
job_idstringrequiredStoryboard job ID

Response

{
  "state": "done",
  "logs": "...",
  "error": "",
  "result": {
    "scenes": [...],
    "images": ["scene_001.png", ...],
    "sequence_files": ["001_hook_screenshot.png", ...]
  }
}
GET/storyboard-image/{job_id}/{filename}

Serve a generated storyboard image.

Parameters (path)

NameTypeRequiredDescription
job_idstringrequiredStoryboard job ID
filenamestringrequiredImage filename from storyboard result

Response

image/png binary

Bookend Frames

POST/bookends

Generate 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)

NameTypeRequiredDescription
productstringoptionalProduct name
storylinestringoptionalVideo storyline
tonestringoptionalScript tone
stylestringoptionalVideo style
generate_introbooloptional"true" to generate intro options
generate_outrobooloptional"true" to generate outro options
intro_promptstringoptionalCustom prompt for intro frame
outro_promptstringoptionalCustom prompt for outro frame
intro_refFileoptionalReference image for intro
outro_refFileoptionalReference 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"
GET/bookend-status/{job_id}

Poll bookend generation status. When done, result includes options with image filenames and Veo prompts.

Parameters (path)

NameTypeRequiredDescription
job_idstringrequiredBookend 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": [...]
  }
}
GET/bookend-image/{job_id}/{filename}

Serve a generated bookend image.

Parameters (path)

NameTypeRequiredDescription
job_idstringrequiredBookend job ID
filenamestringrequiredImage filename from bookend result

Response

image/png binary

Voices

GET/voices

List 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
POST/voice-clone

Clone a voice from audio samples. The cloned voice becomes available for TTS.

Parameters (multipart/form-data)

NameTypeRequiredDescription
audio_filesFile[]requiredAudio samples for cloning (MP3, WAV, etc.)
namestringrequiredName for the cloned voice
descriptionstringoptionalVoice description
accentstringoptionalAccent (e.g. "British", "Indian")
genderstringoptional"male" | "female"
agestringoptional"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

POST/post

Adjust video speed, voice volume, and music volume on a generated video.

Parameters (multipart/form-data)

NameTypeRequiredDescription
videoFilerequiredVideo file (MP4)
video_speedfloatoptionalPlayback speed multiplier (default: 1.0)
voice_volumefloatoptionalVoice volume (default: 5.0)
music_volumefloatoptionalMusic volume (default: 0.03)
voice_audioFileoptionalVoice audio file (MP3)
music_audioFileoptionalMusic audio file (MP3)

Response

{ "video": "<base64 encoded MP4>" }
POST/avatar

Overlay an avatar (image or video) on top of a video.

Parameters (multipart/form-data)

NameTypeRequiredDescription
videoFilerequiredVideo file (MP4)
avatarFilerequiredAvatar image (PNG/JPG) or video (MP4)
positionstringoptional"top-left" | "top-right" | "bottom-left" | "bottom-right"
scalefloatoptionalAvatar size as fraction of video width (default: 0.15)
opacityfloatoptionalAvatar 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

GET/sample/{style}

Stream a sample video for a given style.

Parameters (path)

NameTypeRequiredDescription
stylestringrequired"marketing" | "feature-explainer" | "tutorial-explainer"

Response

video/mp4 stream
HEAD/sample/{style}

Check if a sample video exists without downloading.

Parameters (path)

NameTypeRequiredDescription
stylestringrequiredStyle name

Response

200 with Content-Length header, or 404
POST/upload-sample

Upload a sample video for a style.

Parameters (multipart/form-data)

NameTypeRequiredDescription
stylestringrequired"marketing" | "feature-explainer" | "tutorial-explainer"
videoFilerequiredSample 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)
Transilience | Demo Forge API