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

# Render Settings

> Control output format, codec, quality, frame range, engine version, and Multi-Frame Rendering for every render job

The `settings` object on a job payload controls how After Effects renders and what format the output takes. All fields are optional - omitting `settings` entirely uses the composition's default output settings.

> [!NOTE]
>
> `settings` and `preview` are mutually exclusive. `preview: true` on its own renders with draft settings, and a job that sends both is rejected with `SETTINGS_PREVIEW_CONFLICT`.

## Fields

**settings.type** `string`

Output type. One of:

* `video` - renders to a video file (default)
* `image` - renders a single frame or frame range as still images
* `aep` - packages the project as a rendered AEP archive
* `lottie` - exports the template to Lottie and returns a zip; see [Lottie Export](https://www.nexrender.com/docs/cloud/jobs/initiating_renders.md#lottie-export)

**settings.quality** `string`

Render quality. One of:

* `full` - full quality output (default)
* `draft` - faster, lower-quality render useful for testing. It renders at reduced resolution: a 1920×1080 composition comes out at 640×360

**settings.codec** `string`

Output codec. Must be compatible with the chosen `type`. See the [codec list](#codecs) below.

**settings.frames** `integer | array`

Frame specification. Required when `type` is `image`.

* Single integer - renders one frame at that position (e.g. `125`)
* Two-element array - renders a frame range (e.g. `[0, 120]`)
* Three-element array - renders every n-th frame of a range (e.g. `[0, 120, 10]`). The step must be between 1 and 100.

Use `-1` in any position for the default: the composition's first frame as start, its last frame as end, or every frame as the step (e.g. `[-1, -1, 25]`).

**settings.engine** `string`

After Effects engine version to use for this job. One of:

* `ae2026` (default)
* `ae2025`

**settings.multiFrame** `boolean`

Turns After Effects Multi-Frame Rendering on (`true`) or off (`false`) for this job. If omitted, the render node's default applies.

Multi-Frame Rendering renders several frames at once and is usually much faster. Turn it off for templates whose effects, plugins or expressions don't render correctly with it.

## Codecs

### Video codecs

| Codec | Description |
| - | - |
| `video_h264_vbr_1mbps` | H.264 variable bitrate, 1 Mbps |
| `video_h264_vbr_5mbps` | H.264 variable bitrate, 5 Mbps |
| `video_h264_vbr_15mbps` | H.264 variable bitrate, 15 Mbps |
| `video_h264_vbr_40mbps` | H.264 variable bitrate, 40 Mbps |
| `video_h264_cbr_1mbps` | H.264 constant bitrate, 1 Mbps |
| `video_h264_cbr_5mbps` | H.264 constant bitrate, 5 Mbps |
| `video_h264_cbr_15mbps` | H.264 constant bitrate, 15 Mbps |
| `video_h264_cbr_40mbps` | H.264 constant bitrate, 40 Mbps |
| `video_prores_422` | Apple ProRes 422 |
| `video_prores_4444` | Apple ProRes 4444 (with alpha) |
| `video_vp8` | VP8 in a WebM file, 1 Mbps, Vorbis audio |
| `video_vp9` | VP9 in a WebM file, 1 Mbps, Opus audio |
| `video_vp8_alpha` | VP8 in a WebM file with alpha, 1 Mbps, Vorbis audio |
| `video_vp9_alpha` | VP9 in a WebM file with alpha, 1 Mbps, Opus audio |

### Image codecs

| Codec | Description |
| - | - |
| `image_png` | PNG (lossless, supports transparency) |
| `image_jpeg` | JPEG (lossy, smaller file size) |
| `image_gif` | Animated GIF made from a frame range |

Image codecs require `type: "image"`. Video codecs require `type: "video"`.

You can also use a codec's short name, without the `video_` or `image_` prefix: `h264_vbr_15mbps`, `prores_4444`, `vp9`, `png`, `gif`.

### WebM and GIF

After Effects can't write WebM or GIF files, so these codecs take one more step. The job renders to a source format first, and the render node then converts it with ffmpeg and uploads only the converted file:

* `video_vp8` and `video_vp9` render to H.264 at 15 Mbps first, then encode to WebM at 1 Mbps.
* `video_vp8_alpha` and `video_vp9_alpha` render to ProRes 4444 first, so the alpha channel is kept. Transparent areas of your composition are transparent in the WebM file.
* `image_gif` renders PNG frames first, then makes one looping GIF from them, 480 pixels wide (the height keeps the aspect ratio) at 12 frames per second. Set `frames` to a range, such as `[0, 90]`. Other image ranges upload a ZIP of frames; a GIF range uploads one `.gif` file.

The output URL ends in `.webm` or `.gif`.

## Examples

```json H.264 video theme={null}
{
  "settings": {
    "type": "video",
    "quality": "full",
    "codec": "video_h264_vbr_15mbps"
  }
}
```

```json Draft preview theme={null}
{
  "settings": {
    "type": "video",
    "quality": "draft",
    "codec": "video_h264_vbr_5mbps"
  }
}
```

```json ProRes with alpha theme={null}
{
  "settings": {
    "type": "video",
    "quality": "full",
    "codec": "video_prores_4444"
  }
}
```

```json WebM with alpha theme={null}
{
  "settings": {
    "type": "video",
    "codec": "video_vp9_alpha"
  }
}
```

```json Animated GIF theme={null}
{
  "settings": {
    "type": "image",
    "frames": [0, 90],
    "codec": "image_gif"
  }
}
```

```json Single frame still theme={null}
{
  "settings": {
    "type": "image",
    "frames": 125,
    "codec": "image_png"
  }
}
```

```json Frame range sequence theme={null}
{
  "settings": {
    "type": "image",
    "frames": [0, 120],
    "codec": "image_jpeg"
  }
}
```

```json Specific AE engine version theme={null}
{
  "settings": {
    "type": "video",
    "quality": "full",
    "codec": "video_h264_vbr_15mbps",
    "engine": "ae2025"
  }
}
```

```json Multi-Frame Rendering off theme={null}
{
  "settings": {
    "type": "video",
    "codec": "video_h264_vbr_15mbps",
    "multiFrame": false
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.