Upscale Video
April 2, 2026
Table of contents
Upscale a generated video to 2x resolution (super resolution). Doubles both width and height — for example, 720p (1280x720) becomes 1440p (2560x1440), and 1080p (1920x1080) becomes 4K (3840x2160).
Requires a completed video generation job from POST /videos. Each video can only be upscaled once.
Upscale is asynchronous — poll GET /videos/jobid for the result.
https://api.useapi.net/v1/dreamina/videos/upscale
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
API tokenis required, see Setup useapi.net for details.
Request Body
{
"jobid": "j0302140530123456789v-u12345-CA:user@example.com-bot:dreamina"
}
jobidis required. The job ID of a completed video generation job from POST /videos. Must be a video generation job (not an upscale job).replyUrlis optional, webhook URL for job status callbacks.replyRefis optional, custom reference string passed back in webhook callbacks.maxJobsis optional, override max concurrent jobs for this request (1-50).
Responses
-
Upscale job created. Poll GET /videos/
jobidfor the result.{ "jobid": "j0302140630123456789V-u12345-CA:user@example.com-bot:dreamina", "type": "video-upscale", "status": "created", "model": "seedance-2.0-fast", "created": "2026-04-02T00:24:24.535Z", "request": { "jobid": "j0302140530123456789v-u12345-CA:user@example.com-bot:dreamina" }, "response": { "forecastCost": 30 }, "code": 200 } -
Validation error.
{ "error": "Source video job is created, must be completed" }{ "error": "Source video already upscaled: j0302140630123456789V-u12345-CA:user@example.com-bot:dreamina" } -
Invalid API token.
{ "error": "Unauthorized" } -
Source video job not found.
{ "error": "Source video job not found" }
Examples
-
curl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "jobid": "YOUR_COMPLETED_VIDEO_JOBID" }' \ "https://api.useapi.net/v1/dreamina/videos/upscale" -
const token = 'YOUR_API_TOKEN'; const response = await fetch('https://api.useapi.net/v1/dreamina/videos/upscale', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ jobid: 'YOUR_COMPLETED_VIDEO_JOBID' }) }); const result = await response.json(); console.log('Upscale job:', result.jobid); // Poll for completion const poll = async (jobid) => { while (true) { const res = await fetch(`https://api.useapi.net/v1/dreamina/videos/${jobid}`, { headers: { 'Authorization': `Bearer ${token}` } }); const job = await res.json(); if (job.status === 'completed') { console.log('Upscaled:', job.response.width, 'x', job.response.height); console.log('Video URL:', job.response.videoUrl); return job; } if (job.status === 'failed') throw new Error(job.error); await new Promise(r => setTimeout(r, 10000)); } }; await poll(result.jobid); -
import requests import time token = 'YOUR_API_TOKEN' response = requests.post( 'https://api.useapi.net/v1/dreamina/videos/upscale', headers={ 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' }, json={ 'jobid': 'YOUR_COMPLETED_VIDEO_JOBID' } ) result = response.json() print(f"Upscale job: {result['jobid']}") # Poll for completion jobid = result['jobid'] while True: job = requests.get( f'https://api.useapi.net/v1/dreamina/videos/{jobid}', headers={'Authorization': f'Bearer {token}'} ).json() if job['status'] == 'completed': r = job['response'] print(f"Upscaled: {r['width']}x{r['height']}") print(f"Video URL: {r['videoUrl']}") break if job['status'] == 'failed': raise Exception(job.get('error')) time.sleep(10)