> ## Documentation Index
> Fetch the complete documentation index at: https://docs.framelane.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Video Examples

> Request bodies for video element features.

Each example is a complete `POST /v1/renders` body. Only fields that differ from their defaults are shown. See the [element field reference](/renders/elements) for every default.

<Warning>
  For **text** and **image** elements, `duration` is required — the API returns `422` if it is missing. **`video` and `audio` elements have no `duration` field** — use `out_point` to control how long the clip plays.
</Warning>

## Minimal video

The only required field on a video element is `source_url`. Everything else uses defaults (`x: "50%"`, `y: "50%"`, `width: "100%"`, `height: "100%"`, `opacity: 100`, `volume: 100`).

```json theme={null}
{
  "width": 1920,
  "height": 1080,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4"
    }
  ]
}
```

## Trim source clip

Play only seconds 2–8 of the source file.

```json theme={null}
{
  "width": 1920,
  "height": 1080,
  "duration": 6,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "in_point": 2,
      "out_point": 8
    }
  ]
}
```

## Playback speed

Play the clip at 2× speed.

```json theme={null}
{
  "width": 1920,
  "height": 1080,
  "duration": 6,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "speed": 2.0
    }
  ]
}
```

## Audio fade in and out

Fade audio in over 1 second and out over 1 second. `fade_in_duration` / `fade_out_duration` affect the embedded audio track only.

```json theme={null}
{
  "width": 1920,
  "height": 1080,
  "duration": 6,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "fade_in_duration": 1,
      "fade_out_duration": 1
    }
  ]
}
```

## Position and size

Place a 50%-wide clip in the bottom-right corner.

```json theme={null}
{
  "width": 1920,
  "height": 1080,
  "duration": 6,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "x": "75%",
      "y": "75%",
      "width": "50%",
      "height": "50%"
    }
  ]
}
```

## Repeat a short clip

Repeat a 6-second clip twice to fill a 12-second render. Add one element per repeat with a different `time` and matching `in_point`/`out_point`.

```json theme={null}
{
  "width": 1920,
  "height": 1080,
  "duration": 12,
  "elements": [
    {
      "type": "video",
      "id": "vid1",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 0,
      "in_point": 0,
      "out_point": 6
    },
    {
      "type": "video",
      "id": "vid2",
      "source_url": "https://cdn.example.com/clip.mp4",
      "time": 6,
      "in_point": 0,
      "out_point": 6
    }
  ]
}
```
