> ## 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.

# Rendering Jobs Basics

> Learn how to create and submit render jobs in Nexrender Cloud. Define compositions, inject dynamic assets like text, images, audio, and trigger renders via API.

Once your template is uploaded and inspected, you can submit a **render job** using the Nexrender Cloud API.

A render job ties together:

* A template (AEP/ZIP/MOGRT)
* A specific composition (for AEP/ZIP; optional for MOGRT)
* A set of dynamic assets (text, images, audio, essential properties)
* Optional render settings (output type, frames, quality, codec, engine version)
* Optional upload target to S3-compatible storage
* Optional webhooks / preview flag

## What Is a Render Job?

Each job is a self-contained instruction set telling Nexrender Cloud how to render a video from a specific template.

Jobs are **idempotent**, meaning the same payload will always produce the same output — unless your template changes.

You must specify:

* template.id (and template.composition for AEP/ZIP)
* assets\[]
* settings (optional; new) — output type, frames, quality, codec, engine version
* upload (optional; new) — push outputs to your S3-compatible bucket
* webhook (optional) for status callbacks
* preview (optional) for quick previews

## Job Payload Structure

Here's what a minimal payload looks like:

```json Payload Structure theme={null}
{
  "template": {
    "id": "01JTGM9GCR71JV7EJYDF45QAFD",
    "composition": "main"
  },
  "assets": [
    {
      "type": "text",
      "layerName": "title",
      "value": "Hello World!"
    }
  ]
}
```

## Supported Asset Types

Nexrender Cloud lets you customize your After Effects templates by injecting different types of assets during render time. These assets are defined in the `assets` array of your render job payload.

Each asset must include a `type`, and typically a `layerName`, `src`, or parameters depending on its function.

#### `data` — Property Override

Use to change properties in a composition layer.

```json Property Override theme={null}
{
  "type": "data",
  "layerName": "title",
  "property": "Source Text",
  "value": "Hello World!"
}
```

#### `text` — Text Override

Use to change text in a composition layer.

```json Text Override theme={null}
{
  "type": "text",
  "layerName": "title",
  "value": "Hello World!"
}
```

#### `image` — Replace Image

```json Replace Image theme={null}
{
  "type": "image",
  "src": "https://cdn.yourapp.com/assets/avatar.jpg",
  "layerName": "Avatar"
}
```

#### `audio` — Inject Audio

```json Audio Injection theme={null}
{
  "type": "audio",
  "src": "https://yourcdn.com/audio/intro.mp3",
  "layerName": "VoiceTrack"
}
```

#### `video` — Replace Footage

```json Video Injection theme={null}
{
  "type": "video",
  "src": "https://cdn.site.com/introclip.mp4",
  "layerName": "FootageLayer"
}
```

#### `static` — Static assets

Use to replace static assets like JSON files, CSV files, etc. These files are not rendered, they are just placed in the working directory of the project for the render to use.

```json Static assets theme={null}
{
  "type": "static",
  "src": "https://cdn.site.com/file.json"
}
```

#### `essential` — Motion Graphics Template fields defined by Essential Properties

Use to set fields in Motion Graphics Templates. The `value` can be a string, number, or boolean. Layer name in this case is the name of the field in the Motion Graphics Template panel. If the field is a nested object, use a dot notation to access the property. (If there is a dot in the field name, you can switch to using '->' instead.)

```json Essential Properties theme={null}
{
  "type": "essential",
  "layerName": "FieldName",
  "value": "Hello from Main Comp"
}
```

```json Essential Properties theme={null}
{
  "type": "essential",
  "layerName": "Nested.Field.Name",
  "value": 155
}
```

#### `function` — Declarative Action Blocks

Functions make built-in changes to your template, such as text styling, layer timing, and visibility. Put every option, including `layerName`, inside `params`. The API rejects unknown functions, fields such as `layerName` outside `params`, and parameters that the function does not list.

```json Function block theme={null}
{
  "type": "function",
  "name": "nx:text-params-set",
  "params": {
    "layerName": "Sub_Title",
    "textValue": "New subtitle"
  }
}
```

> [card] Available Functions
>
> For detailed documentation on all available functions, including parameters, examples, and use cases, see the individual function pages below.
>
> **Available Functions:**
>
> * [nx:genai](https://www.nexrender.com/docs/cloud/jobs/functions/nx-gen-ai.md) — Generate an AI video, image, or audio file and place it in a layer
> * [nx:comp-duration-set](https://www.nexrender.com/docs/cloud/jobs/functions/nx-comp-duration-set.md) — Set composition work area duration
> * [nx:layer-autoscale](https://www.nexrender.com/docs/cloud/jobs/functions/nx-layer-autoscale.md) — Automatically scale layers to fit/fill
> * [nx:layer-duration-set](https://www.nexrender.com/docs/cloud/jobs/functions/nx-layer-duration-set.md) — Set layer duration
> * [nx:layer-remove](https://www.nexrender.com/docs/cloud/jobs/functions/nx-layer-remove.md) — Remove layers by index
> * [nx:layer-start-set](https://www.nexrender.com/docs/cloud/jobs/functions/nx-layer-start-set.md) — Set layer start time
> * [nx:layer-state-set](https://www.nexrender.com/docs/cloud/jobs/functions/nx-layer-state-set.md) — Control layer visibility
> * [nx:solid-color-set](https://www.nexrender.com/docs/cloud/jobs/functions/nx-solid-color-set.md) — Modify solid color layers
> * [nx:text-params-set](https://www.nexrender.com/docs/cloud/jobs/functions/nx-text-params-set.md) — Set text style, content, and transform expressions


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