mj-v8.1-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.1-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.1-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.1-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.1-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.1-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.1-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.1-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-mjv81",
"model": "<string>",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"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.1-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.1
Midjourney V8.1 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.
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene Aufgaben-ID zum Abfragen des Status
POST
/
v1
/
images
/
generations
mj-v8.1-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.1-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.1-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.1-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.1-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.1-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.1-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.1-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-mjv81",
"model": "<string>",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"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.1-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. Wenn einige generierte Bilder durch die Moderation gefiltert werden, können die für diese Anfrage verbrauchten Credits nicht erstattet werden. Bitte achten Sie darauf, dass Ihre Prompts 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.1-edit Beispiel:
"mj-v8.1-edit"
Beschreiben Sie den gewünschten Füllinhalt
Maximum string length:
1024Beispiel:
"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-mjv81"
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