This workflow corresponds to n8n.io template #17664 — we link there as the canonical source.
This workflow follows the Form Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "SLVWWThAs05Hqjoj",
"name": "Kling3.0",
"tags": [],
"nodes": [
{
"id": "1cf77b63-526e-4bcd-90b6-fda13c666daa",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 880,
"height": 1968,
"content": "## Create Commercial-Ready Videos With Kling 3.0 Through Pollo API\r\n\r\n\r\n### Overview\r\nAutomate the creation of commercial-ready AI videos using [Pollo API](https://api.pollo.ai)'s Kling 3.0 API through this intuitive n8n workflow. Kling 3.0 brings a director-led feel to short-form advertising, combining coherent cinematic storytelling with lifelike performances and brand-conscious visual execution.\r\n\r\n\r\n**Key Benefits:**\r\n- \ud83c\udfac Multi-shot sequences with up to six individually directed shots for richer commercial storytelling.\r\n- \ud83e\uddd1 Consistent subjects and products across camera movements, scene changes, and shifting lighting conditions.\r\n- \ud83d\udd0a Multilingual native audio with lip-synced dialogue, regional accents, music, and environmental sound.\r\n- \ud83c\udff7\ufe0f Improved text preservation that keeps product labels, logos, and signage legible throughout branded footage.\r\n\r\n\r\n### Perfect for\r\nAdvertising agencies, ecommerce teams, performance marketers, social media studios, and creative producers who need polished multi-shot videos with consistent branding and integrated audio.\r\n\r\n\r\n### Prerequisites\r\n- [Pollo API account](https://api.pollo.ai) and API key ([Get your API key here](https://api.pollo.ai/api-keys)).\r\n- Active n8n instance with form submission capabilities.\r\n- AI prompts and publicly accessible source image URLs for generation.\r\n\r\n\r\n### Quick Setup\r\n\r\n\r\n#### 1. **Get API Key**\r\nRegister at [api.pollo.ai](https://api.pollo.ai) and generate your API key.\r\n\r\n\r\n#### 2. **Configure Form Fields**\r\nSet up these fields in your \"On Form Submission\" node:\r\n- **`prompt`** (Required): Detailed text description of the commercial video you want to generate.\r\n- **`image_url`** (Optional): Public URL of a source image used to anchor the product, character, or opening frame.\r\n- **`model_path`** (Required): Enter `kling-ai/kling-v3-0` to route the request to the Kling 3.0 model.\r\n- **`api_key`** (Required): Your Pollo AI API key for authentication.\r\n\r\n\r\n#### 3. **Test & Use**\r\n- Execute the workflow.\r\n- Access the generated form URL.\r\n- Fill in your details and submit.\r\n- Wait for processing.\r\n- Results will be displayed automatically.\r\n\r\n\r\n### Usage Tips\r\n\r\n\r\n**Commercial Storyboard Direction:**\r\nPlan each shot around one clear selling point and describe the shot order, camera movement, subject action, dialogue, and transition. Include exact brand text when product labels or signage must remain visible.\r\n\r\n\r\n**Better Prompts:**\r\nSpecify the product, setting, shot sequence, camera language, lighting, performance, spoken lines, sound design, and brand elements. Clearly assign dialogue to each character and define when every line should be delivered.\r\n\r\n\r\n**Example:** \"Create a premium skincare commercial featuring the uploaded serum bottle. Shot 1: macro close-up of the label under soft studio lighting as water droplets move across the glass. Shot 2: a woman applies the serum in a bright modern bathroom and says, 'Hydration that lasts all day.' Shot 3: slow product rotation on a clean white pedestal. Keep the bottle shape, logo, and label text consistent and legible in every shot. Add gentle ambient music, natural room sound, and precise English lip-sync.\"\r\n\r\n\r\n**Common Uses:**\r\n- Multi-shot product launch commercials\r\n- Branded videos with stable packaging and logo text\r\n- Multilingual spokesperson ads with synchronized dialogue\r\n- Ecommerce product demonstrations with cinematic camera changes\r\n- Short narrative campaigns with recurring characters\r\n- Localized social ads with native voices and accents\r\n\r\n\r\n### Troubleshooting\r\n- **API Key Invalid**: Ensure your API key is correct and active.\r\n- **Generation Fails**: Check whether your source image URLs are publicly accessible and not behind a login. Also, make sure your prompt follows safety guidelines.\r\n\r\n\r\n**Keywords:** Kling 3.0 API, Pollo API, text-to-video API, image-to-video API, AI commercial video generator, AI video with audio, n8n template, AI video workflow"
},
"typeVersion": 1
},
{
"id": "7ef5c083-998a-45b3-a1e3-3969d2a95c98",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
980,
800
],
"parameters": {
"color": 7,
"width": 416,
"height": 176,
"content": "## Capture and submit prompt\n\nStarts the workflow from a form submission and sends the entered prompt and generation settings to the Pollo video generation API."
},
"typeVersion": 1
},
{
"id": "0328985b-089d-4f18-b0a8-7ddd63929cfe",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1460,
800
],
"parameters": {
"color": 7,
"width": 400,
"height": 176,
"content": "## Poll generation status\n\nWaits for Pollo to process the video, queries the task status, and loops back to wait again until the generation is complete."
},
"typeVersion": 1
},
{
"id": "3458f58b-d440-43a0-b3f1-8ca8d2af946b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1920,
960
],
"parameters": {
"color": 7,
"height": 224,
"content": "## Display generated video\n\nFormats the completed generation response for output, including task ID, status, video URL, and media type."
},
"typeVersion": 1
},
{
"id": "c5221fd1-979b-4d3c-a97d-e8bdcb0e3c77",
"name": "When Prompt Submitted",
"type": "n8n-nodes-base.formTrigger",
"position": [
1040,
1000
],
"parameters": {
"options": {},
"formTitle": "Pollo AI video generator",
"formFields": {
"values": [
{
"fieldLabel": "prompt"
},
{
"fieldLabel": "image_url"
},
{
"fieldLabel": "model_path",
"placeholder": "kling-ai/kling-v3-0"
},
{
"fieldLabel": "api_key",
"placeholder": "pollo_xxxxxxxx"
}
]
},
"formDescription": "Fill in the following information to generate your video with the Pollo API"
},
"typeVersion": 2.2
},
{
"id": "8df47226-c6d5-48e6-90b7-5fddce043fe3",
"name": "Post to Pollo API",
"type": "n8n-nodes-base.httpRequest",
"position": [
1260,
1000
],
"parameters": {
"url": "=https://pollo.ai/api/platform/generation/{{$json.model_path}}",
"method": "POST",
"options": {},
"jsonBody": "={{ JSON.stringify({ input: $json.image_url ? { prompt: $json.prompt, image: $json.image_url } : { prompt: $json.prompt } }) }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{$json.api_key}}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0f76046f-118c-4b1a-8859-0ac66092706e",
"name": "Wait 10 Seconds",
"type": "n8n-nodes-base.wait",
"position": [
1500,
1000
],
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "f2b64d1b-94da-4fbc-9eef-d245e8f3c8f3",
"name": "Fetch Generation Status",
"type": "n8n-nodes-base.httpRequest",
"position": [
1680,
1000
],
"parameters": {
"url": "=https://pollo.ai/api/platform/generation/{{$node[\"Post to Pollo API\"].json[\"data\"][\"taskId\"]}}/status",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "={{$node[\"When Prompt Submitted\"].json[\"api_key\"]}}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "b001aa5a-812a-4a13-9dd2-f6bc69c98324",
"name": "If Generation Complete",
"type": "n8n-nodes-base.if",
"position": [
1520,
1200
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "or",
"conditions": [
{
"id": "66666666-+1234567890",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.generations[0].status }}",
"rightValue": "succeed"
},
{
"id": "41a1d076-e578-466a-b7bf-d4b9941c0e5a",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.generations[0].status }}",
"rightValue": "failed"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "e1b9b226-4e65-47fa-89f5-cbdd8b13c36f",
"name": "Set Result Fields",
"type": "n8n-nodes-base.set",
"position": [
1920,
1200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "77777777-+1234567890",
"name": "taskId",
"type": "string",
"value": "={{ $json.data.taskId }}"
},
{
"id": "77777777-+1234567890",
"name": "status",
"type": "string",
"value": "={{ $json.data.generations[0].status }}"
},
{
"id": "77777777-+1234567890",
"name": "url",
"type": "string",
"value": "={{ $json.data.generations[0].url }}"
},
{
"id": "77777777-+1234567890",
"name": "mediaType",
"type": "string",
"value": "={{ $json.data.generations[0].mediaType }}"
},
{
"id": "77777777-+1234567890",
"name": "credit",
"type": "number",
"value": "={{ ($json.data.generations[0].failMsg || '').includes('Credits refunded') ? 0 : $json.data.credit }}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "881b0dff-f56d-41f4-bdae-cc51ede3a09c",
"connections": {
"Wait 10 Seconds": {
"main": [
[
{
"node": "Fetch Generation Status",
"type": "main",
"index": 0
}
]
]
},
"Post to Pollo API": {
"main": [
[
{
"node": "Wait 10 Seconds",
"type": "main",
"index": 0
}
]
]
},
"When Prompt Submitted": {
"main": [
[
{
"node": "Post to Pollo API",
"type": "main",
"index": 0
}
]
]
},
"If Generation Complete": {
"main": [
[
{
"node": "Set Result Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 10 Seconds",
"type": "main",
"index": 0
}
]
]
},
"Fetch Generation Status": {
"main": [
[
{
"node": "If Generation Complete",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow collects a video prompt and optional image URL via an n8n form, starts a Kling 3.0 generation job through the Pollo API, repeatedly polls for completion, and returns the final task status and generated video URL. Receives a submission from an n8n form containing a…
Source: https://n8n.io/workflows/17664/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily. A multi-form setup guides you through the entire process At the beginning you have t
[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.
[](https://youtu.be/c7yCZhmMjtI)
LDX hub All Services Demo. Uses formTrigger, httpRequest, form, n8n-nodes-ldxhub. Event-driven trigger; 53 nodes.
This workflow provides a single n8n form that routes to five LDXhub services (StructFlow, RefineLoop, RenderOCR, CastDoc, and ExtractDoc) to run one-off document processing jobs and return the generat