Connect Vizard AI to n8n: Automate Clip Generation

vizard-AI
In this guide:

Vizard turns long videos into short, social-ready clips. Doing that by hand in the dashboard is fine for one video, but it doesn’t scale. This guide wires Vizard’s API into n8n so a workflow can submit a video, wait while Vizard processes it, and pull back the finished clips — their URLs, viral scores, and other metadata — ready to log or publish anywhere.

By the end you’ll have three working pieces: an HTTP credential that authenticates with Vizard, a node that submits a video, and a polling loop (or webhook) that fetches the clips once they’re done.

Prerequisites

  • A Vizard account on a paid plan. The API isn’t available on the free tier, so a free account will fail at the credential step.
  • A Vizard API key (you generate it in Step 1).
  • An n8n instance, either n8n Cloud or self-hosted. The HTTP Request node you’ll use is built in.

Step 1 — Generate your Vizard API key

The API is gated behind a key tied to your workspace. Without it, every request comes back unauthorized. In Vizard, open Workspace → Settings → API and click Generate API Key. Copy it somewhere safe — you’ll paste it into n8n in the next step.

Why it matters: the key is the only credential Vizard accepts, and it ties every request back to your account’s usage.

Tip: the API section only appears on paid plans. If you don’t see it, check your plan tier first.

Step 2 — Create the Vizard credential in n8n

Vizard authenticates with a custom request header, not Basic auth or OAuth, so you set it up as a header credential. In n8n go to Credentials → New, choose HTTP Request (Header Auth), name it Vizard API, and add the header below.

Name:  VIZARDAI_API_KEY
Value: YOUR_API_KEY   # paste the key from Step 1


Save it. Every Vizard node references this one credential instead of carrying the key inline.

Why it matters: one credential, reused everywhere, and your key never sits in plain text inside a node.

Tip: the header name is case-sensitive — use VIZARDAI_API_KEY exactly.

Step 3 — Submit a video (Create Vizard Project)

Add an HTTP Request node that POSTs your video URL to Vizard’s create endpoint. Vizard queues the job and returns a projectId you’ll use to fetch results.

Config:

  • Method: POST
  • URL: https://elb-api.vizard.ai/hvizard-server-front/open-api/v1/project/create
  • Authentication: your Vizard API credential
  • Content-Type: JSON  ·  Response Format: JSON

Request body:

{
  "lang": "en",
  "preferLength": [0],
  "videoUrl": "https://www.youtube.com/watch?v=OqLfw-TzzfI",
  "videoType": 2
}

Parameters:

  • videoUrl — the source video. Swap the hardcoded URL for an expression from the previous node, e.g. {{$json["videoUrl"]}}.
  • videoType — source type. YouTube is 2, Google Drive is 3. (Other source types exist in the docs.)
  • langauto, or a specific code like en, es, pt.
  • preferLength — an array controlling clip length. [0] lets Vizard decide; [1] <30s, [2] 30–60s, [3] 60–90s, [4] 90s–3min.

Expected response:

{
  "code": 2000,
  "projectId": 17861706,
  "shareLink": "https://vizard.ai/project?invite=...",
  "errMsg": ""
}

code: 2000 means the job was accepted. Hold onto projectId — the next step needs it.

Tip: preferLength is an array, not a bare number. Passing 0 instead of [0] is a common cause of rejected requests. Advanced options like ratioOfClip, maxClipNumber, templateId, and clipModel live in Vizard’s advanced docs if you need finer control.

Step 4 — Poll until the clips are ready (Query Vizard Project)

Processing is asynchronous, so the clips aren’t ready the instant you submit. You poll the query endpoint with your projectId until Vizard reports the job is done.

Add a second HTTP Request node:

  • Method: GET
  • URL: see below
  • Authentication: Vizard API  ·  Response Format: JSON
https://elb-api.vizard.ai/hvizard-server-front/open-api/v1/project/query/{{$json["projectId"]}}

Then build the loop: Query → IF → Wait → back to Query. The IF node checks the returned status; if the job is complete, continue; otherwise send it through a Wait node (~30 seconds, the interval Vizard recommends) and query again.

Note on status codes: the source treats a completed job as 2000 and an in-progress job as a separate code (it lists 1000 as an approximate value). Confirm the exact in-progress code against Vizard’s response reference before hardcoding your IF condition — route anything that isn’t the completed code back through the Wait.

Tip: don’t poll faster than ~30s. Tight loops burn executions and can hit rate limits without getting you results any sooner.

Step 5 — Use the clip metadata

Once the query response says the job is done, it carries the generated clips — their URLs, viral scores, and other fields. From here it’s ordinary n8n plumbing.

A common pattern from Vizard’s n8n templates: split the clips into individual items, filter by viralScore (for example, keep only clips scoring 9+), then route them to Google Sheets, Slack, or a social-posting node.

Source note: these downstream destinations come from community n8n templates, not Vizard’s API docs — treat them as example wiring, not a fixed requirement.

Tip: filtering by viralScore before you publish keeps low-quality clips out of your feed automatically.

Step 6 (optional) — Skip polling with a webhook

If you’d rather not run a polling loop, Vizard can push results to you. Configure a webhook URL in your Vizard workspace, and Vizard POSTs the clip metadata when processing finishes.

In n8n:

  1. Add a Webhook trigger node (HTTP Method: POST) and copy its URL.
  2. Paste that URL into Vizard’s workspace webhook settings.
  3. When clips are ready, Vizard POSTs to your n8n webhook and the rest of the workflow runs from that payload — no Wait loop needed.

Note: the source doesn’t spell out whether the create call needs extra parameters to enable webhook delivery, so confirm that in Vizard’s docs before relying on it.

Tip: webhooks are the cleaner choice for high-volume workflows since you’re not spending executions on polling.

Common mistakes

MistakeWhat happensFix
Using a free Vizard planRequests fail authenticationThe API requires a paid plan
Basic/OAuth auth in n8nRequests rejectedUse header auth: VIZARDAI_API_KEY
Expecting instant clipsEmpty or incomplete responseProcessing is async — poll ~30s or use a webhook
preferLength as a numberRequest rejectedPass an array, e.g. [0]
Hardcoding projectIdQuery hits the wrong jobPass it via expression from the create response
Polling every few secondsWasted executions, rate limitsWait ~30s between polls

Quick recap

  • Get a Vizard API key from Workspace → Settings → API (paid plan required).
  • Store it in n8n as an HTTP header credential named VIZARDAI_API_KEY.
  • POST to /project/create with lang, preferLength, videoUrl, videoType; grab the projectId.
  • GET /project/query/{projectId} on a ~30s loop until the job reports complete.
  • Read clip URLs and viral scores from the query response and route them downstream.
  • Prefer a webhook over polling for high-volume setups.

Frequently asked questions

Written by

Marco Sansalone

Founder of AI Tool Curator. UX/UI Designer & strategist with 15+ years in the design field.
Vizard AI video editing

Try Vizard AI

View Vizard AI

Something Not Working? Tell Us What’s Wrong.

Popular requests move to the top of our queue.
You'll be notified when the tutorial goes live and join our newsletter on AI tools and tutorials.

Find Your Perfect AI Tool