Renders
Create renders from raw movie documents and track them to completion. Poll `GET /renders/{id}` or receive a signed [webhook](/docs/api/webhooks) when the render finishes.
Create renders from raw movie documents and track them to completion. Poll GET /renders/{id} or receive a signed webhook when the render finishes.
All endpoints live under https://api.automotion.dev/v1, require Authorization: Bearer <api key>, and answer with the standard envelopes.
POST /renders
Create a render. Validate a raw movie document, apply credit/idempotency/webhook gating, and enqueue it for rendering. Poll the returned render or supply webhook_url (paid plans) to be notified.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string (non-empty, ≤ 255 chars) | no | Optional client-chosen key making the create retry-safe (§9): replaying the same key with the same body returns the ORIGINAL render with 200; a different body is rejected with IDEMPOTENCY_KEY_REUSED. |
Request body
The movie document to render, optionally with variable values and webhook_url.
| Field | Type | Default | Description |
|---|---|---|---|
movie * | object | — | The movie document to render. The preset input form ({ preset, resolution? } instead of width/height) is also accepted. |
variables | object | — | Values for the declared variables, keyed by variable name. |
webhook_url | string (uri) | — | Webhook notified on render.completed / render.failed. Paid plans only; trial requests are rejected with WEBHOOKS_NOT_ALLOWED. |
Example
Responses
201— The queued render. ReturnsRenderResource.200— Idempotent replay: the same Idempotency-Key with the same body returns the original render. ReturnsRenderResource.
RenderResource
| Field | Type | Default | Description |
|---|---|---|---|
id * | string (non-empty) | — | Render id. |
status * | "queued" | "preparing" | "rendering" | "done" | "failed" | — | Render lifecycle state (§6): queued → preparing → rendering → done | failed. |
progress * | integer (0–100) | — | Monotonic progress percent: 0–20 preparing, 20–99 rendering, 100 done. |
draft * | boolean | — | Whether this is a fast low-res draft render. |
watermark * | boolean | — | Whether the output carries the Automotion watermark (drafts and the trial plan). |
outputUrl * | string (uri) | null | — | CDN URL of the finished MP4. Null until the render is done. |
expiresAt * | string (date-time) | null | — | When the output expires per the plan's retention window (30d trial / 90d Starter+Pro / 365d Studio). Set on completion. |
error * | object | null | — | The failure, when status is failed. Always references a catalog code. Null otherwise. |
durationSec * | number (≥ 0) | null | — | Output duration in seconds, known once preparation finishes. |
meteredMinutes * | number (≥ 0) | null | — | Weighted render minutes charged against the credit balance (10 credits each), set when the render completes. |
fps * | integer (> 0) | — | Frames per second of the output. |
templateId * | string (non-empty) | null | — | Source template id when the render was created from a template. |
webhookUrl * | string (uri) | null | — | Webhook target notified on completion or failure (paid plans). |
createdAt * | string (date-time) | — | Creation time (ISO-8601). |
updatedAt * | string (date-time) | — | Last state-change time (ISO-8601). |
Errors
VALIDATION_ERROR · SCHEMA_INVALID · UNSUPPORTED_SCHEMA_VERSION · ELEMENT_ID_DUPLICATE · SCENE_ID_DUPLICATE · SCENE_EMPTY · VARIABLE_MISSING · VARIABLE_TYPE_MISMATCH · VARIABLE_UNDECLARED · INSUFFICIENT_CREDITS · CONCURRENCY_LIMIT · IDEMPOTENCY_KEY_REUSED · WEBHOOKS_NOT_ALLOWED — plus the pipeline-wide UNAUTHORIZED · RATE_LIMITED · INTERNAL.
GET /renders
List renders. List the caller's renders, newest first, with status/date filtering and page pagination.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
status | query | "queued" | "preparing" | "rendering" | "done" | "failed" | no | Only return renders in this lifecycle state. |
created_after | query | string (date-time) | no | Only return renders created at or after this ISO-8601 instant. |
created_before | query | string (date-time) | no | Only return renders created before this ISO-8601 instant. |
page | query | integer (≥ 1) | no | 1-based page number. |
page_size | query | integer (1–100) | no | Page size (max 100). |
Example
Responses
200— A page of renders. ReturnsRenderListResource.
RenderListResource
| Field | Type | Default | Description |
|---|---|---|---|
items * | object[] | — | The page of results, newest first. |
page * | integer (≥ 1) | — | 1-based page number. |
pageSize * | integer (≥ 1) | — | Number of items per page. |
total * | integer (≥ 0) | — | Total number of matching items. |
hasMore * | boolean | — | Whether further pages exist (page * pageSize < total). |
Errors
VALIDATION_ERROR — plus the pipeline-wide UNAUTHORIZED · RATE_LIMITED · INTERNAL.
GET /renders/{id}
Get a render. Fetch a render's status, progress, output URL, retention deadline and error detail. The always-available polling fallback.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (non-empty) | yes | The render id. |
Example
Responses
200— The render. ReturnsRenderResource.
RenderResource
| Field | Type | Default | Description |
|---|---|---|---|
id * | string (non-empty) | — | Render id. |
status * | "queued" | "preparing" | "rendering" | "done" | "failed" | — | Render lifecycle state (§6): queued → preparing → rendering → done | failed. |
progress * | integer (0–100) | — | Monotonic progress percent: 0–20 preparing, 20–99 rendering, 100 done. |
draft * | boolean | — | Whether this is a fast low-res draft render. |
watermark * | boolean | — | Whether the output carries the Automotion watermark (drafts and the trial plan). |
outputUrl * | string (uri) | null | — | CDN URL of the finished MP4. Null until the render is done. |
expiresAt * | string (date-time) | null | — | When the output expires per the plan's retention window (30d trial / 90d Starter+Pro / 365d Studio). Set on completion. |
error * | object | null | — | The failure, when status is failed. Always references a catalog code. Null otherwise. |
durationSec * | number (≥ 0) | null | — | Output duration in seconds, known once preparation finishes. |
meteredMinutes * | number (≥ 0) | null | — | Weighted render minutes charged against the credit balance (10 credits each), set when the render completes. |
fps * | integer (> 0) | — | Frames per second of the output. |
templateId * | string (non-empty) | null | — | Source template id when the render was created from a template. |
webhookUrl * | string (uri) | null | — | Webhook target notified on completion or failure (paid plans). |
createdAt * | string (date-time) | — | Creation time (ISO-8601). |
updatedAt * | string (date-time) | — | Last state-change time (ISO-8601). |
Errors
NOT_FOUND — plus the pipeline-wide UNAUTHORIZED · RATE_LIMITED · INTERNAL.