n8n AI video

Generate videos with Kling 3, Veo 3, Seedance and the rest of the catalogue from any n8n workflow, using two HTTP Request nodes. This is a generic HTTP workflow, not an official n8n community node, so it works on n8n Cloud and self-hosted alike.

1. Import the workflow

Download videogenapi-generate.json and import it in n8n (Workflows → Import from file). It contains three nodes: Generate video (POST), Wait 5s and Poll status (GET).

2. Add your API key

Create a Header Auth credential and select it in both HTTP nodes:

Name:  Authorization
Value: Bearer YOUR_API_KEY

Your key is in the dashboard under API keys; see authentication.

3. Set the model and prompt

In Generate video, the JSON body takes the same fields as the generate endpoint. Map the prompt from a previous node with an expression:

{
  "model": "kling-3",
  "prompt": "{{ $json.prompt }}",
  "duration": 5,
  "aspect_ratio": "9:16"
}

4. Turn the poll into a loop

The imported workflow polls once. Most models need longer than 5 seconds, so add a loop:

  1. Change the Wait node to 15 seconds (30 for Kling 3 or Seedance 2.5).
  2. After Poll status, add an IF node with the condition {{ $json.status }} is equal to completed.
  3. Connect the true branch to your next step (save to Drive, post to Slack, upload to YouTube…). The video URL is {{ $json.video_url }}.
  4. Connect the false branch to a second IF on failed: route failures to an alert, and everything else back into the Wait node.

Typical waits per model are listed on completion and polling. Status checks are not counted against generation rate limits.

Automation ideas

  • Product videos from a catalogue: a Google Sheets trigger sends each new product photo to an image-to-video model such as Kling 3.
  • Daily social clips: a Schedule trigger, an LLM node that writes a prompt, then Seedance 2.0 for fast vertical video.
  • Ad variants: generate several versions of one brief and push them to your ad platform for testing.

Troubleshooting

  • 401: the credential is not attached to the node, or "Bearer " is missing before the key.
  • 429: the loop submitted too many generations in a short window. Generate in smaller batches; see rate limits.
  • The status never completes: check the Wait node really loops back, and that the GET uses the generation_id from the Generate node.

Prefer chatting to building flows? Connect Claude, ChatGPT or Cursor through the MCP server instead.

Reviewed by Enzo Lanne · Founder, VideoGenAPI ·