n8n
Render videos from an n8n workflow with the HTTP Request node — no custom app needed.
Automotion is a plain REST API, so the stock HTTP Request node is all you
need. The pattern: trigger → create render → wait for the webhook (or poll) →
use outputUrl downstream.
1. Create the render (HTTP Request node)
Configure the node:
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://api.automotion.dev/v1/renders |
| Authentication | Generic → Header Auth |
| Header name | Authorization |
| Header value | Bearer {{$env.AUTOMOTION_API_KEY}} |
| Body content type | JSON |
Body (uses n8n expressions to inject upstream data):
Add an Idempotency-Key header derived from your trigger item (e.g.
={{ $json.rowId }}-v1) so workflow retries never double-render.
Prefer templates for anything non-trivial: keep the document in Automotion as
a template and call
POST /v1/templates/{id}/renders with only the variable values:
2. Wait for completion — webhook (recommended, paid plans)
Use n8n's Wait → On webhook call node: it exposes a resume URL
($execution.resumeUrl) — pass it as webhook_url when creating the render
(as shown above). Automotion calls it once with the final state:
Verify the X-Automotion-Signature header if the workflow does anything
sensitive — see webhook verification.
2b. …or poll (works on the trial)
Loop: Wait (10s) → HTTP Request GET https://api.automotion.dev/v1/renders/{{ $json.id }} → IF node on
{{ $json.status }} equals done / failed; loop back otherwise.
3. Use the video
{{ $json.render.outputUrl }} (webhook path) or {{ $json.outputUrl }}
(polling path) is a direct MP4 URL — feed it to your YouTube/S3/Slack/Drive
node. Note the expiresAt field: outputs are retained 30 days on the trial
and 90–365 days on paid plans, so copy the file if you need it longer.