> ## 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 provide powerful declarative actions for advanced template manipulation. You can target specific compositions and perform complex operations.

```json Function block theme={null}
{
  "type": "function",
  "name": "nx:text-params-set",
  "params": {
    "composition": "Precomp_1",
    "layerName": "Sub_Title",
    "textValue": "Text inside Precomp"
  }
}
```

<Card title="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](/docs/cloud/jobs/functions/nx-gen-ai) — Generate AI video or image assets at render time and inject them into a layer
  * [nx:comp-duration-set](/docs/cloud/jobs/functions/nx-comp-duration-set) — Set composition work area duration
  * [nx:layer-autoscale](/docs/cloud/jobs/functions/nx-layer-autoscale) — Automatically scale layers to fit/fill
  * [nx:layer-duration-set](/docs/cloud/jobs/functions/nx-layer-duration-set) — Set layer duration
  * [nx:layer-remove](/docs/cloud/jobs/functions/nx-layer-remove) — Remove layers by index
  * [nx:layer-start-set](/docs/cloud/jobs/functions/nx-layer-start-set) — Set layer start time
  * [nx:layer-state-set](/docs/cloud/jobs/functions/nx-layer-state-set) — Control layer visibility
  * [nx:solid-color-set](/docs/cloud/jobs/functions/nx-solid-color-set) — Modify solid color layers
  * [nx:text-params-set](/docs/cloud/jobs/functions/nx-text-params-set) — Comprehensive text manipulation
</Card>
