--- license: apache-2.0 base_model: JunhaoZhuang/FlashVSR language: - en tags: - video-super-resolution - video-upscaling - flashvsr - api - apimodels --- # 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](https://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](https://huggingface.co/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](before-after.jpg) *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: ```bash # 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": "", "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): ```python 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 - Run it: **[apimodels.app](https://apimodels.app)** - API docs: https://apimodels.app/docs/flashvsr - Original model: https://huggingface.co/JunhaoZhuang/FlashVSR