AutomationFlowsWeb Scraping › Generate AI Videos From Text or Images with Veo 3 API and Vietvid.com

Generate AI Videos From Text or Images with Veo 3 API and Vietvid.com

ByTran Trung Nghia @trungnghialk on n8n.io

This workflow leverages the VietVid.com Veo3 model to generate AI videos from simple text descriptions or optional images. Users interact via a form interface, inputting a prompt (e.g., a scene description), choosing aspect ratio and model, then the system automatically submits…

Event trigger★★★★☆ complexity13 nodesForm TriggerHTTP Request
Web Scraping Trigger: Event Nodes: 13 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #8213 — 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 →

Download .json
{
  "id": "D1OiajULSbxamTth",
  "name": "My workflow 3",
  "tags": [],
  "nodes": [
    {
      "id": "287c7b64-415d-4978-9e56-999f59cb7a60",
      "name": "Sticky Note - Step 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        240
      ],
      "parameters": {
        "width": 260,
        "height": 472,
        "content": "## STEP 1 - GET API KEY (YOURAPIKEY)\n- Create an account [here](https://vietvid.com/api) and obtain your API key.\n- This key will be required in later steps.\n- Important: Keep your key safe and never share it with others."
      },
      "typeVersion": 1
    },
    {
      "id": "1c8d3fba-7775-4aaa-ba07-d27ff21d8942",
      "name": "Sticky Note - Step 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1248,
        240
      ],
      "parameters": {
        "width": 352,
        "height": 468,
        "content": "## STEP 2 - ENTER PROMPT INFORMATION\nFill out the required fields in the form:\n- **Prompt**: Describe your video idea in English (e.g., \"A robot dancing under neon lights\").\n- **Image URL (optional)**: Add 1 image link (JPG/PNG) for image-to-video, or leave empty for text-to-video.\n- **Aspect Ratio**: Choose 16:9 (landscape), 9:16 (portrait), or 1:1 (square).\n- **Seeds (optional)**: A random number between 10000\u201399999 for consistent results.\n- **API Key**: Paste the key obtained in Step 1."
      },
      "typeVersion": 1
    },
    {
      "id": "b66bed0f-48ca-44f5-b33c-2b4e755690ef",
      "name": "Sticky Note - Step 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        240
      ],
      "parameters": {
        "width": 648,
        "height": 476,
        "content": "## STEP 4 - WAIT FOR VIDEO CREATION\nThe workflow will **automatically check (poll)** every 10 seconds until the video URL is available.\n\n**Status Check**\n- **Method:** GET\n- **URL:** https://vietvid.com/api/n8n/video-status/{{taskId}}\n- **Headers:** Authorization: Bearer {{API_KEY}}\n\n**Expected Response**\n- **videoUrl:** always returns 720p (faster)\n- **hdVideoUrl:** returns 1080p when ready (only for 16:9)\n- **status:** \"processing\" (HD not ready) or \"completed\" (video ready)\n\n**Tips**\n- Use a Wait node (10s delay) between checks.\n- Typical time: 720p ~1\u20133 min, 1080p ~2\u20133 min."
      },
      "typeVersion": 1
    },
    {
      "id": "e4f77ea7-1ebd-4378-82f9-af894bba326d",
      "name": "Sticky Note - Step 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        240
      ],
      "parameters": {
        "width": 680,
        "height": 472,
        "content": "## STEP 5 - RECEIVE COMPLETED VIDEO LINK\nWhen status = **completed**, the API will return the video link.\n\n**Response Example**\n```\n{\n  \"success\": true,\n  \"status\": \"completed\",\n  \"videoUrl\": \"https://tempfile.aiquickdraw.com/p/video_720p.mp4\",\n  \"hdVideoUrl\": \"https://tempfile.aiquickdraw.com/p/video_1080p.mp4\",\n  \"resolution\": \"1080p\",\n  \"taskId\": \"task-YOUR_OPENAI_KEY_HERE\"\n}\n```\n**Notes**\n- **videoUrl**: always contains 720p.\n- **hdVideoUrl**: only available for 16:9; null for 9:16/1:1.\n- Save these URLs to use in the next workflow step (download, embed, or publish)."
      },
      "typeVersion": 1
    },
    {
      "id": "a8b24e60-3e49-400e-bb68-46a3cc552c43",
      "name": "Sticky Note - Step ",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        240
      ],
      "parameters": {
        "width": 492,
        "height": 472,
        "content": "## STEP 3 - SUBMIT REQUEST (AUTO POST)\nThe workflow will automatically **POST** your inputs to VietVid.com to generate the video.\n\n**HTTP Request**\n- **Method:** POST\n- **URL:** https://vietvid.com/api/n8n/generate\n- **Headers:**\n  - Authorization: Bearer {{API_KEY}}\n  - Content-Type: application/json\n\n**Sample Body**\n```\n{\n  \"prompt\": \"A cute cat playing in a garden\",\n  \"model\": \"veo3_fast\",\n  \"aspectRatio\": \"16:9\",\n  \"seeds\": 12345,\n  \"imageUrls\": [\"https://example.com/image.jpg\"]\n}\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "cd1346b1-e8e5-4f01-9235-d8a06a0cf38c",
      "name": "Sticky Note - Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        -512
      ],
      "parameters": {
        "color": 3,
        "width": 1144,
        "height": 428,
        "content": "## Overview\nThis workflow uses the VietVid.com Veo3 engine to create AI-powered videos from either text prompts or images. Through a simple form, users can provide a description, optionally attach an image URL for image-to-video, and choose the video aspect ratio (16:9 or 9:16). The request is then sent to the VietVid.com API, which is polled until the video is complete, and the final video link is returned. This workflow is a cost-effective solution for creators, educators, and businesses to generate personalized videos quickly and easily.\n\n## Pricing Advantage\n- Videos start at only **$0.4 per 8-second clip**.\n- Billing is based on **credit packages**.\n- **No expiration date** on credits\u2014use them whenever you want.\n\n## Prerequisites\n- A VietVid.com account and valid API key: Register at [VietVid.com](https://vietvid.com) to obtain your free or paid key.\n- An active n8n instance (cloud or self-hosted) with HTTP Request and form submission.\n- Basic knowledge of prompt design for better AI results.\n- (Optional) An image URL if you want to generate videos from images."
      },
      "typeVersion": 1
    },
    {
      "id": "5d764d02-55ad-4c01-9496-f589dc43c193",
      "name": "Sticky Note - Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        -512
      ],
      "parameters": {
        "color": 3,
        "width": 1352,
        "height": 428,
        "content": "## Setup Instructions\n1. **Get API Key**: Log in at VietVid.com and generate your personal API key. Keep it secure.\n2. **Configure the Form**: Ensure the following fields exist: prompt (video description), img_url (optional), aspectRatio (16:9 or 9:16), api_key.\n3. **Run a Test**:\n   - Execute the workflow in n8n.\n   - Open the generated form link, submit your prompt and API key.\n   - The system checks every 10 seconds until the video is ready.\n4. **Outputs**: The final node displays the video URL for download or embedding.\n\n## Customization Tips\n- **Better Prompts**: Add details like video length, visual style (cinematic, animated, realistic), and actions to improve quality.\n- **SEO Focus**: Ideal for keywords around AI video generation, text-to-video tools, Veo3 API automation, and affordable content creation."
      },
      "typeVersion": 1
    },
    {
      "id": "3f362a74-74f2-4130-aa06-d95793835d20",
      "name": "Enter prompt infomation",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -1120,
        -16
      ],
      "parameters": {
        "options": {},
        "formTitle": "Veo 3 video generator",
        "formFields": {
          "values": [
            {
              "fieldLabel": "text_prompt",
              "placeholder": "The cat playing in the garden"
            },
            {
              "fieldLabel": "ImageURL [optional]",
              "placeholder": "https://vietvid.com/example.jpg"
            },
            {
              "fieldLabel": "api_Token",
              "placeholder": "47f33b46*************47f33b46"
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "aspect_Ratio [16:9,9:16]",
              "fieldOptions": {
                "values": [
                  {
                    "option": "16:9"
                  },
                  {
                    "option": "9:16"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "model",
              "fieldOptions": {
                "values": [
                  {
                    "option": "veo3"
                  },
                  {
                    "option": "veo3_fast"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "Please fill in the following information to generate your video"
      },
      "typeVersion": 2.2
    },
    {
      "id": "a46abb93-ab7b-4aaa-8c3c-8ca5d11dc09b",
      "name": "Submit request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -672,
        -16
      ],
      "parameters": {
        "url": "https://vietvid.com/api/n8n/generate",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"prompt\": \"{{ $('Enter prompt infomation').item.json.text_prompt }}\",\n  \"model\": \"{{ $('Enter prompt infomation').item.json.model }}\",\n  \"watermark\": \"\",\n  \"imageUrls\": [\"{{ $('Enter prompt infomation').item.json['ImageURL [optional]'] }}\"],\"aspectRatio\": \"{{ $('Enter prompt infomation').item.json['aspect_Ratio [16:9,9:16]'] }}\",\n  \"seeds\": 50000\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('Enter prompt infomation').item.json.api_Token }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d590cd72-7c31-4073-a28a-fe4422345989",
      "name": "Wait for Video Processing",
      "type": "n8n-nodes-base.wait",
      "position": [
        -288,
        -16
      ],
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "7692b851-0b01-4d6f-8054-91ed8745f121",
      "name": "Check Video status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -96,
        -16
      ],
      "parameters": {
        "url": "=https://vietvid.com/api/n8n/video-status/{{ $('Submit request').item.json.task.taskId }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "721f655b-c3c3-46c1-932c-19c2922d2b94",
      "name": "Return video link",
      "type": "n8n-nodes-base.set",
      "position": [
        576,
        -32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "68bed228-7506-4deb-a96b-cde86468a261",
              "name": "720p_link",
              "type": "string",
              "value": "={{ $json.videoUrl }}"
            },
            {
              "id": "e49e0e01-a6d5-47be-8c54-895257e9fe76",
              "name": "1080p_link",
              "type": "string",
              "value": "={{ $json.hdVideoUrl }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "515fba5e-f600-4441-bb70-ed6b67aa94f4",
      "name": "Check video available (720p or 1080p)",
      "type": "n8n-nodes-base.if",
      "position": [
        112,
        -16
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "db9a5dec-997b-4c3f-9582-37c9bbeb19ff",
              "operator": {
                "type": "boolean",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.videoUrl }}",
              "rightValue": "={{ $json.data.successFlag == 1 }}"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8865cb0a-767e-4e18-9509-30d8eee0298d",
  "connections": {
    "Submit request": {
      "main": [
        [
          {
            "node": "Wait for Video Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Video status": {
      "main": [
        [
          {
            "node": "Check video available (720p or 1080p)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enter prompt infomation": {
      "main": [
        [
          {
            "node": "Submit request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Video Processing": {
      "main": [
        [
          {
            "node": "Check Video status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check video available (720p or 1080p)": {
      "main": [
        [
          {
            "node": "Return video link",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait for Video Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow leverages the VietVid.com Veo3 model to generate AI videos from simple text descriptions or optional images. Users interact via a form interface, inputting a prompt (e.g., a scene description), choosing aspect ratio and model, then the system automatically submits…

Source: https://n8n.io/workflows/8213/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

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

Execute Command, Read Write File, HTTP Request +3
Web Scraping

[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.

HTTP Request, GitHub, Stop And Error +1
Web Scraping

[](https://youtu.be/c7yCZhmMjtI)

HTTP Request, GitHub, Stop And Error +1
Web Scraping

N8n recently introduced folders and it has been a big improvement on workflow management on top of the tags.

HTTP Request, n8n, Form Trigger +1
Web Scraping

This workflow automates the creation of press releases for music artists releasing a new single. Upload your MP3, fill in basic info, and receive a publication-ready press release saved as a Google Do

Form Trigger, HTTP Request, Google Docs