🎯 Zrozum podstawową koncepcję
MidJourney API symuluje interakcje z przyciskami Discorda. W przeciwieństwie do typowych REST API działa jak maszyna stanów, w której każda operacja zwraca nowe przyciski do kolejnego kroku.4 podstawowe API
| API | Cel | Kiedy używać |
|---|---|---|
POST /mj/submit/imagine | Generowanie obrazu z tekstu | Punkt startowy dla wszystkich workflow |
GET /mj/task/\{id\}/fetch | Sprawdzanie statusu zadania i pobieranie przycisków | Po każdym submit (odpytyj aż do zakończenia) |
POST /mj/submit/action | Kliknięcie przycisku (upscale, vary, zoom itd.) | Gdy chcesz wykonać operację na obrazie |
POST /mj/submit/modal | Przesłanie dodatkowych danych wejściowych | Tylko gdy status to MODAL |
📊 Pełny diagram workflow
🔑 Kluczowa koncepcja: przyciski i customId
Każde pomyślnie zakończone zadanie zwraca tablicębuttons. Każdy przycisk ma customId, którego używasz do wywołania kolejnej akcji.
Przykładowa odpowiedź z /mj/task/\{id\}/fetch:
customId NIE jest stałą wartością. Zmienia się dla każdego zadania. Zawsze pobieraj je z tablicy buttons.
📋 Referencja przycisków według etapu
Po IMAGINE (obraz 4-grid)
Te przyciski są zwracane, gdy początkowe generowanie obrazu zostanie zakończone:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Powiększenie pojedynczego obrazu | Pojedynczy obraz w wysokiej rozdzielczości |
| V1-V4 | MJ::JOB::variation::1::xxx | Wygenerowanie wariantów | Nowy 4-grid |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Wygenerowanie wszystkiego ponownie | Nowy 4-grid |
Po UPSCALE (pojedynczy obraz)
Po wykonaniu upscalingu uzyskujesz dostęp do narzędzi edycji:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Nie |
| Upscale (Creative) / Upscale (4x) | ❌ Nie |
| Vary (Subtle) 🪄 | ❌ Nie |
| Vary (Strong) 🪄 | ❌ Nie |
| Vary (Region) 🖌️ | ✅ Tak (maska) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Nie |
| Custom Zoom 🔍 | ✅ Tak (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Nie |
| Animate 🎞️ | ❌ Nie |
| 🔄 Reroll | ❌ Nie |
Uwaga: Etykiety przycisków i formaty⚠️ Przycisk Inpaint (Vary Region) pojawia się dopiero po Upscale!customIdmogą się różnić w zależności od wersji MJ określonej w prompt (np.--v 6.1vs--v 5.2). Zawsze odczytuj przyciski z odpowiedzi API.
⚡ Kompletny przykład: Generate & Upscale
Krok 1: Wyślij żądanie Imagine
Krok 2: Odpytuj status zadania
Krok 3: Kliknij U1, aby wykonać Upscale
Krok 4: Odpytaj nowe zadanie i pobierz wynik
⚠️ Kiedy wymagany jest Modal?
Gdy wywołasz/mj/submit/action, a status zadania zmieni się na MODAL zamiast SUCCESS, musisz wywołać /mj/submit/modal, aby przekazać dodatkowe dane wejściowe.
Potwierdzone operacje Modal
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (maska PNG) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (np. “your prompt —zoom 2”) |
🚀 Wybór trybu szybkości
Dodaj prefiks szybkości do ścieżki:| Tryb | Prefiks ścieżki | Przykład |
|---|---|---|
| Fast | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (domyślnie) | /mj/submit/imagine |
🔗 Inne punkty wejścia
Te API to niezależne punkty wejścia, które nie działają zgodnie z przepływem imagine → action:| API | Cel |
|---|---|
POST /mj/submit/blend | Połącz 2–5 obrazów w jeden |
POST /mj/submit/describe | Wygeneruj prompt na podstawie obrazu |
POST /mj/submit/video | Przekształć obraz w wideo |
POST /mj/submit/edits | Edytuj obraz za pomocą maski |
❓ Wskazówki dotyczące rozwiązywania problemów
Na podstawie projektu API i przepływu pracy, oto typowe problemy, które możesz napotkać:| Problem | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
| Nie można znaleźć przycisku Vary (Region) | Patrzysz na obraz w siatce 4 | Najpierw wykonaj upscale (kliknij U1-U4), a następnie sprawdź przyciski |
Status zadania utknął na MODAL | Operacja wymaga dodatkowych danych wejściowych | Wywołaj /mj/submit/modal z wymaganymi danymi |
customId nie działa | Używasz nieaktualnej lub zakodowanej na stałe wartości | Zawsze pobieraj aktualny customId z odpowiedzi /mj/task/\{id\}/fetch |
Pusta tablica buttons | Zadanie jest nadal w toku | Poczekaj na status: "SUCCESS" przed uzyskaniem dostępu do przycisków |