VideoUpscaler API
Upscale videos to 1080p, 2K or 4K from your own code. Send a video URL, poll the task, download the result.
The VideoUpscaler API runs the same AI video upscaler as videoupscaler.co and uses the same credits. Every request is a plain HTTPS call with a JSON body, so any language works.
Base URL: https://videoupscaler.co/api/v1
Paid accounts only
The API is available to accounts that have bought credits or subscribed. Buy any credit pack on the pricing page to get access; free accounts get 403 paid_plan_required.
How it works
- You send a video — a public
video_url, or a file you upload first. - We read the video's duration, charge credits for it and start the job.
- You poll the task until it is
completed, then downloadoutput_url.
Quickstart
Create an API key
Sign in with an account that has bought credits or subscribed, and open Settings → API Keys. Create a key and copy it — it is shown only once. Keys look like vu_live_….
Start an upscale
curl https://videoupscaler.co/api/v1/upscale \
-H "Authorization: Bearer $VIDEOUPSCALER_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-video-001" \
-d '{"video_url": "https://example.com/clip.mp4", "resolution": "4k"}'const res = await fetch('https://videoupscaler.co/api/v1/upscale', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.VIDEOUPSCALER_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': 'my-video-001',
},
body: JSON.stringify({ video_url: 'https://example.com/clip.mp4', resolution: '4k' }),
});
const task = await res.json();
console.log(task.id, task.status);import os, requests
res = requests.post(
"https://videoupscaler.co/api/v1/upscale",
headers={
"Authorization": f"Bearer {os.environ['VIDEOUPSCALER_API_KEY']}",
"Idempotency-Key": "my-video-001",
},
json={"video_url": "https://example.com/clip.mp4", "resolution": "4k"},
)
task = res.json()
print(task["id"], task["status"])The response is a task with status processing.
Poll until it finishes
curl https://videoupscaler.co/api/v1/tasks/TASK_ID \
-H "Authorization: Bearer $VIDEOUPSCALER_API_KEY"Poll every 5–10 seconds, or stream the task's events instead. When status is completed, download the video from output_url. When it is failed, the credits were refunded and error says why.
Endpoints
| Method | Path | What it does |
|---|---|---|
POST | /upscale | Charge credits and start upscaling a video |
POST | /uploads | Get a signed URL to upload a local file |
GET | /tasks/{id} | Get one task |
GET | /tasks/{id}/events | Stream status changes (Server-Sent Events) |
GET | /tasks | List your tasks, newest first |
GET | /account | Credit balance and pricing |