Zum Hauptinhalt springen
POST
/
v1
/
images
/
generations
mj-v8.1-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-v8.1-upload-paint",
  "prompt": "Beautiful mountain scenery background",
  "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-v8.1-upload-paint",
    "prompt": "Beautiful mountain scenery background",
    "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-v8.1-upload-paint',
    prompt: 'Beautiful mountain scenery background',
    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-v8.1-upload-paint',
    'prompt' => 'Beautiful mountain scenery background',
    '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-v8.1-upload-paint\",\n  \"prompt\": \"Beautiful mountain scenery background\",\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-v8.1-upload-paint\",\n  \"prompt\": \"Beautiful mountain scenery background\",\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-v8.1-upload-paint\",\n  \"prompt\": \"Beautiful mountain scenery background\",\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-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-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

Authorization
string
header
erforderlich

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
model
enum<string>
Standard:mj-v8.1-upload-paint
erforderlich

Modellname

Verfügbare Optionen:
mj-v8.1-upload-paint
Beispiel:

"mj-v8.1-upload-paint"

prompt
string
erforderlich

Bearbeitungs-Prompt

Beispiel:

"Beautiful mountain scenery background"

image_urls
string<uri>[]
erforderlich

Eingabebild-URL (das erste wird verwendet)

Maximum array length: 1
Beispiel:
["https://example.com/photo.jpg"]
model_params
object
erforderlich

Erweiterte Bearbeitungsparameter

callback_url
string<uri>

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 2048 Zeichen nicht überschreiten

Callback-Mechanismus:

  • Timeout: 10 Sekunden
  • Bis zu 3 Wiederholungen nach Fehler (Wiederholungen nach 1s/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

created
integer

Zeitstempel der Aufgabenerstellung

Beispiel:

1757165031

id
string

Aufgaben-ID

Beispiel:

"task-unified-1757165031-mjv81"

model
string

Tatsächlich verwendeter Modellname

object
enum<string>

Aufgabenobjekttyp

Verfügbare Optionen:
image.generation.task
progress
integer

Aufgabenfortschritt in Prozent (0-100)

Erforderlicher Bereich: 0 <= x <= 100
Beispiel:

0

status
enum<string>

Aufgabenstatus

Verfügbare Optionen:
pending,
processing,
completed,
failed
Beispiel:

"pending"

task_info
object
type
enum<string>
Verfügbare Optionen:
text,
image,
audio,
video
Beispiel:

"image"

usage
object