Upscale generated images
October 3, 2025
Table of contents
This endpoint upscales previously generated images to higher resolution.
https://api.useapi.net/v1/ltxstudio/images/upscale
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API token
is required, see Setup useapi.net for details.
Request Body
{
"jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:image"
}
email
is optional when only one account configured. However, if you have multiple accounts configured, this parameter becomes required.jobId
is required, the job ID from a previously completed image generation job. Use thejobId
field from POST images/edit or POST images/create response.pollForResult
is optional, number of polling attempts to wait for completion (each attempt waits 3 seconds, up to 60 seconds total max) before sending job to the scheduler. For example,pollForResult: 5
will poll every 3 seconds for up to 15 seconds total.
Supported values:1
-20
.
Default: immediate return withjobId
.maxJobs
is optional, override the default maximum number of concurrent jobs.replyUrl
is optional, webhook URL for job completion notifications. See GET assets/jobId
for response model.replyRef
is optional, custom reference for webhook identification.
Responses
-
{ "jobId": "email:[email protected]:8b45c932-0fe1-316f-e32c-5bcd7g8940f8-type:image", "generationId": "gen_xyz789abc012" }
-
200 OK (pollForResult completed)
{ "status": { "type": "completed", "progress": 100, "artifact": { "assetUrl": "https://storage.googleapis.com/lt-infinity-prd/artifacts/vertex-ai/…", "expirationDateString": "1748919477350", "asset": { "type": "artifact", "fileId": "asset:4c29…-type:image/png", "mimeType": "image/png", "artifactSubtype": "vertex-ai" } } }, "jobId": "email:[email protected]:8b45c932-0fe1-316f-e32c-5bcd7g8940f8-type:image", "replyRef": "custom-reference-123", "replyUrl": "https://webhook.example.com/ltx-callback", "code": 200 }
-
{ "error": "Error message", "code": 400 }
-
{ "error": "Unauthorized", "code": 401 }
-
{ "error": "Insufficient credits", "code": 402 }
Model
Use GET assets/jobId
to retrieve job status and results if they were not provided with the response.
{ // TypeScript, all fields are optional
status: {
type: 'active' | 'completed' | 'failed'
progress?: number
message?: string
artifact?: {
assetUrl: string
expirationDateString: string
asset: {
type: string
fileId: string
mimeType: string
artifactSubtype: string
}
}
}
jobId?: string
generationId?: string
replyRef?: string
replyUrl?: string
code?: number
}
Examples
-
curl "https://api.useapi.net/v1/ltxstudio/images/upscale" \ -H "Authorization: Bearer …" \ -H "Content-Type: application/json" \ -d '{ "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:image", "pollForResult": 10 }'
-
const token = "API token"; const apiUrl = "https://api.useapi.net/v1/ltxstudio/images/upscale"; const response = await fetch(apiUrl, { method: "POST", headers: { "Authorization": `Bearer ${token}`, "Content-Type": "application/json", }, body: JSON.stringify({ "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:image", "pollForResult": 10 }) }); const result = await response.json(); console.log("response", {response, result});
-
import requests token = "API token" apiUrl = "https://api.useapi.net/v1/ltxstudio/images/upscale" headers = { "Authorization" : f"Bearer {token}", "Content-Type": "application/json" } data = { "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:image", "pollForResult": 10 } response = requests.post(apiUrl, headers=headers, json=data) print(response, response.json())