ilovevideoeditor

n8n community nodes for the iLoveVideoEditor API — generate videos from templates or VideoJSON and receive render webhooks

Package Information

Released: 3 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.4

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)

  1. In your self-hosted n8n instance, go to Settings → Community nodes.
  2. Choose Install, enter n8n-nodes-ilovevideoeditor and confirm.
  3. 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):

  1. Workflow A: Airtable Trigger (new row) → iLoveVideoEditor → Create From Template (templateId = your promo template, variables = mapped Airtable fields). Leave webhookUrl empty — the Trigger node manages its own subscription.
  2. 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-workflow is a peer dependency provided by n8n)

License

MIT

Discussion