Payload and output preview

Payload example

{
  "version": "v1",
  "output": {
    "width": 1080,
    "height": 1920,
    "fps": 30
  },
  "assets": [
    { "id": "top-video", "type": "video", "url": "https://pub-2ad5592bc4ca44abb609acfc0b7c5ceb.r2.dev/reel-forge-website-assets/porsche%20split%201%20vid.mp4" },
    { "id": "bottom-video", "type": "video", "url": "https://pub-2ad5592bc4ca44abb609acfc0b7c5ceb.r2.dev/reel-forge-website-assets/porsche%20split%202%20vid.mp4" }
  ],
  "composition": {
    "timeline": [
      {
        "id": "top-layer",
        "type": "video",
        "asset_id": "top-video",
        "time": { "start_seconds": 0, "duration_seconds": 6 },
        "layout": { "x": "0%", "y": "0%", "width": "100%", "height": "50%", "fit": "cover" }
      },
      {
        "id": "bottom-layer",
        "type": "video",
        "asset_id": "bottom-video",
        "time": { "start_seconds": 0, "duration_seconds": 6 },
        "layout": { "x": "0%", "y": "50%", "width": "100%", "height": "50%", "fit": "cover" },
        "media_settings": { "volume": 0 }
      }
    ]
  }
}

Output preview

Top/bottom split-screen with two synchronized Porsche clips. Audio from top layer only.

Split Screen

Split-screen is user-authored layout math using two visual layers with explicit positions/sizes. Place both layers in the same time window so they play simultaneously.

Input assets

This example uses two Porsche clips in a top/bottom split:

Why this works

When building a split-screen layout:

  1. Shared timing: Both layers use the same start_seconds and duration_seconds, so they play in sync.
  2. Layout math: Top half uses y: "0%", height: "50%"; bottom half uses y: "50%", height: "50%". Each layer fills its region with fit: "cover".
  3. Audio control: Use media_settings.volume: 0 on the bottom layer so only the top video's audio is heard. Omit media_settings on the top layer to keep its default volume.