> ## Documentation Index
> Fetch the complete documentation index at: https://evolink.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Midjourney V8.2 Upload-Bearbeitung

> - Bilder für die erweiterte Leinwandbearbeitung hochladen, mit Unterstützung für die Angabe von Maskenbereichen und Positionsanpassung
- Ähnlich wie mj-v8.2-edit, aber unabhängig von bestehenden Aufgaben, das Bild wird direkt übergeben
- Das Ergebnis einer Upload-Paint-Aufgabe kann nicht als Quelle (`task_id`) für Variation, Remix oder Edit verwendet werden; der Upstream erlaubt nur das Hochskalieren, das diese Route nicht bereitstellt
- Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene Aufgaben-ID zum [Abfragen des Status](/de/api-manual/task-management/get-task-detail)

<Note>
  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.
</Note>


## OpenAPI

````yaml de/api-manual/image-series/midjourney/mj-v8-2-upload-paint.json POST /v1/images/generations
openapi: 3.1.0
info:
  title: mj-v8.2-upload-paint Schnittstelle
  description: Midjourney V8.2 Erweiterte Bearbeitung Schnittstelle
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Produktionsumgebung
security:
  - bearerAuth: []
tags:
  - name: Bildgenerierung
    description: KI-Bildgenerierung Endpunkte
paths:
  /v1/images/generations:
    post:
      tags:
        - Bildgenerierung
      summary: mj-v8.2-upload-paint Schnittstelle
      description: >-
        - Bilder für die erweiterte Leinwandbearbeitung hochladen, mit
        Unterstützung für die Angabe von Maskenbereichen und Positionsanpassung

        - Ähnlich wie mj-v8.2-edit, aber unabhängig von bestehenden Aufgaben,
        das Bild wird direkt übergeben

        - Das Ergebnis einer Upload-Paint-Aufgabe kann nicht als Quelle
        (`task_id`) für Variation, Remix oder Edit verwendet werden; der
        Upstream erlaubt nur das Hochskalieren, das diese Route nicht
        bereitstellt

        - Asynchroner Verarbeitungsmodus, verwenden Sie die zurückgegebene
        Aufgaben-ID zum [Abfragen des
        Status](/de/api-manual/task-management/get-task-detail)
      operationId: createImageGeneration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageGenerationRequest'
            examples:
              upload_paint_example:
                summary: Erweiterte Bearbeitung
                value:
                  model: mj-v8.2-upload-paint
                  prompt: Beautiful mountain scenery background
                  image_urls:
                    - >-
                      https://cdn.evolink.ai/model-cards/midjourney-v8-2/midjourney-v8-2-og-v1.jpg
                  model_params:
                    mask:
                      areas:
                        - width: 1200
                          height: 630
                          points:
                            - 100
                            - 100
                            - 400
                            - 100
                            - 400
                            - 400
                            - 100
                            - 400
                    canvas:
                      width: 1200
                      height: 630
                    img_pos:
                      width: 1200
                      height: 630
                      x: 0
                      'y': 0
                    speed: fast
      responses:
        '200':
          description: Bildgenerierungsaufgabe erfolgreich erstellt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageGenerationResponse'
        '400':
          description: Ungültige Anfrageparameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_request
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: Nicht authentifiziert, ungültiges oder abgelaufenes Token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Unzureichendes Guthaben, bitte aufladen
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient quota. Please top up your account.
                  type: insufficient_quota
        '403':
          description: Zugriff verweigert
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: model_access_denied
                  message: 'Token does not have access to model: mj-v8.2-upload-paint'
                  type: invalid_request_error
        '429':
          description: Ratenlimit überschritten
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: rate_limit_exceeded
                  message: Too many requests, please try again later
                  type: rate_limit_error
        '500':
          description: Interner Serverfehler
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: internal_error
                  message: Internal server error
                  type: api_error
