mj-v8.2-edit Schnittstelle
curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "mj-v8.2-edit",
"prompt": "Beautiful mountain scenery background",
"model_params": {
"task_id": "task-unified-xxx",
"image_number": 0,
"canvas": {
"width": 1024,
"height": 1024
},
"img_pos": {
"width": 512,
"height": 512,
"x": 256,
"y": 256
},
"speed": "fast"
}
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "mj-v8.2-edit",
"prompt": "Beautiful mountain scenery background",
"model_params": {
"task_id": "task-unified-xxx",
"image_number": 0,
"canvas": {
"width": 1024,
"height": 1024
},
"img_pos": {
"width": 512,
"height": 512,
"x": 256,
"y": 256
},
"speed": "fast"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'mj-v8.2-edit',
prompt: 'Beautiful mountain scenery background',
model_params: {
task_id: 'task-unified-xxx',
image_number: 0,
canvas: {width: 1024, height: 1024},
img_pos: {width: 512, height: 512, x: 256, y: 256},
speed: 'fast'
}
})
};
fetch('https://api.evolink.ai/v1/images/generations', 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.evolink.ai/v1/images/generations",
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([
'model' => 'mj-v8.2-edit',
'prompt' => 'Beautiful mountain scenery background',
'model_params' => [
'task_id' => 'task-unified-xxx',
'image_number' => 0,
'canvas' => [
'width' => 1024,
'height' => 1024
],
'img_pos' => [
'width' => 512,
'height' => 512,
'x' => 256,
'y' => 256
],
'speed' => 'fast'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.evolink.ai/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"mj-v8.2-edit\",\n \"prompt\": \"Beautiful mountain scenery background\",\n \"model_params\": {\n \"task_id\": \"task-unified-xxx\",\n \"image_number\": 0,\n \"canvas\": {\n \"width\": 1024,\n \"height\": 1024\n },\n \"img_pos\": {\n \"width\": 512,\n \"height\": 512,\n \"x\": 256,\n \"y\": 256\n },\n \"speed\": \"fast\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.evolink.ai/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"mj-v8.2-edit\",\n \"prompt\": \"Beautiful mountain scenery background\",\n \"model_params\": {\n \"task_id\": \"task-unified-xxx\",\n \"image_number\": 0,\n \"canvas\": {\n \"width\": 1024,\n \"height\": 1024\n },\n \"img_pos\": {\n \"width\": 512,\n \"height\": 512,\n \"x\": 256,\n \"y\": 256\n },\n \"speed\": \"fast\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"mj-v8.2-edit\",\n \"prompt\": \"Beautiful mountain scenery background\",\n \"model_params\": {\n \"task_id\": \"task-unified-xxx\",\n \"image_number\": 0,\n \"canvas\": {\n \"width\": 1024,\n \"height\": 1024\n },\n \"img_pos\": {\n \"width\": 512,\n \"height\": 512,\n \"x\": 256,\n \"y\": 256\n },\n \"speed\": \"fast\"\n }\n}"
response = http.request(request)
puts response.read_body{
"created": 1757165031,
"id": "task-unified-1757165031-mjv82",
"model": "<string>",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"estimated_time": 45
},
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 1.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: mj-v8.2-edit",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Midjourney V8.2
Midjourney V8.2 Leinwand-Bearbeitung
- Das Bild einer bestehenden Aufgabe auf der Leinwand neu positionieren und leere Bereiche mit KI füllen
- Geeignet für die Anpassung der Komposition, das Erweitern von Szenen (Outpaint), das Neuzeichnen usw.
- Hinweis: Abgeleitete Aufgaben auf Basis von V8.2-Bildern (Variation / Remix / Bearbeiten) werden upstream von der V7-Engine gerendert (laut Dokumentation des Upstream-Kanals); das Ergebnis kann sich stilistisch leicht vom Quellbild unterscheiden. Die Abrechnung bleibt unverändert
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene Aufgaben-ID zum Abfragen des Status
POST
/
v1
/
images
/
generations
mj-v8.2-edit Schnittstelle
curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "mj-v8.2-edit",
"prompt": "Beautiful mountain scenery background",
"model_params": {
"task_id": "task-unified-xxx",
"image_number": 0,
"canvas": {
"width": 1024,
"height": 1024
},
"img_pos": {
"width": 512,
"height": 512,
"x": 256,
"y": 256
},
"speed": "fast"
}
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "mj-v8.2-edit",
"prompt": "Beautiful mountain scenery background",
"model_params": {
"task_id": "task-unified-xxx",
"image_number": 0,
"canvas": {
"width": 1024,
"height": 1024
},
"img_pos": {
"width": 512,
"height": 512,
"x": 256,
"y": 256
},
"speed": "fast"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'mj-v8.2-edit',
prompt: 'Beautiful mountain scenery background',
model_params: {
task_id: 'task-unified-xxx',
image_number: 0,
canvas: {width: 1024, height: 1024},
img_pos: {width: 512, height: 512, x: 256, y: 256},
speed: 'fast'
}
})
};
fetch('https://api.evolink.ai/v1/images/generations', 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.evolink.ai/v1/images/generations",
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([
'model' => 'mj-v8.2-edit',
'prompt' => 'Beautiful mountain scenery background',
'model_params' => [
'task_id' => 'task-unified-xxx',
'image_number' => 0,
'canvas' => [
'width' => 1024,
'height' => 1024
],
'img_pos' => [
'width' => 512,
'height' => 512,
'x' => 256,
'y' => 256
],
'speed' => 'fast'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.evolink.ai/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"mj-v8.2-edit\",\n \"prompt\": \"Beautiful mountain scenery background\",\n \"model_params\": {\n \"task_id\": \"task-unified-xxx\",\n \"image_number\": 0,\n \"canvas\": {\n \"width\": 1024,\n \"height\": 1024\n },\n \"img_pos\": {\n \"width\": 512,\n \"height\": 512,\n \"x\": 256,\n \"y\": 256\n },\n \"speed\": \"fast\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.evolink.ai/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"mj-v8.2-edit\",\n \"prompt\": \"Beautiful mountain scenery background\",\n \"model_params\": {\n \"task_id\": \"task-unified-xxx\",\n \"image_number\": 0,\n \"canvas\": {\n \"width\": 1024,\n \"height\": 1024\n },\n \"img_pos\": {\n \"width\": 512,\n \"height\": 512,\n \"x\": 256,\n \"y\": 256\n },\n \"speed\": \"fast\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"mj-v8.2-edit\",\n \"prompt\": \"Beautiful mountain scenery background\",\n \"model_params\": {\n \"task_id\": \"task-unified-xxx\",\n \"image_number\": 0,\n \"canvas\": {\n \"width\": 1024,\n \"height\": 1024\n },\n \"img_pos\": {\n \"width\": 512,\n \"height\": 512,\n \"x\": 256,\n \"y\": 256\n },\n \"speed\": \"fast\"\n }\n}"
response = http.request(request)
puts response.read_body{
"created": 1757165031,
"id": "task-unified-1757165031-mjv82",
"model": "<string>",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"estimated_time": 45
},
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 1.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: mj-v8.2-edit",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Midjourney verfügt über ein integriertes Moderationssystem. Jedes Bild wird einzeln geprüft: Gefilterte Bilder erscheinen nicht in den Ergebnissen, die übrigen Bilder werden normal geliefert, sodass Sie weniger Bilder als üblich erhalten können. Besteht mindestens ein Bild die Prüfung, ist die Aufgabe
completed und wird normal abgerechnet; werden alle Bilder gefiltert, endet die Aufgabe als failed und die reservierten Credits werden vollständig erstattet. Bitte achten Sie darauf, dass Ihre Prompts und Referenzbilder den Inhaltsrichtlinien entsprechen.Autorisierungen
Alle Endpunkte erfordern Bearer Token Authentifizierung
API Key erhalten:
Besuchen Sie die API Key Verwaltungsseite um Ihren API Key zu erhalten
Zum Request-Header hinzufügen:
Authorization: Bearer YOUR_API_KEY
Body
application/json
Modellname
Verfügbare Optionen:
mj-v8.2-edit Beispiel:
"mj-v8.2-edit"
Beschreiben Sie den gewünschten Füllinhalt
Maximum string length:
8100Beispiel:
"Beautiful mountain scenery background"
Parameter der Leinwand-Bearbeitung
Show child attributes
Show child attributes
HTTPS-Callback-URL für Aufgabenabschluss
Callback-Zeitpunkt:
- Ausgelöst bei Abschluss, Fehler oder Abbruch der Aufgabe
- Nach Abrechnungsbestätigung gesendet
Sicherheitsbeschränkungen:
- Nur HTTPS-Protokoll
- Callbacks an private IP-Adressen verboten (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x usw.)
- URL-Länge darf
2048Zeichen nicht überschreiten
Callback-Mechanismus:
- Timeout:
10Sekunden - Bis zu
3Wiederholungen nach Fehler (Wiederholungen nach1s/2s/4s nach Fehler) - Das Format des Callback-Antwortkörpers entspricht dem Aufgabenabfrage-Endpunkt
- Ein 2xx-Statuscode gilt als erfolgreich; andere Statuscodes lösen Wiederholungen aus
Beispiel:
"https://your-domain.com/webhooks/image-task-completed"
Antwort
Bildgenerierungsaufgabe erfolgreich erstellt
Zeitstempel der Aufgabenerstellung
Beispiel:
1757165031
Aufgaben-ID
Beispiel:
"task-unified-1757165031-mjv82"
Tatsächlich verwendeter Modellname
Aufgabenobjekttyp
Verfügbare Optionen:
image.generation.task Aufgabenfortschritt in Prozent (0-100)
Erforderlicher Bereich:
0 <= x <= 100Beispiel:
0
Aufgabenstatus
Verfügbare Optionen:
pending, processing, completed, failed Beispiel:
"pending"
Show child attributes
Show child attributes
Verfügbare Optionen:
text, image, audio, video Beispiel:
"image"
Show child attributes
Show child attributes