Features

Everything You Need to Generate Video

9 element types, 15+ transitions, template variables, and credit-based billing. All controlled through a single JSON document.

9 Element Types

Compose rich video scenes with text, media, voice, code, and components

Text

Rich text overlays with 11 built-in styles, Google Fonts support, color, shadow, background, and character-level animation. Position anywhere on the canvas with pixel precision.

{
  "type": "text",
  "text": "Breaking News",
  "style": "005",
  "font": "Roboto",
  "font_size": 48,
  "color": "#ffffff",
  "position": "bottom-center"
}

Image

Static images from URL or direct upload. Supports PNG, JPEG, WebP, and GIF. Control position, dimensions, opacity, and timing with start/duration.

{
  "type": "image",
  "src": "https://example.com/logo.png",
  "position": "top-right",
  "width": 200,
  "height": 200,
  "start": 0,
  "duration": 5
}

Video

Embed video clips as overlays or scene backgrounds. Trim with start/duration, loop for continuous playback, and layer with other elements via z_index.

{
  "type": "video",
  "src": "https://example.com/clip.mp4",
  "position": "center",
  "duration": 10,
  "volume": 0.5
}

Audio

Add background music, sound effects, or voiceover tracks. Control volume per element. Multiple audio tracks are automatically mixed together.

{
  "type": "audio",
  "src": "https://example.com/bgmusic.mp3",
  "start": 0,
  "duration": 30,
  "volume": 0.3
}

Voice (TTS)

Text-to-speech powered by Coqui (free, 50+ voices) and ElevenLabs (premium). 20+ languages. Voice automatically sets scene duration based on speech length.

{
  "type": "voice",
  "text": "Welcome to PhantomFlow.",
  "provider": "coqui",
  "voice": "p267",
  "speed": 1.0
}

HTML

Render arbitrary HTML/CSS as a pixel-perfect video overlay. Powered by Puppeteer (headless Chromium). Use for custom charts, infographics, or styled components.

{
  "type": "html",
  "html": "<div style='padding:20px; background:rgba(0,0,0,0.7); color:white; border-radius:8px;'><h2>Q4 Revenue</h2><p>$2.4M (+18%)</p></div>",
  "width": 400,
  "height": 200,
  "position": "bottom-left"
}

Shape

Rectangles, circles, and lines with customizable fill, stroke, opacity, and dimensions. Use as backgrounds, dividers, or decorative elements.

{
  "type": "shape",
  "shape": "rectangle",
  "width": 1920,
  "height": 100,
  "color": "#000000",
  "opacity": 0.6,
  "position": "bottom-center"
}

Component

Pre-built component packs for common video elements: lower thirds, title cards, countdown timers, progress bars, and more. Customizable via properties.

{
  "type": "component",
  "component": "lower-third-001",
  "settings": {
    "title": "John Smith",
    "subtitle": "CEO, Acme Corp",
    "color": "#06b6d4"
  }
}

Subtitles

Auto-generate subtitles from audio using Whisper. Import existing SRT files. Customize font, size, color, and position.

{
  "type": "subtitles",
  "source": "auto",
  "font_size": 32,
  "color": "#ffffff",
  "background_color": "#000000",
  "position": "bottom-center"
}

20+ Transitions

Smooth scene-to-scene transitions powered by FFmpeg xfade

fadefadeblackfadewhitewipeleftwiperightwipeupwipedownslideleftsliderightslideupslidedownsmoothleftsmoothrightsmoothupsmoothdowncirclecroprectcropdissolvepixelizeradial
{
  "scenes": [
    { "elements": [...], "duration": 5 },
    {
      "elements": [...],
      "duration": 5,
      "transition": {
        "style": "fade",
        "duration": 1
      }
    }
  ]
}

Template System

Save scripts as reusable templates with variable placeholders

Template (with variables)

{
  "elements": [
    {
      "type": "text",
      "text": "{{headline}}",
      "font_size": 64,
      "color": "{{brand_color}}"
    },
    {
      "type": "image",
      "src": "{{logo_url}}"
    }
  ]
}

Render with variables

curl -X POST https://api.phantomflow.dev/api/render/template \
  -H "Content-Type: application/json" \
  -H "x-api-key: ve_live_..." \
  -d '{
    "template_id": "tpl_abc123",
    "variables": {
      "headline": "Summer Sale - 50% Off",
      "brand_color": "#ff6b35",
      "logo_url": "https://example.com/logo.png"
    }
  }'

Credit-Based Billing

1 credit = 1 second of rendered video. Pay only for what you use.

1 credit

= 1 second of video

Free tier

Start with free credits, no card required

ve_test_

Test keys use zero credits

Quality Settings

Choose the right quality for your use case

QualityCRF (Scene / Stitch)Best ForCredits
Low28 / 26Drafts, previews, testingLowest credit usage
Medium23 / 21Social media, web contentStandard credit usage
High23 / 18Professional, broadcastHighest credit usage

Export Destinations

Deliver your rendered video wherever it needs to go

S3 / Cloud Storage

Direct upload to any S3-compatible bucket

Webhook

POST notification with download URL on completion

FTP / SFTP

Push to your FTP server automatically

Email

Send rendered video to one or more email addresses

YouTube

Auto-upload to YouTube with title and description

Direct URL

Temporary download URL returned with the job

Start building with PhantomFlow

Get your free API key and explore the features in our example library.