components:
  schemas:
    ImageGenerationRequest:
      type: object
      required:
        - model
        - prompt
        - image_urls
        - model_params
      properties:
        model:
          type: string
          description: Modellname
          enum:
            - mj-v8.2-upload-paint
          default: mj-v8.2-upload-paint
          example: mj-v8.2-upload-paint
        prompt:
          type: string
          description: Bearbeitungs-Prompt
          maxLength: 8100
          example: Beautiful mountain scenery background
        image_urls:
          type: array
          description: >-
            Eingabebild-URL (das erste wird verwendet). Öffentliche HTTP(S)-URL
            mit höchstens 1024 Zeichen; Formate .png, .gif, .webp, .jpg, .jpeg
          items:
            type: string
            format: uri
          maxItems: 1
          example:
            - >-
              https://cdn.evolink.ai/model-cards/midjourney-v8-2/midjourney-v8-2-og-v1.jpg
        model_params:
          type: object
          description: Erweiterte Bearbeitungsparameter
          required:
            - mask
            - canvas
            - img_pos
          properties:
            mask:
              type: object
              description: >-
                Zu übermalender Maskenbereich (Polygonkoordinaten oder
                Maskenbild)


                **Methode 1 · Polygonkoordinaten:**

                ```json

                { "areas": [{ "width": 100, "height": 100, "points": [10, 10,
                10, 100, 100, 100, 100, 10] }] }

                ```


                **Methode 2 · Maskenbild (schwarz-weiß, weiß = übermalen;
                gleiche Größe wie das Quellbild; URL oder Base64-Data-URI):**

                ```json

                { "url":
                "https://cdn.evolink.ai/model-cards/midjourney-v8-2/midjourney-v8-2-og-v1.jpg"
                }

                ```


                (Die URL oben ist ein Platzhalter – ersetzen Sie sie durch Ihr
                eigenes Schwarz-Weiß-Maskenbild.)
              properties:
                areas:
                  type: array
                  description: Liste der Polygonbereiche
                  items:
                    type: object
                    properties:
                      width:
                        type: integer
                        description: >-
                          Basisbreite in Pixeln des Quellbilds (Koordinatenraum
                          von `points`)
                      height:
                        type: integer
                        description: >-
                          Basishöhe in Pixeln des Quellbilds (Koordinatenraum
                          von `points`)
                      points:
                        type: array
                        description: >-
                          Polygon-Eckpunktkoordinaten (x1,y1,x2,y2,...) in
                          Pixeln des Quellbilds, im Uhrzeigersinn ab dem
                          Ursprung oben links
                        items:
                          type: integer
                url:
                  type: string
                  format: uri
                  description: >-
                    Maskenbild-URL oder Data-URI. Ein schwarz-weißes Binärbild
                    mit denselben Pixelabmessungen wie das Quellbild: **weiß =
                    neuzeichnen, schwarz = beibehalten**. Base64 wird als
                    Data-URI akzeptiert (`data:image/png;base64,...`). Verwenden
                    Sie keine PNG-Transparenz für die Maske: Transparente Pixel
                    werden als weiß (neuzeichnen) behandelt.
            canvas:
              type: object
              description: >-
                Leinwandgröße. Das Seitenverhältnis der Leinwand (width/height)
                muss mit dem Seitenverhältnis des hochgeladenen Bildes
                übereinstimmen, andernfalls schlägt die Aufgabe fehl (status:
                failed, Ausführungsfehler).
              required:
                - width
                - height
              properties:
                width:
                  type: integer
                  description: Leinwandbreite
                  example: 1200
                height:
                  type: integer
                  description: Leinwandhöhe
                  example: 630
            img_pos:
              type: object
              description: >-
                Position und Größe des Bildes innerhalb der Leinwand. Bild füllt
                die Leinwand aus (img Breite/Höhe = canvas Breite/Höhe) = reine
                Bearbeitung/Übermalung; Bild kleiner als die Leinwand =
                Außenerweiterung (outpaint, der umgebende leere Bereich wird
                anhand des Prompts generiert).
              required:
                - width
                - height
                - x
                - 'y'
              properties:
                width:
                  type: integer
                  description: Renderbreite
                  example: 1200
                height:
                  type: integer
                  description: Renderhöhe
                  example: 630
                x:
                  type: integer
                  description: Horizontaler Versatz oben-links
                  example: 0
                'y':
                  type: integer
                  description: Vertikaler Versatz oben-links
                  example: 0
            speed:
              type: string
              description: |-
                Geschwindigkeitsmodus

                - `fast`: Standardmodus (Standard), 1x
              enum:
                - fast
              default: fast
              example: fast
        callback_url:
          type: string
          description: >-
            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
            `1`s/`2`s/`4`s nach Fehler)

            - Das Format des Callback-Antwortkörpers entspricht dem
            Aufgabenabfrage-Endpunkt

            - Ein 2xx-Statuscode gilt als erfolgreich; andere Statuscodes lösen
            Wiederholungen aus
          format: uri
          example: https://your-domain.com/webhooks/image-task-completed
    ImageGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: Zeitstempel der Aufgabenerstellung
          example: 1757165031
        id:
          type: string
          description: Aufgaben-ID
          example: task-unified-1757165031-mjv82
        model:
          type: string
          description: Tatsächlich verwendeter Modellname
        object:
          type: string
          enum:
            - image.generation.task
          description: Aufgabenobjekttyp
        progress:
          type: integer
          description: Aufgabenfortschritt in Prozent (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Aufgabenstatus
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/TaskInfo'
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
          example: image
        usage:
          $ref: '#/components/schemas/Usage'
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Fehlercode-Bezeichner
            message:
              type: string
              description: Fehlerbeschreibung
            type:
              type: string
              description: Fehlertyp
    TaskInfo:
      type: object
      properties:
        estimated_time:
          type: integer
          description: Geschätzte Fertigstellungszeit (Sekunden)
          minimum: 0
          example: 45
    Usage:
      type: object
      properties:
        billing_rule:
          type: string
          enum:
            - per_call
            - per_token
            - per_second
          example: per_call
        credits_reserved:
          type: number
          description: Geschätzte verbrauchte Credits
          minimum: 0
          example: 1.8
        user_group:
          type: string
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ## Alle Endpunkte erfordern Bearer Token Authentifizierung ##


        **API Key erhalten:**


        Besuchen Sie die [API Key
        Verwaltungsseite](https://evolink.ai/dashboard/keys) um Ihren API Key zu
        erhalten


        **Zum Request-Header hinzufügen:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.