Package Information
Available Nodes
Documentation generating…
Documentation
n8n-nodes-ilovevideoeditor
n8n community nodes for the iLoveVideoEditor API — generate videos from templates or raw VideoJSON, and start workflows when renders finish.
This package contains:
- iLoveVideoEditor — action node (declarative) for renders and templates
- iLoveVideoEditor Trigger — webhook trigger that fires on
render.completed/render.failed, with optional HMAC signature verification - iLoveVideoEditor API — credentials (API key + base URL + optional webhook secret)
Installation
Community nodes UI (recommended)
- In your self-hosted n8n instance, go to Settings → Community nodes.
- Choose Install, enter
n8n-nodes-ilovevideoeditorand confirm. - Reload the editor — the nodes appear in the node palette.
Community nodes require a self-hosted n8n instance with community packages enabled (
N8N_COMMUNITY_PACKAGES_ENABLED=true, which is the default for self-hosted). They are not available on n8n Cloud.
npm
# inside your n8n custom extensions directory (e.g. ~/.n8n/custom)
npm install n8n-nodes-ilovevideoeditor
Restart n8n afterwards.
Credentials
Create an iLoveVideoEditor API credential in n8n:
| Field | Description |
|---|---|
| API Key | Create one in the iLoveVideoEditor dashboard under Settings → API keys. Live keys start with vf_live_. Sent as the x-api-key header. |
| Base URL | Defaults to https://api.ilovevideoeditor.com. Change only for staging/self-hosted deployments. |
| Webhook Secret | Optional. The secret returned when a webhook subscription is created (POST /v1/webhooks). When set, the Trigger node verifies the X-ILVE-Signature header of every delivery and silently drops requests with a missing/invalid signature or a timestamp older than 5 minutes. |
The credential test calls GET /v1/render/tier, which returns your tier and credit balance.
Operations
iLoveVideoEditor (action node)
| Resource | Operation | Endpoint | Notes |
|---|---|---|---|
| Render | Create From Template | POST /v1/templates/{templateId}/render |
Pick a template from the dropdown (loaded live from your account) and pass variables as JSON. Optional webhookUrl. Returns { jobId, status, stage }. |
| Render | Create | POST /v1/render |
Render a full Video JSON document. Optional webhookUrl. Returns { jobId, status, stage }. |
| Render | Get | GET /v1/render/{renderId} |
Poll status: { id, status, stage, progress, url, outputs, error, createdAt, completedAt }. |
| Render | Get Many | GET /v1/render?limit=N |
Recent renders, newest first (limit 1–100, default 20). |
| Template | Get Many | GET /v1/templates |
All templates with their variablesSchema. |
iLoveVideoEditor Trigger
When the workflow is activated, the trigger registers a webhook subscription on your iLoveVideoEditor account (POST /v1/webhooks with the node's webhook URL and the selected events). On deactivation it deletes the subscription again. Each delivery becomes one workflow item containing the full payload:
{
"event": "render.completed",
"id": "job_...",
"status": "completed",
"stage": "done",
"progress": 100,
"url": "https://...",
"outputs": [],
"duration": 12.5,
"width": 1920,
"height": 1080,
"templateId": "tpl_...",
"cost": 3,
"error": null,
"createdAt": "...",
"completedAt": "..."
}
Deliveries carry X-ILVE-Event (e.g. render.completed) and X-ILVE-Signature: t=<unix>,v1=<hex> headers. Events not selected in the node's Events parameter are acknowledged but do not start the workflow.
Example flows
Render on new Airtable row, continue when the video is ready
Two workflows (the render call returns immediately with a jobId; the webhook pattern avoids polling):
- Workflow A: Airtable Trigger (new row) → iLoveVideoEditor → Create From Template (
templateId= your promo template,variables= mapped Airtable fields). LeavewebhookUrlempty — the Trigger node manages its own subscription. - Workflow B: iLoveVideoEditor Trigger (
render.completed) → HTTP Request to download{{ $json.url }}→ upload to storage / send notification.
Simple polling alternative (single workflow)
Airtable Trigger → Create From Template → Wait (60 s) → iLoveVideoEditor → Get (renderId = {{ $json.jobId }}) → IF status == completed → download; else loop back to Wait.
Custom compositions
Use Render → Create and build the videoJSON document in a preceding Code/Set node — e.g. generated by an AI agent from a prompt.
Signature verification
Webhook payloads are signed with the subscription's secret:
X-ILVE-Signature: t=1719936000,v1=<hex hmac-sha256("1719936000." + rawBody)>
If you fill in Webhook Secret on the credential, the Trigger node recomputes the HMAC-SHA256 over t + . + raw request body, compares it in constant time, and rejects deliveries whose signature is missing/invalid or whose timestamp differs by more than 5 minutes (replay protection). Without a secret, all deliveries for the selected events are accepted.
Note: the secret shown by the API belongs to one webhook subscription. If you run multiple trigger nodes, use one credential per subscription, or leave the secret empty and filter inside the workflow.
Development
npm install
npm run build # tsc + copies SVG icons into dist/
npm run lint # tsc --noEmit
To test locally, link the built package into your n8n custom directory:
mkdir -p ~/.n8n/custom && cd ~/.n8n/custom
npm init -y && npm install /path/to/integrations/n8n-nodes-ilovevideoeditor
Compatibility
- n8n Nodes API version 1 (
n8nNodesApiVersion: 1) - Requires n8n ≥ 1.x and Node.js ≥ 18.10
- Zero runtime dependencies (
n8n-workflowis a peer dependency provided by n8n)
License
MIT