curl --request POST \
--url https://api.legnext.ai/api/v1/variation \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>",
"remixPrompt": "<string>"
}
'import requests
url = "https://api.legnext.ai/api/v1/variation"
payload = {
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>",
"remixPrompt": "<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>',
remixPrompt: '<string>'
})
};
fetch('https://api.legnext.ai/api/v1/variation', 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/variation",
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>',
'remixPrompt' => '<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/variation"
payload := strings.NewReader("{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\",\n \"remixPrompt\": \"<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/variation")
.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 \"remixPrompt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.legnext.ai/api/v1/variation")
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 \"remixPrompt\": \"<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"
}Variation
Create subtle or strong variations of one image in a completed grid.
curl --request POST \
--url https://api.legnext.ai/api/v1/variation \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>",
"remixPrompt": "<string>"
}
'import requests
url = "https://api.legnext.ai/api/v1/variation"
payload = {
"imageNo": 1,
"jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"callback": "<string>",
"remixPrompt": "<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>',
remixPrompt: '<string>'
})
};
fetch('https://api.legnext.ai/api/v1/variation', 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/variation",
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>',
'remixPrompt' => '<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/variation"
payload := strings.NewReader("{\n \"imageNo\": 1,\n \"jobId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"callback\": \"<string>\",\n \"remixPrompt\": \"<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/variation")
.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 \"remixPrompt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.legnext.ai/api/v1/variation")
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 \"remixPrompt\": \"<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 and the zero-based
imageNo of the image to vary. The response is a new asynchronous task.
Use the parent’s available_actions as guidance, but handle a 400 rejection:
the field is not a guarantee that every provider can perform the action on that
source image.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).
Variation intensity: 0 = subtle, 1 = strong.
0, 1 Optional webhook URL. When set, the completed TaskResponse is POSTed to this URL; when empty, poll GET /v1/job/{job_id}.
Optional prompt guiding the variation (1-8192 characters when provided).
1 - 8192Response
Variation 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