- V1 Lite Image to Video
Start frame, end frame, cheaper than the rest
- image_url
- end_image_url
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Here's the detail that trips people up on this node before they even queue it: image_url and end_image_url are both required. Lite image-to-video is a first-and-last-frame model. Give it where the shot starts and where it ends and it fills the middle. If you only have one still in hand, this isn't your node - V1 Pro Image to Video takes a single required image; V1 Lite Text to Video takes none.
Once you accept the two-frame contract, it's a nice little motion model for the money. It's the cheapest way in this pack to make a still move, and because you're pinning both ends, you keep real control over where the clip lands - no more five-second drift into whatever the model felt like.
Inputs and outputs
image_url and end_image_url are required native IMAGE sockets. The pack uploads both and injects the URLs, so you connect two local images and never touch a URL field. A trick that works well: pull both frames from the same approved image - a crop of a wide shot, a mirrored composition, a tighter pass - and let the model bridge them. That gives you a controlled push or reveal rather than a guess.
prompt is required as well, multiline, documented up to 10,000 characters. V1-era examples lean on bracketed beats inside one prompt ([Cut to], [Wide shot]) and the shipped default does exactly that - a traveler crossing a desert toward a glowing archway. Use the same convention to describe what happens between your two frames rather than describing the frames themselves.
Optional: resolution (480p, 720p, 1080p), duration as 5 or 10 (a discrete choice, not a slider), camera_fixed to lock the camera, seed (FLOAT, -1 = random), enable_safety_checker (default true; per the docs it's always on in KIE's playground and only switchable through the API), nsfw_checker (default false on this node), and the shared timeout_seconds / callback_url pair - leave the callback empty unless you're running a server that receives KIE webhooks.
Outputs: video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. The credits outputs and the on-node spend/balance receipt after each run are how you keep a metered loop honest.
How to spend less on it
Two-frame control plus 5 seconds at 480p is the cheapest useful configuration in this pack's video branch. Use it to test whether a motion idea reads at all - a slow reveal, a subject step forward, a light change - then re-run the winners at 720p or 1080p with the real duration. Both ends being pinned means a bad draft still tells you something specific: the failure was motion interpretation, not framing.
Install
Manager → search KIE.ai Nodes Next (publisher id felipeosilva) → install. If Manager comes up empty, the README's registry publishing is still described as prepared rather than shipped, so:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart ComfyUI. Four light Python dependencies (requests, Pillow, numpy, PyYAML) and no model downloads, because the model lives on KIE's servers - which is both the feature and the cost. There's a one-click .vbs installer in dist/ for Windows and a matching full uninstaller. Then set your key once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated against KIE before overwriting a saved key, and the frontend only ever sees a masked fingerprint. Headless installs can set KIE_API_KEY, which takes priority.
Gotchas
Two required images means two ways to get it wrong. Feeding mismatched aspect ratios or wildly different content gives you a morph, not a shot. Keep both frames from the same composition.
It blocks the queue while it renders. These nodes are synchronous; timeout_seconds defaults to 1200 and goes to 7200, and a long duration at 1080p is where you'll actually need the headroom.
duration is a two-value choice here, not a slider. The V1 tier commits to five or ten seconds; the integer-range durations belong to the Seedance nodes. If your widgets don't match a screenshot someone posted, run KIE • Refresh Model Catalog - these node definitions are generated from KIE's live docs, and the hash suffix on the class name is part of the same mechanism rather than a typo.
Privacy and the meter. Your frames and prompt go to KIE, every generation costs credits, and ByteDance's model still applies its own content policy no matter what the checkers say. There's nothing local to patch - the whole reason this node exists is a model you can't download.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Multiple shots. A traveler crosses an endless desert toward a glowing archway. [Cut to] His cloak whips in the wind as he reaches the massive stone threshold. [Wide shot] He steps through — and vanishes into a burst of light | The text prompt used to generate the video (Max length: 10000 characters) |
| image_url | IMAGE | — | |
| end_image_url | IMAGE | — | |
| resolutionopt | COMBO | 720p | Video resolution - 480p for faster generation, 720p for higher quality |
| durationopt | COMBO | 5 | Duration of the video in seconds |
| camera_fixedopt | BOOLEAN | false | Whether to fix the camera position (Boolean value (true/false)) |
| seedopt | FLOAT | -1.00-1–2147483647 | Random seed to control video generation. Use -1 for random. (Min: -1, Max: 2147483647, Step: 1) (step: 1) |
| enable_safety_checkeropt | BOOLEAN | true | The safety checker is always enabled in Playground. It can only be disabled by setting false through the API. (Boolean value (true/false)) |
| nsfw_checkeropt | BOOLEAN | false | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself. Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |