curl --request POST \
--url https://api.legnext.ai/api/v1/upscale \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>"
}
'import requests
url = "https://api.legnext.ai/api/v1/upscale"
payload = {
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
imageNo: 1,
jobId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
callback: '<string>'
})
};
fetch('https://api.legnext.ai/api/v1/upscale', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.legnext.ai/api/v1/upscale",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'imageNo' => 1,
'jobId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'callback' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.legnext.ai/api/v1/upscale"
payload := strings.NewReader("{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.legnext.ai/api/v1/upscale")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.legnext.ai/api/v1/upscale")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}Upscale
Upscale one image from a completed Midjourney grid.
curl --request POST \
--url https://api.legnext.ai/api/v1/upscale \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>"
}
'import requests
url = "https://api.legnext.ai/api/v1/upscale"
payload = {
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
imageNo: 1,
jobId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
callback: '<string>'
})
};
fetch('https://api.legnext.ai/api/v1/upscale', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.legnext.ai/api/v1/upscale",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'imageNo' => 1,
'jobId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'callback' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.legnext.ai/api/v1/upscale"
payload := strings.NewReader("{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.legnext.ai/api/v1/upscale")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.legnext.ai/api/v1/upscale")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}{
"config": {
"service_mode": "public",
"webhook_config": {
"endpoint": "<string>",
"secret": "<string>"
}
},
"detail": null,
"error": {
"code": 123,
"detail": "<unknown>",
"message": "<string>",
"raw_message": "<string>"
},
"input": {},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logs": [
"<string>"
],
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"usage": {
"consume": 123,
"frozen": 123,
"type": "credit"
}
},
"model": "midjourney",
"output": {
"image_url": "<string>",
"image_urls": [
"<string>"
],
"seed": "<string>",
"available_actions": {}
},
"status": "pending",
"task_type": "diffusion"
}jobId, the zero-based
imageNo, and a supported upscale type. The response is a new asynchronous
task.
Use the action metadata returned by the parent task to choose a supported
operation. This endpoint is the Midjourney grid upscale action; it is unrelated
to the suspended Enhancement API.Authorizations
API key from the Legnext dashboard. Authorization: Bearer <key> is accepted as an alternative.
Body
Index of the image in the parent task's grid (0-3, left-to-right, top-to-bottom).
0 <= x <= 3ID of the original task (the job_id returned when it was created).
Upscale mode: 0 = subtle, 1 = creative (v6/v6.1/niji6/v7). Values 2 (v5 2x) and 3 (v5 4x) are deprecated.
0, 1, 2, 3 Optional webhook URL. When set, the completed TaskResponse is POSTed to this URL; when empty, poll GET /v1/job/{job_id}.
Response
Upscale task accepted.
Show child attributes
Show child attributes
Reserved for future use; currently null in public API responses.
Show child attributes
Show child attributes
Echo of the task's input parameters (shape depends on task_type; mirrors the create-request body of the operation that created the task). Null in error responses.
Task UUID. Pass it to GET /v1/job/{job_id} to poll, or reference it as jobId in follow-up operations.
Operational log lines of the task (progress events, retries).
Timestamps and billing usage of the task (null in error responses).
Show child attributes
Show child attributes
Model family that executed the task.
midjourney Task result, present once status is completed (null before that). Image/video tasks return URLs; describe/shorten tasks return text prompts.
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
Lifecycle state. Terminal states: completed, failed. staged means the task is queued behind the account's concurrency limit; retry means it is being resubmitted after a transient provider error.
pending, staged, processing, retry, completed, failed Type of the task — the operation that created it.
diffusion, upscale, reroll, variation, inpaint, outpaint, pan, edit, remix, enhance, upload_paint, retexture, remove_background, shorten, describe, blend, video_diffusion, extend_video, video_upscale, enhance_upscale