FlashVSR β€” hosted API access

FlashVSR is a real-time, diffusion-based streaming video super-resolution model (CVPR 2026). This repository is not the model weights β€” it is a documentation page for running FlashVSR through a hosted API on apimodels.app, a multi-model API gateway where one key and one OpenAI-compatible endpoint reach 110+ image, video, audio and language models.

  • Original model & weights: JunhaoZhuang/FlashVSR
  • Authors: Junhao Zhuang, Shi Guo, Xin Cai, Xiaohui Li, Yihao Liu, Chun Yuan, Tianfan Xue
  • License: Apache-2.0 (this page follows the upstream license)

This page is an independent, hosted-API integration. It is not affiliated with or endorsed by the authors and does not redistribute their weights. All credit for the model is theirs.

What it does

Turn a low-resolution clip into a sharper 720p / 1080p / 2K / 4K video. FlashVSR is a one-step streaming framework, so it is fast enough for real-time use.

FlashVSR before/after: 480p source vs FlashVSR 1080p

Same frame and region: a 480p source clip (left) vs the FlashVSR result at 1080p (right), produced through the apimodels.app API. No other edits.

Use it via API

No GPU or setup on your side β€” call the hosted endpoint on apimodels.app. Get a key at https://apimodels.app, then:

# 1) upload the clip -> get a public URL
curl -X POST https://api.apimodels.app/v1/files \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@input.mp4;type=video/mp4"
# -> { "data": { "publicUrl": "https://r2.apimodels.app/uploads/.../input.mp4" } }

# 2) create the upscale task (resolution: 720p | 1080p | 2k | 4k)
curl -X POST https://api.apimodels.app/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "flashvsr", "video": "<publicUrl>", "resolution": "1080p" }'
# -> { "data": { "taskId": "..." } }

# 3) poll until state == "completed"
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
# -> { "data": { "state": "completed", "resultUrls": ["https://..."] } }

Python (OpenAI-style base URL not needed β€” plain HTTP):

import requests
BASE, KEY = "https://api.apimodels.app", "YOUR_API_KEY"
H = {"Authorization": f"Bearer {KEY}"}

pub = requests.post(f"{BASE}/v1/files", headers=H,
                    files={"file": ("input.mp4", open("input.mp4", "rb"), "video/mp4")}
                    ).json()["data"]["publicUrl"]
task = requests.post(f"{BASE}/v1/video/generations", headers=H,
                     json={"model": "flashvsr", "video": pub, "resolution": "1080p"}
                     ).json()["data"]["taskId"]
# then GET {BASE}/v1/video/generations?task_id=task until state == "completed"

Pricing

Billed per second of input video length (not output). Failed jobs are not charged. Result files are kept for 7 days.

Resolution Price / input second
720p $0.02
1080p $0.03
2K $0.035
4K $0.06

Links

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for stimi/flashVSR

Finetuned
(1)
this model