This workflow corresponds to n8n.io template #17173 — 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": "pu1WrbiPTjDJCIfY",
"name": "Gork1.5",
"tags": [],
"nodes": [
{
"id": "dacff23a-b846-4c9e-8a5c-d91365d55a54",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
-880
],
"parameters": {
"width": 880,
"height": 1968,
"content": "## Generate AI Videos with Grok Imagine Video 1.5 API on Pollo API\n\n### Overview\nAutomate the creation of audio-rich AI videos using [Pollo API](https://api.pollo.ai)'s Grok Imagine Video 1.5 API through this intuitive n8n workflow. Powered by xAI's Aurora model, Grok Imagine Video 1.5 turns a source image into a moving video with synced audio, spatial sound, and fast 720p generation for rapid creative testing.\n\n**Key Benefits:**\n- \ud83c\udf9e\ufe0f Strong source-image consistency across subject, lighting, color, and style.\n- \ud83c\udfb5 Native synced audio with ambience, music, sound effects, and dialogue in one output.\n- \u26a1 Fast 720p video generation for rapid concept testing and creative iteration.\n- \ud83c\udfa7 Spatial audio that follows scene movement for more natural video results.\n\n### Perfect for\nPerformance marketers, ecommerce teams, social creators, indie filmmakers, and game designers who need fast image-to-video drafts with synced audio.\n\n### Prerequisites\n- [Pollo API account](https://api.pollo.ai) and API key ([Get your API key here](https://api.pollo.ai/api-keys)).\n- Active n8n instance with form submission capabilities.\n- AI prompts and source image URLs for video generation.\n\n### Quick Setup\n\n#### 1. **Get API Key**\nRegister at [api.pollo.ai](https://api.pollo.ai) and generate your API key.\n\n#### 2. **Configure Form Fields**\nSet up these fields in your \"On Form Submission\" node:\n- **`prompt`** (Required): Detailed text description of the video you want to generate.\n- **`image_url`** (Required): Publicly accessible source image URL used as the visual anchor for video generation.\n- **`model_path`** (Required): Enter `grok/grok-imagine-video-1-5` to route the request to the Grok Imagine Video 1.5 model.\n- **`api_key`** (Required): Your Pollo AI API key for authentication.\n\n#### 3. **Test & Use**\n- Execute the workflow.\n- Access the generated form URL.\n- Fill in your details and submit.\n- Wait for processing.\n- Results will be displayed automatically.\n\n### Usage Tips\n**Better Prompts:**\nMention the source image details that must stay consistent, then add camera movement, action, mood, and audio style.\n\n**Example:** \"Turn this skincare product photo into a premium 6-second video ad: slow macro push-in, soft morning light, water droplets on the glass bottle, calm spa ambience, gentle water sounds, no logo distortion.\"\n\n**Common Uses:**\n- Fast video ad concept tests\n- Product videos with built-in ambience and SFX\n- Character videos with stable identity and motion\n- Storyboard previews with mood, movement, and audio\n- Ecommerce video drafts before a full shoot\n\n### Troubleshooting\n- **API Key Invalid**: Ensure your API key is correct and active.\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.\n\n**Keywords:** Grok Imagine Video 1.5 API, Pollo API, Grok Imagine API, image-to-video API, AI video generator API, AI video with audio, synced audio generation, n8n template, AI video workflow"
},
"typeVersion": 1
},
{
"id": "48da4fab-fe31-4e66-87ce-cd63ee821a4f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1540,
-80
],
"parameters": {
"color": 7,
"width": 416,
"height": 320,
"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": "c12996ed-49ef-46a9-b29f-5e9bba9370ac",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2020,
-80
],
"parameters": {
"color": 7,
"width": 400,
"height": 544,
"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": "8e3fd381-53de-4d52-8245-2276a4814fd8",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2460,
100
],
"parameters": {
"color": 7,
"height": 368,
"content": "## Display generated video\n\nFormats the completed generation response for output, including task ID, status, video URL, and media type."
},
"typeVersion": 1
},
{
"id": "462c0107-f882-44a3-ace0-ec433adc9c7b",
"name": "When Prompt Submitted",
"type": "n8n-nodes-base.formTrigger",
"position": [
1600,
100
],
"parameters": {
"options": {},
"formTitle": "Pollo AI video generator",
"formFields": {
"values": [
{
"fieldLabel": "prompt"
},
{
"fieldLabel": "image_url"
},
{
"fieldLabel": "model_path",
"placeholder": "grok/grok-imagine-video-1-5"
},
{
"fieldLabel": "api_key",
"placeholder": "pollo_xxxxxxxx"
}
]
},
"formDescription": "Fill in the following information to generate your video with the Pollo API"
},
"typeVersion": 2.2
},
{
"id": "c668cf2a-86ff-41c3-a234-c81e1a859c4f",
"name": "Post to Pollo API",
"type": "n8n-nodes-base.httpRequest",
"position": [
1820,
100
],
"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": "3dbaa830-aa90-410c-a278-8eac9f76ac59",
"name": "Fetch Generation Status",
"type": "n8n-nodes-base.httpRequest",
"position": [
2260,
100
],
"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": "5679079a-72d4-4ebd-81cf-25f40574b37d",
"name": "If Generation Complete",
"type": "n8n-nodes-base.if",
"position": [
2100,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "or",
"conditions": [
{
"id": "66666666-+12345678900000001",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.generations[0].status }}",
"rightValue": "succeed"
},
{
"id": "b0fbecba-6705-4732-b33f-a4390f5329cb",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.generations[0].status }}",
"rightValue": "failed"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "50d2860c-7039-457b-8d1b-7ff278dffb34",
"name": "Set Result Fields",
"type": "n8n-nodes-base.set",
"position": [
2500,
300
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "77777777-+12345678900000001",
"name": "taskId",
"type": "string",
"value": "={{ $json.data.taskId }}"
},
{
"id": "77777777-+12345678900000002",
"name": "status",
"type": "string",
"value": "={{ $json.data.generations[0].status }}"
},
{
"id": "77777777-+12345678900000003",
"name": "url",
"type": "string",
"value": "={{ $json.data.generations[0].url }}"
},
{
"id": "77777777-+12345678900000004",
"name": "mediaType",
"type": "string",
"value": "={{ $json.data.generations[0].mediaType }}"
},
{
"id": "77777777-+12345678900000005",
"name": "credit",
"type": "number",
"value": "={{ ($json.data.generations[0].failMsg || '').includes('Credits refunded') ? 0 : $json.data.credit }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "49bba44b-556f-47ef-bca3-bf95fc7301c5",
"name": "Wait 5 Seconds",
"type": "n8n-nodes-base.wait",
"position": [
2060,
100
],
"parameters": {},
"typeVersion": 1.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "30d192d7-9530-4359-83d5-4e0ca214947f",
"connections": {
"Wait 5 Seconds": {
"main": [
[
{
"node": "Fetch Generation Status",
"type": "main",
"index": 0
}
]
]
},
"Post to Pollo API": {
"main": [
[
{
"node": "Wait 5 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 5 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 prompt and source image URL via an n8n form, submits an image-to-video generation request to the Pollo API (Grok Imagine Video 1.5), then repeatedly checks the task status until it completes and returns the generated video URL and metadata. Receives a…
Source: https://n8n.io/workflows/17173/ — 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