mj-v7-upload-paint Schnittstelle
curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "mj-v7-upload-paint",
"prompt": "Schoene Berglandschaft",
"image_urls": [
"https://example.com/photo.jpg"
],
"model_params": {
"mask": {
"areas": [
{
"width": 100,
"height": 100,
"points": [
10,
10,
10,
100,
100,
100,
100,
10
]
}
]
},
"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-v7-upload-paint",
"prompt": "Schoene Berglandschaft",
"image_urls": ["https://example.com/photo.jpg"],
"model_params": {
"mask": { "areas": [
{
"width": 100,
"height": 100,
"points": [10, 10, 10, 100, 100, 100, 100, 10]
}
] },
"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-v7-upload-paint',
prompt: 'Schoene Berglandschaft',
image_urls: ['https://example.com/photo.jpg'],
model_params: {
mask: {
areas: [{width: 100, height: 100, points: [10, 10, 10, 100, 100, 100, 100, 10]}]
},
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-v7-upload-paint',
'prompt' => 'Schoene Berglandschaft',
'image_urls' => [
'https://example.com/photo.jpg'
],
'model_params' => [
'mask' => [
'areas' => [
[
'width' => 100,
'height' => 100,
'points' => [
10,
10,
10,
100,
100,
100,
100,
10
]
]
]
],
'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-v7-upload-paint\",\n \"prompt\": \"Schoene Berglandschaft\",\n \"image_urls\": [\n \"https://example.com/photo.jpg\"\n ],\n \"model_params\": {\n \"mask\": {\n \"areas\": [\n {\n \"width\": 100,\n \"height\": 100,\n \"points\": [\n 10,\n 10,\n 10,\n 100,\n 100,\n 100,\n 100,\n 10\n ]\n }\n ]\n },\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-v7-upload-paint\",\n \"prompt\": \"Schoene Berglandschaft\",\n \"image_urls\": [\n \"https://example.com/photo.jpg\"\n ],\n \"model_params\": {\n \"mask\": {\n \"areas\": [\n {\n \"width\": 100,\n \"height\": 100,\n \"points\": [\n 10,\n 10,\n 10,\n 100,\n 100,\n 100,\n 100,\n 10\n ]\n }\n ]\n },\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-v7-upload-paint\",\n \"prompt\": \"Schoene Berglandschaft\",\n \"image_urls\": [\n \"https://example.com/photo.jpg\"\n ],\n \"model_params\": {\n \"mask\": {\n \"areas\": [\n {\n \"width\": 100,\n \"height\": 100,\n \"points\": [\n 10,\n 10,\n 10,\n 100,\n 100,\n 100,\n 100,\n 10\n ]\n }\n ]\n },\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-mjv7",
"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-v7-upload-paint",
"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 V7
Midjourney V7 Upload-Bearbeitung
- Bilder hochladen fuer erweiterte Leinwandbearbeitung mit Maskenbereich und Positionsanpassung
- Aehnlich wie mj-v7-edit, aber unabhaengig von bestehenden Aufgaben
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurueckgegebene Aufgaben-ID zum Abfragen
POST
/
v1
/
images
/
generations
mj-v7-upload-paint Schnittstelle
curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "mj-v7-upload-paint",
"prompt": "Schoene Berglandschaft",
"image_urls": [
"https://example.com/photo.jpg"
],
"model_params": {
"mask": {
"areas": [
{
"width": 100,
"height": 100,
"points": [
10,
10,
10,
100,
100,
100,
100,
10
]
}
]
},
"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-v7-upload-paint",
"prompt": "Schoene Berglandschaft",
"image_urls": ["https://example.com/photo.jpg"],
"model_params": {
"mask": { "areas": [
{
"width": 100,
"height": 100,
"points": [10, 10, 10, 100, 100, 100, 100, 10]
}
] },
"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-v7-upload-paint',
prompt: 'Schoene Berglandschaft',
image_urls: ['https://example.com/photo.jpg'],
model_params: {
mask: {
areas: [{width: 100, height: 100, points: [10, 10, 10, 100, 100, 100, 100, 10]}]
},
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-v7-upload-paint',
'prompt' => 'Schoene Berglandschaft',
'image_urls' => [
'https://example.com/photo.jpg'
],
'model_params' => [
'mask' => [
'areas' => [
[
'width' => 100,
'height' => 100,
'points' => [
10,
10,
10,
100,
100,
100,
100,
10
]
]
]
],
'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-v7-upload-paint\",\n \"prompt\": \"Schoene Berglandschaft\",\n \"image_urls\": [\n \"https://example.com/photo.jpg\"\n ],\n \"model_params\": {\n \"mask\": {\n \"areas\": [\n {\n \"width\": 100,\n \"height\": 100,\n \"points\": [\n 10,\n 10,\n 10,\n 100,\n 100,\n 100,\n 100,\n 10\n ]\n }\n ]\n },\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-v7-upload-paint\",\n \"prompt\": \"Schoene Berglandschaft\",\n \"image_urls\": [\n \"https://example.com/photo.jpg\"\n ],\n \"model_params\": {\n \"mask\": {\n \"areas\": [\n {\n \"width\": 100,\n \"height\": 100,\n \"points\": [\n 10,\n 10,\n 10,\n 100,\n 100,\n 100,\n 100,\n 10\n ]\n }\n ]\n },\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-v7-upload-paint\",\n \"prompt\": \"Schoene Berglandschaft\",\n \"image_urls\": [\n \"https://example.com/photo.jpg\"\n ],\n \"model_params\": {\n \"mask\": {\n \"areas\": [\n {\n \"width\": 100,\n \"height\": 100,\n \"points\": [\n 10,\n 10,\n 10,\n 100,\n 100,\n 100,\n 100,\n 10\n ]\n }\n ]\n },\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-mjv7",
"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-v7-upload-paint",
"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 hinzufuegen:
Authorization: Bearer YOUR_API_KEYBody
application/json
Modellname
Verfügbare Optionen:
mj-v7-upload-paint Beispiel:
"mj-v7-upload-paint"
Bearbeitungs-Prompt
Beispiel:
"Schoene Berglandschaft"
Eingabebild-URL (erstes wird verwendet)
Maximum array length:
1Beispiel:
["https://example.com/photo.jpg"]Erweiterte Bearbeitungsparameter
Show child attributes
Show child attributes
HTTPS-Callback-URL fuer Aufgabenabschluss
Callback-Zeitpunkt:
- Ausgeloest bei Abschluss, Fehler oder Abbruch der Aufgabe
- Nach Abrechnungsbestaetigung gesendet
Sicherheitsbeschraenkungen:
- Nur HTTPS-Protokoll
- Callbacks an private IPs verboten (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x usw.)
- URL-Laenge max
2048Zeichen
Callback-Mechanismus:
- Timeout:
10Sekunden - Bis zu
3Wiederholungen (nach1s/2s/4s) - Antwortformat entspricht der Aufgabenabfrage
- 2xx-Statuscode = erfolgreich; andere loesen 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-mjv7"
Tatsaechlich 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
⌘I