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

# Renders

> Image and video generation jobs

A **render** is a job that produces an image or a video by applying `modifications` to a published template.

## Lifecycle

```
pending → rendering → completed
                    ↘ failed
```

| Status      | Meaning                        |
| ----------- | ------------------------------ |
| `pending`   | Queued, waiting for a worker   |
| `rendering` | Worker is producing the output |
| `completed` | `result_url` is populated      |
| `failed`    | `error` field has the cause    |

## Fields

| Field              | Description                                       |
| ------------------ | ------------------------------------------------- |
| `id`               | Render identifier (`img_<uuid>` or `vid_<uuid>`)  |
| `template_id`      | Template used                                     |
| `template_version` | Pinned version number                             |
| `status`           | See lifecycle above                               |
| `result_url`       | Signed download URL (1h TTL, regenerated on read) |
| `thumbnail_url`    | Preview image (videos only)                       |
| `duration_ms`      | Total render time                                 |
| `webhook_url`      | Optional callback once completed                  |
| `created_at`       | ISO-8601 timestamp                                |

<Note>
  `result_url` is signed and **expires after 1 hour**. Re-fetch the render to get a fresh URL — Imtegrate regenerates it on the fly from the underlying storage path.
</Note>

## Image vs video

* **Images** — single PNG/JPEG, render in seconds
* **Videos** — MP4 with thumbnail, can take minutes depending on duration

Endpoints: `POST /v1/images`, `POST /v1/videos`.

## Webhooks vs polling

For high-volume integrations, prefer **webhooks** ([guide](/guides/webhooks)). For one-off scripts, polling `GET /v1/images/<id>` is fine.
