Nodes/ComfyUI-teamToken/teamToken Video
ComfyUI Node

teamToken Video

Veo, Kling and Seedance clips from a ComfyUI node that never actually runs a model

By TeamToken-store·Created 5 days ago·Updated a day ago· 0
teamToken Video
  • image
  • video
  • video_path
  • job_id
  • cost_usd
model
prompt
duration0
aspect_ratio
video
seed0
api_key
server_url

Here's the thing that confuses people about this node: it has no model in it. There is no Veo checkpoint to download, no Kling safetensors, nothing to put in models/. Those are closed API products, and the entire job of teamToken Video is to call them - submit your prompt, get an MP4 back, and hand it to the rest of the graph. If you own a decent GPU, this node is not replacing your Wan or LTX workflow; it's for the clips local models still can't do, and for the one thing Veo has and open video doesn't, which is native audio. (MiniMax H3 opened a credible open-weight answer to that in August 2026, but a 33B omni-modal model is a different kind of afternoon.)

The honest tradeoff: it's per-second billed, your prompt leaves the machine, and it's non-deterministic - seed doesn't change the clip because the endpoint has no seed to set. What you get in return is the model roster. The bundled catalog carries 39 video entries: veo-3.1-hd, veo-3.1-fast-hd, veo-2, kling-2.5/2.6/3.0 plus their -motion and -edit variants, seedance-2-pro-720p, grok-video-480p, omni-flash-*. The dropdown is fetched live from the gateway's public catalog, so tiers get added and repriced without a pack update.

How it works

The node submits a job to POST /v1/videos and gets an HTTP 202 back, then polls GET /v1/videos/{id} every three seconds with a live progress bar. There's no blocking wait - ComfyUI stays responsive, and the Cancel button actually interrupts the poll loop rather than being ignored until the provider finishes. When the job reports completed, the node streams the finished MP4 through the gateway's own content proxy (so the provider's CDN host is never exposed to you) and writes it into your output/ folder as teamtoken_<job_id>.mp4, with a sanitized filename so a hostile job id can't path-traverse anywhere.

Then it returns the clip on four sockets: video (a native VIDEO output on current ComfyUI builds - on older builds the first socket degrades to a file path string), video_path, job_id, and cost_usd.

The inputs that matter

model and prompt are required. Among the optional widgets, three are the whole game:

  • duration - leave it at 0. Zero means "use the model's own default", and that's not laziness: allowed values differ per model (veo takes 4/6/8, grok-video only 6, kling-2.1-10s only 10), edit and motion models ignore the field entirely, and a number that isn't allowed comes back as a provider 400. The node only sends duration when it's greater than zero, so 0 is the safe path.
  • image - IMAGE input. On a normal model that's your first frame for image-to-video. On a kling-*-motion model it's the character you want to drive.
  • video - a STRING: a URL, or a local path for video-to-video and motion control. Local files are only readable if they live under ComfyUI's input/output/temp folder, end in .mp4/.mov/.webm, and are ≤80 MB - anything else is refused rather than uploaded, which is a deliberate guard against a shared workflow exfiltrating files from your disk. Big clip? Pass a URL. Smaller clip you just made with a previous Video node in the same graph? Wire its video_path into this socket.

Also worth knowing: aspect_ratio defaults to 16:9 and is always sent, so a vertical clip needs an explicit 9:16.

Install

ComfyUI-Manager → search ComfyUI-teamToken, or:

cd ComfyUI/custom_nodes
git clone https://github.com/TeamToken-store/ComfyUI-teamToken
pip install requests
# restart ComfyUI, then set your key once:
export TEAMTOKEN_API_KEY=sk-...   # or Settings → teamToken → API key

One dependency, requests, deliberately not pinning torch or Pillow so it can't fight your ComfyUI install. Use the Settings pane rather than the node's api_key field - that field gets written into the workflow file and rides along in every export you share.

Where people get burned

The 900-second timeout is not the end of the job. If polling hits the ceiling the node errors with the job id and tells you it may still be processing. That matters because a long video job is billed server-side: re-running to "try again" queues a second paid generation while the first may still complete. Same reasoning behind the oddest error in the pack - an ambiguous 5xx on submit returns the id of a job the gateway parked and may still finalize, and the message tells you to reference that id instead of re-queuing.

Cancel doesn't always refund. Hitting Cancel stops the poll, but the provider keeps rendering and you can still be charged. Cancel early, not late.

Fixed durations cause 400s. See above. 0 is the answer unless you know the model's allowed set.

Cost adds up faster than you think. The bundled snapshot's per-second rates are wildly uneven: kling-2.5-720p-relax around $0.03/s, veo-3.1-fast-hd far less than veo-3.1-hd, seedance-2-pro-720p around $0.18/s. An 8-second clip on a flagship tier is over a dollar a shot, and you'll reroll it five times. The live catalog and the cost_usd output are the truth - let that number set your budget.

CategoryteamToken/video

Inputs (9)

NameTypeDefaultDescription
modelCOMBOVideo model, fetched live from the teamToken catalog
promptSTRINGWhat the video should show
durationoptINT00–150 = model's own default (recommended — each model allows different values, e.g. veo 4/6/8, grok only 6, kling-2.1-10s only 10); ignored by edit/motion models
aspect_ratiooptCOMBOOutput aspect ratio (default 16:9)
imageoptIMAGEReference frame for image-to-video / motion character
videooptSTRINGURL or local path for video-to-video / motion control
seedoptINT00–18446744073709550000Change to force a fresh (paid) generation; identical inputs reuse the cached result
api_keyoptSTRINGOverrides the teamToken settings key. ⚠️ This value is saved INTO the workflow file — prefer the teamToken Settings pane or $TEAMTOKEN_API_KEY so your key isn't shared with the workflow
server_urloptSTRINGLeave empty to use the teamToken settings / env / default gateway

Outputs (4)

NameTypeDescription
videoVIDEO
video_pathSTRING
job_idSTRING
cost_usdSTRING