Connect Vizard AI to n8n: Automate Clip Generation

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 APIcredential - 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 is2, Google Drive is3. (Other source types exist in the docs.)lang—auto, or a specific code likeen,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:
- Add a Webhook trigger node (HTTP Method: POST) and copy its URL.
- Paste that URL into Vizard’s workspace webhook settings.
- 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
| Mistake | What happens | Fix |
|---|---|---|
| Using a free Vizard plan | Requests fail authentication | The API requires a paid plan |
| Basic/OAuth auth in n8n | Requests rejected | Use header auth: VIZARDAI_API_KEY |
| Expecting instant clips | Empty or incomplete response | Processing is async — poll ~30s or use a webhook |
preferLength as a number | Request rejected | Pass an array, e.g. [0] |
Hardcoding projectId | Query hits the wrong job | Pass it via expression from the create response |
| Polling every few seconds | Wasted executions, rate limits | Wait ~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/createwithlang,preferLength,videoUrl,videoType; grab theprojectId. - 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
Do I need a paid Vizard plan to use the API?
Yes. Vizard’s API isn’t available on the free plan, so you’ll need a paid plan before you can generate a key or make requests.
What authentication does Vizard use in n8n?
A custom request header, not Basic auth or OAuth. Create an HTTP header credential with the name
VIZARDAI_API_KEYand your key as the value.How do I know when my clips are ready?
Because processing is asynchronous, you poll the query endpoint (
/project/query/{projectId}) about every 30 seconds until the job reports complete — or you set up a webhook so Vizard notifies you instead.Can I avoid the polling loop entirely?
Yes. Configure a webhook URL in your Vizard workspace and start your n8n workflow from a Webhook trigger node. Vizard POSTs the clip metadata when processing finishes, so no polling is needed.
Written by
Marco Sansalone
Also in Vizard AI Guide
Something Not Working? Tell Us What’s Wrong.
You'll be notified when the tutorial goes live and join our newsletter on AI tools and tutorials.
