> ## 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 Integracja Opis

> Midjourney generation 集成指南 - XHuoAPI

Ten dokument przedstawi sposób integracji z Midjourney Edits API, które umożliwia edytowanie przesłanych obrazów za pomocą wprowadzonych słów kluczowych.

## Proces aplikacji

Aby korzystać z API, należy najpierw przejść do strony [Midjourney Edits API](https://api.xhuoapi.ai/documents/midjourney-edits) i złożyć wniosek o odpowiednią usługę. Po wejściu na stronę, kliknij przycisk „Acquire”, jak pokazano na obrazku:

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

Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować. Po zalogowaniu lub rejestracji zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę.

Podczas pierwszej aplikacji otrzymasz darmowy limit, który pozwala na korzystanie z tego API bez opłat.

## Podstawowe użycie

Najpierw zapoznaj się z podstawowym sposobem użycia, czyli wprowadzeniem słów kluczowych `prompt`, działania `action`, oraz linku do obrazu `image_url`, aby uzyskać przetworzony wynik. Najpierw musisz przekazać prostą wartość pola `action`, która wynosi `generate`, a szczegóły są następujące:

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

Można zauważyć, że ustawiliśmy nagłówki żądania, w tym:

* `accept`: format odpowiedzi, który chcesz otrzymać, tutaj wpisano `application/json`, czyli format JSON.
* `authorization`: klucz do wywołania API, który można wybrać z rozwijanej listy po złożeniu wniosku.

Dodatkowo ustawiono ciało żądania, które obejmuje:

* `mask`: można określić lokalizację maski obszaru obrazu do edycji i ponownego generowania.
* `split_images`: dzieli wygenerowany obraz na wiele obrazów, zwracając je przez pole sub\_image\_urls. Domyślnie jest to false.
* `action`: działanie związane z edycją obrazu, domyślnie to `generate`.
* `image_url`: link do obrazu, który ma być edytowany.
* `prompt`: słowa kluczowe.
* `mode`: tryb generacji, opcjonalnie `fast`/`relax`/`turbo`.
* `callback_url`: URL, na który mają być zwracane wyniki.

Po dokonaniu wyboru, można zauważyć, że po prawej stronie wygenerowano odpowiedni kod, jak pokazano na obrazku:

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

Kliknij przycisk „Try”, aby przeprowadzić test, jak pokazano na powyższym obrazku, a otrzymamy następujący wynik:

```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
}
```

Zwrócony wynik zawiera wiele pól, które są opisane poniżej:

* `success`, status zadania edycji obrazu.
* `task_id`, ID zadania edycji obrazu.
* `image_id`, ID obrazu w tym zadaniu edycji.
* `sub_image_urls`, wiele wyników obrazów z zadania generacji.
* `image_url`, link do wygenerowanego obrazu.
* `image_width`, szerokość wygenerowanego obrazu.
* `image_height`, wysokość wygenerowanego obrazu.
* `progress`, pole postępu zadania edycji obrazu.

Można zauważyć, że otrzymaliśmy zadowalające informacje o obrazie, wystarczy uzyskać wygenerowany obraz na podstawie adresu URL `image_url` w wyniku.

Dodatkowo, jeśli chcesz wygenerować odpowiedni kod do integracji, możesz go bezpośrednio skopiować, na przykład kod CURL wygląda następująco:

```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": "A cat sitting on a table",
  "split_images": true,
  "image_url": "https://cdn.xhuoapi.ai/jgo1cw.jpg",
  "action": "generate"
}'
```

## Asynchroniczne wywołanie zwrotne

Ponieważ czas generacji przez Midjourney Edits API jest stosunkowo długi, wynosi około 1-2 minut, jeśli API nie odpowiada przez dłuższy czas, żądanie HTTP będzie utrzymywać połączenie, co prowadzi do dodatkowego zużycia zasobów systemowych. Dlatego to API oferuje również wsparcie dla asynchronicznych wywołań zwrotnych.

Cały proces polega na tym, że klient podczas wysyłania żądania dodatkowo określa pole `callback_url`. Po wysłaniu żądania API natychmiast zwraca wynik, zawierający pole `task_id`, które reprezentuje aktualne ID zadania. Po zakończeniu zadania, wynik generacji wideo zostanie wysłany do określonego przez klienta `callback_url` w formie POST JSON, w tym również pole `task_id`, co pozwala na powiązanie wyniku zadania z ID.

Poniżej przedstawiamy przykład, aby zrozumieć, jak to działa.

Najpierw, wywołanie zwrotne Webhook to usługa, która może odbierać żądania HTTP, deweloperzy powinni zastąpić to URL swojego serwera HTTP. Dla wygody demonstracji użyjemy publicznej strony przykładowej Webhook [https://webhook.site/](https://webhook.site/), otwierając tę stronę, otrzymasz URL Webhook, jak pokazano na obrazku:

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

Skopiuj ten URL, aby użyć go jako Webhook, przykładowy URL to `https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f`.

Następnie możemy ustawić pole `callback_url` na powyższy URL Webhook, a także wypełnić odpowiednie parametry, szczegóły są pokazane na obrazku:

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

Klikając „Uruchom”, można zauważyć, że natychmiast otrzymujemy wynik, jak poniżej:

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

Po chwili możemy na stronie `https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f` zobaczyć wynik generacji wideo, jak pokazano na obrazku:

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

Treść jest następująca:

```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
}
```

Można zauważyć, że w wyniku znajduje się pole `task_id`, a pozostałe pola są podobne do powyższych, dzięki czemu można zrealizować powiązanie z zadaniem.

## Obsługa błędów

Podczas wywoływania API, jeśli wystąpi błąd, API zwróci odpowiedni kod błędu i informacje. Na przykład:

* `400 token_mismatched`: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
* `400 api_not_implemented`: Złe żądanie, prawdopodobnie z powodu brakujących lub nieprawidłowych parametrów.
* `401 invalid_token`: Nieautoryzowany, nieprawidłowy lub brakujący token autoryzacyjny.
* `429 too_many_requests`: Zbyt wiele żądań, przekroczono limit szybkości.
* `500 api_error`: Błąd wewnętrzny serwera, coś poszło nie tak na serwerze.

### Przykład odpowiedzi błędu

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

## Wnioski

Dzięki temu dokumentowi zrozumieliście, jak korzystać z API Midjourney Edits, które umożliwia edytowanie obrazów za pomocą wprowadzonych słów kluczowych. Mamy nadzieję, że ten dokument pomoże Wam lepiej zintegrować i korzystać z tego API. W razie jakichkolwiek pytań, prosimy o kontakt z naszym zespołem wsparcia technicznego.
