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

# Quickstart

> A 5-minute guide to your first rendered video using Nexrender Cloud

This guide walks you through uploading a template and rendering your first video using the Nexrender Cloud API. The whole flow takes about 5 minutes.

[Nexrender Cloud Quickstart](https://www.youtube.com/embed/5-cYK50EdmM)

## Prerequisites

Before you start, you'll need:

* An active Nexrender Cloud account - [start a free trial](https://www.nexrender.com/get-trial) to get access
* Your API key - available from your [team dashboard](https://app.nexrender.com/settings/api-tokens)
* An After Effects template in `.aep`, `.zip`, or `.mogrt` format

## Step 1 - Register Your Template

Create a template object in Nexrender Cloud. This tells the API what type of file you're uploading and reserves a slot for it in storage. The response includes an `uploadInfo` object with a presigned URL you'll use in the next step.

```bash Request theme={null}
curl -X POST https://api.nexrender.com/api/v2/templates \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "zip",
    "displayName": "My First Video"
  }'
```

```json Response theme={null}
{
  "id": "01JT2M9GCR712V7EJYDF45QAFD",
  "type": "zip",
  "displayName": "My First Video",
  "status": "awaiting_upload",
  "createdAt": "2025-05-05T16:25:59.961Z",
  "updatedAt": "2025-05-05T16:25:59.961Z",
  "uploadInfo": {
    "url": "https://nx1-assets-eu.cloudflarestorage.com/...",
    "method": "PUT",
    "fields": {
      "Content-Type": "application/octet-stream"
    },
    "expiresIn": 3600,
    "key": "01JTGKXH8X92D5N7RZ0DCVGDCH/templates/01JTGM9GDDSBEX9W0EJD7ZQDYY.zip"
  }
}
```

## Step 2 - Upload Your File

Use the `uploadInfo.url` from the previous response to upload your actual template file. This is a presigned PUT request - no `Authorization` header is needed here.

```bash Request theme={null}
curl --request PUT \
  'YOUR_UPLOAD_URL_FROM_UPLOAD_INFO' \
  --header 'Content-Type: application/octet-stream' \
  --data-binary '@/path/to/your/template.zip'
```

```http Response theme={null}
HTTP/1.1 200 OK
```

Once the upload completes, the template status transitions `awaiting_upload` → `processing` → `uploaded`. Nexrender introspects the file during processing to extract available compositions and layers. Poll `GET /api/v3/templates/{id}` until status is `uploaded` before submitting a render job.

## Step 3 - Submit a Render Job

With the template uploaded, create a render job. The job defines which template and composition to render, and which assets to inject dynamically.

```bash Request theme={null}
curl -X POST https://api.nexrender.com/api/v2/jobs \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template": {
      "id": "01JT2M9GCR712V7EJYDF45QAFD",
      "composition": "main"
    },
    "assets": [
      {
        "type": "data",
        "layerName": "title",
        "property": "Source Text",
        "value": "Hello World!"
      },
      {
        "type": "data",
        "layerName": "subtitle",
        "property": "Source Text",
        "value": "Powered by Nexrender Cloud"
      }
    ],
    "webhook": {
      "url": "https://yourdomain.com/webhooks/render-complete"
    }
  }'
```

```json Response theme={null}
{
  "id": "01JTRDF7HCR8QAHYW8GPCP4S9Y",
  "status": "queued",
  "progress": 0,
  "outputUrl": "https://nx1-outputs-eu.nexrender.com/01K4B3YH2GP215NAWCZX42S2GH/outputs/01K4B3YH6H97ASTA8DS3MX8P8B.mp4",
  "stats": {
    "createdAt": "2025-05-14T12:00:00.000Z"
  }
}
```

> [!NOTE]
>
> The `webhook.url` is optional but recommended - it lets Nexrender notify your server when the render completes instead of requiring you to poll. See [Tracking Renders](https://www.nexrender.com/docs/cloud/jobs/tracking_renders.md) for details.

## Step 4 - Check Job Status

Poll the job endpoint to check progress, or wait for a webhook callback if you configured one.

```bash Request theme={null}
curl -X GET https://api.nexrender.com/api/v2/jobs/01JTRDF7HCR8QAHYW8GPCP4S9Y \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```json Response theme={null}
{
  "id": "01JTRDF7HCR8QAHYW8GPCP4S9Y",
  "status": "finished",
  "progress": 100,
  "outputUrl": "https://nexrender-output.s3.amazonaws.com/job.mp4",
  "stats": {
    "finishedAt": "2025-08-14T08:01:10.304Z",
    "renderDuration": 22.304
  }
}
```

Once the status is `finished`, download your rendered video via the `outputUrl`.

## What's Next

> [card] [Core Concepts](https://www.nexrender.com/docs/cloud/concepts.md)
>
> Understand how templates, jobs, batches, and nested jobs fit together

> [card] [Rendering Basics](https://www.nexrender.com/docs/cloud/jobs/rendering_basics.md)
>
> Learn about asset types, render settings, and advanced job options

> [card] [Tracking Renders](https://www.nexrender.com/docs/cloud/jobs/tracking_renders.md)
>
> Poll job status or receive webhook callbacks when renders complete

> [card] [Template Best Practices](https://www.nexrender.com/docs/cloud/templates/best_practice.md)
>
> Design templates that are reliable, scalable, and automation-friendly


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