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

# Midjourney Edits API Integrationsanleitung

> Midjourney generation 集成指南 - XHuoAPI

Dieser Artikel beschreibt eine Integrationsanleitung für die Midjourney Edits API, die es ermöglicht, durch Eingabe von Eingabeaufforderungen Bilder zu bearbeiten und zu generieren.

## Antragsprozess

Um die API zu nutzen, müssen Sie zunächst auf die entsprechende Seite der [Midjourney Edits API](https://api.xhuoapi.ai/documents/midjourney-edits) gehen und den entsprechenden Dienst beantragen. Nach dem Betreten der Seite klicken Sie auf die Schaltfläche „Acquire“, wie im Bild gezeigt:

![](https://cdn.xhuoapi.ai/q6ytrc.png)

Wenn Sie noch nicht angemeldet oder registriert sind, werden Sie automatisch zur Anmeldeseite weitergeleitet, um sich zu registrieren und anzumelden. Nach der Anmeldung werden Sie automatisch zur aktuellen Seite zurückgeleitet.

Bei der ersten Beantragung gibt es ein kostenloses Kontingent, mit dem Sie die API kostenlos nutzen können.

## Grundlegende Nutzung

Zunächst sollten Sie die grundlegende Nutzung verstehen, indem Sie die Eingabeaufforderung `prompt`, die Generierungsaktion `action` und das Referenzbild `image_url` eingeben, um das bearbeitete Ergebnis zu erhalten. Zuerst müssen Sie ein einfaches `action`-Feld übergeben, dessen Wert `generate` ist. Die genauen Inhalte sind wie folgt:

<p>
  <img src="https://cdn.xhuoapi.ai/m44i6n.png" width="500" className="m-auto" />
</p>

Hier sehen wir, dass wir die Request-Header festgelegt haben, einschließlich:

* `accept`: In welchem Format Sie die Antwort erhalten möchten, hier eingetragen als `application/json`, also im JSON-Format.
* `authorization`: Der Schlüssel zur Nutzung der API, den Sie nach der Beantragung direkt auswählen können.

Zusätzlich haben wir den Request-Body festgelegt, einschließlich:

* `mask`: Sie können die Maskenposition des Bildbereichs angeben, um Bearbeitungen und Neugenerierungen durchzuführen.
* `split_images`: Teilt das generierte Bild in mehrere Bilder auf, die über das Feld sub\_image\_urls zurückgegeben werden. Standardmäßig ist es false.
* `action`: Die Aktion für die Bearbeitung des Bildgenerierungsauftrags, standardmäßig `generate`.
* `image_url`: Der Link zum Bild, das bearbeitet werden soll.
* `prompt`: Die Eingabeaufforderung.
* `mode`: Der Generierungsmodus, wahlweise `fast`/`relax`/`turbo`.
* `callback_url`: Die URL, an die die Ergebnisse zurückgerufen werden sollen.

Nach der Auswahl können Sie sehen, dass auf der rechten Seite auch der entsprechende Code generiert wurde, wie im Bild gezeigt:

<p>
  <img src="https://cdn.xhuoapi.ai/9wed3b.png" width="500" className="m-auto" />
</p>

Klicken Sie auf die Schaltfläche „Try“, um einen Test durchzuführen. Wie im obigen Bild gezeigt, haben wir folgendes Ergebnis erhalten:

```json theme={null}
{
  "sub_image_urls": [
    "https://cdn.midjourney.com/88e16dab-ef48-43a5-af73-bf24065287bc/0_0.png",
    "https://cdn.midjourney.com/88e16dab-ef48-43a5-af73-bf24065287bc/0_1.png",
    "https://cdn.midjourney.com/88e16dab-ef48-43a5-af73-bf24065287bc/0_2.png",
    "https://cdn.midjourney.com/88e16dab-ef48-43a5-af73-bf24065287bc/0_3.png"
  ],
  "image_url": "https://storage.fonedis.cc/attachments/1372468820912115716/1391371957878132849/cat_sitting_table_88e16dab-ef48-43a5-af73-bf24065287bc.png?ex=686ba79d&is=686a561d&hm=ad005d06f6673d6152456e04c3cbec39d062bd9df10448623fae27ddaf8b8a80&",
  "image_width": 960,
  "image_height": 1200,
  "raw_image_url": "https://storage.fonedis.cc/attachments/1372468820912115716/1391371957878132849/cat_sitting_table_88e16dab-ef48-43a5-af73-bf24065287bc.png?ex=686ba79d&is=686a561d&hm=ad005d06f6673d6152456e04c3cbec39d062bd9df10448623fae27ddaf8b8a80&",
  "raw_image_width": 960,
  "raw_image_height": 1200,
  "progress": 100,
  "image_id": "1391372193836826624",
  "task_id": "26c39859-f54a-4998-9e42-3da96eceee8c",
  "success": true
}
```

Die Rückgabe enthält mehrere Felder, die wie folgt beschrieben werden:

* `success`: Der Status des Bildbearbeitungs- und Generierungsauftrags.
* `task_id`: Die ID des Bildbearbeitungs- und Generierungsauftrags.
* `image_id`: Die ID des Bildes für diesen Bildbearbeitungsauftrag.
* `sub_image_urls`: Mehrere Bildresultate des Bildgenerierungsauftrags.
* `image_url`: Der Link zum generierten Bild.
* `image_width`: Die Breite des generierten Bildes.
* `image_height`: Die Höhe des generierten Bildes.
* `progress`: Das Fortschrittsfeld des Bildbearbeitungs- und Generierungsauftrags.

Wir haben die gewünschten Bildinformationen erhalten und müssen nur die generierte Bilddatei über die Bild-URL im Ergebnis abrufen.

Wenn Sie den entsprechenden Integrationscode generieren möchten, können Sie ihn direkt kopieren, zum Beispiel sieht der CURL-Code wie folgt aus:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/midjourney/edits' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "prompt": "Eine Katze, die auf einem Tisch sitzt",
  "split_images": true,
  "image_url": "https://cdn.xhuoapi.ai/jgo1cw.jpg",
  "action": "generate"
}'
```

## Asynchrone Rückrufe

Da die Generierungszeit der Midjourney Edits API relativ lang ist, etwa 1-2 Minuten, bleibt die HTTP-Anfrage bei längerer Nichtreaktion verbunden, was zu einem zusätzlichen Verbrauch von Systemressourcen führt. Daher bietet diese API auch Unterstützung für asynchrone Rückrufe.

Der gesamte Prozess ist: Wenn der Client die Anfrage stellt, gibt er zusätzlich ein `callback_url`-Feld an. Nach der API-Anfrage gibt die API sofort ein Ergebnis zurück, das ein `task_id`-Feld enthält, das die aktuelle Aufgaben-ID darstellt. Wenn die Aufgabe abgeschlossen ist, werden die Ergebnisse der Videoerstellung in Form von POST JSON an die vom Client angegebene `callback_url` gesendet, wobei auch das `task_id`-Feld enthalten ist, sodass die Aufgabenergebnisse über die ID verknüpft werden können.

Lassen Sie uns anhand eines Beispiels verstehen, wie dies konkret funktioniert.

Zunächst ist der Webhook-Rückruf ein Dienst, der HTTP-Anfragen empfangen kann. Entwickler sollten die URL ihres eigenen HTTP-Servers ersetzen. Zur Vereinfachung der Demonstration verwenden wir eine öffentliche Webhook-Beispielseite [https://webhook.site/](https://webhook.site/), auf der Sie eine Webhook-URL erhalten können, wie im Bild gezeigt:

![](https://cdn.xhuoapi.ai/hfrbzw.png)

Kopieren Sie diese URL, um sie als Webhook zu verwenden. Das Beispiel hier lautet `https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f`.

Anschließend können wir das Feld `callback_url` auf die oben genannte Webhook-URL setzen und die entsprechenden Parameter eingeben, wie im Bild gezeigt:

<p>
  <img src="https://cdn.xhuoapi.ai/q3fnhv.png" width="500" className="m-auto" />
</p>

Klicken Sie auf Ausführen, und Sie werden sofort ein Ergebnis erhalten, wie folgt:

```
{
  "task_id": "b8b7fdc2-628e-40dd-bc0c-671c3ddac9e9"
}
```

Nach kurzer Wartezeit können wir auf `https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f` die Ergebnisse der Videoerstellung beobachten, wie im Bild gezeigt:

<p>
  <img src="https://cdn.xhuoapi.ai/t8cupr.png" width="500" className="m-auto" />
</p>

Der Inhalt lautet wie folgt:

```json theme={null}
{
    "sub_image_urls": [
        "https://cdn.midjourney.com/f3638ed2-60f6-49dd-897a-6d68c15afb17/0_0.png",
        "https://cdn.midjourney.com/f3638ed2-60f6-49dd-897a-6d68c15afb17/0_1.png",
        "https://cdn.midjourney.com/f3638ed2-60f6-49dd-897a-6d68c15afb17/0_2.png",
        "https://cdn.midjourney.com/f3638ed2-60f6-49dd-897a-6d68c15afb17/0_3.png"
    ],
    "image_url": "https://storage.fonedis.cc/attachments/1372468820912115716/1391374307719905340/cat_sitting_table_f3638ed2-60f6-49dd-897a-6d68c15afb17.png?ex=686ba9cd&is=686a584d&hm=71543c21c38db8a50c7ebcf54bc5208ec349e8592ec9e332f778f74167000ced&",
    "image_width": 960,
    "image_height": 1200,
    "raw_image_url": "https://storage.fonedis.cc/attachments/1372468820912115716/1391374307719905340/cat_sitting_table_f3638ed2-60f6-49dd-897a-6d68c15afb17.png?ex=686ba9cd&is=686a584d&hm=71543c21c38db8a50c7ebcf54bc5208ec349e8592ec9e332f778f74167000ced&",
    "raw_image_width": 960,
    "raw_image_height": 1200,
    "progress": 100,
    "image_id": "1391374390892953600",
    "task_id": "b8b7fdc2-628e-40dd-bc0c-671c3ddac9e9",
    "success": true
}
```

Es kann gesehen werden, dass im Ergebnis ein `task_id`-Feld vorhanden ist, während die anderen Felder ähnlich wie im vorherigen Text sind. Über dieses Feld kann die Zuordnung der Aufgaben erfolgen.

## Fehlerbehandlung

Beim Aufruf der API, wenn ein Fehler auftritt, gibt die API den entsprechenden Fehlercode und die Informationen zurück. Zum Beispiel:

* `400 token_mismatched`: Ungültige Anfrage, möglicherweise aufgrund fehlender oder ungültiger Parameter.
* `400 api_not_implemented`: Ungültige Anfrage, möglicherweise aufgrund fehlender oder ungültiger Parameter.
* `401 invalid_token`: Unbefugt, ungültiges oder fehlendes Autorisierungstoken.
* `429 too_many_requests`: Zu viele Anfragen, Sie haben das Rate-Limit überschritten.
* `500 api_error`: Interner Serverfehler, etwas ist auf dem Server schiefgelaufen.

### Fehlerantwort Beispiel

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "Abruf fehlgeschlagen"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Fazit

Durch dieses Dokument haben Sie gelernt, wie Sie die Midjourney Edits API verwenden können, um Bilder durch Eingabe von Eingabeaufforderungen zu bearbeiten. Wir hoffen, dass dieses Dokument Ihnen hilft, die API besser zu integrieren und zu nutzen. Bei Fragen wenden Sie sich bitte jederzeit an unser technisches Support-Team.
