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

# Midjourney API

>  - Midjourney Text-zu-Bild (Imagine) / bildgesteuerte Generierung
- Asynchroner Aufgabenmodus: Nach Einreichung erhalten Sie eine task_id
- Neue Routen injizieren automatisch model=midjourney und unterstützen native MJ-Parameter, strukturierte Body-Felder und metadata 

<Note>
  **Base URL:** `https://api.apimart.ai`

  **Auth:** `Authorization: Bearer <token>`

  Die neuen `/v1/midjourney/...`-Routen injizieren `model=midjourney` automatisch; Sie müssen `model` im Request-Body nicht angeben.
</Note>

## Schnellstart

```bash theme={null}
# 1. Imagine-Auftrag einreichen
curl -X POST https://api.apimart.ai/v1/midjourney/generations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "a cute cat, watercolor style --ar 16:9"}'

# 2. Über die einheitliche Task-API pollen, bis status=completed
curl https://api.apimart.ai/v1/tasks/task_01JWXXXX \
  -H "Authorization: Bearer <token>"

# 3. Bild 1 hochskalieren
curl -X POST https://api.apimart.ai/v1/midjourney/generations/upscale \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"task_id": "task_01JWXXXX", "index": 1}'
```

## API-Übersicht

Die vollständigen Felder, Beispiele und Hinweise jeder Funktion finden Sie auf der jeweiligen Unterseite.

| Funktion                   | Pfad                                                             | Doku                               |
| -------------------------- | ---------------------------------------------------------------- | ---------------------------------- |
| Text-zu-Bild (Standard)    | `POST /v1/midjourney/generations`                                | [Imagine](./imagine)               |
| Text-zu-Bild (explizit)    | `POST /v1/midjourney/generations/imagine`                        | [Imagine](./imagine)               |
| Mehrbild-Blend             | `POST /v1/midjourney/generations/blend`                          | [Blend](./blend)                   |
| Bild zu Text               | `POST /v1/midjourney/generations/describe`                       | [Describe](./describe)             |
| Bildbearbeitung            | `POST /v1/midjourney/generations/edits`                          | [Edits](./edits)                   |
| Kachel hochskalieren       | `POST /v1/midjourney/generations/upscale`                        | [Upscale](./upscale)               |
| Variation                  | `POST /v1/midjourney/generations/variation`                      | [Variation](./variation)           |
| Starke Variation           | `POST /v1/midjourney/generations/high-variation`                 | [High Variation](./high-variation) |
| Schwache Variation         | `POST /v1/midjourney/generations/low-variation`                  | [Low Variation](./low-variation)   |
| Neu generieren             | `POST /v1/midjourney/generations/reroll`                         | [Reroll](./reroll)                 |
| Zoom Out                   | `POST /v1/midjourney/generations/zoom`                           | [Zoom](./zoom)                     |
| Pan                        | `POST /v1/midjourney/generations/pan`                            | [Pan](./pan)                       |
| Inpaint                    | `POST /v1/midjourney/generations/inpaint`                        | [Inpaint](./inpaint)               |
| Modal (Parameter ergänzen) | `POST /v1/midjourney/generations/modal`                          | [Modal](./modal)                   |
| Bild-zu-Video              | `POST /v1/midjourney/generations/video`                          | [Video](./video)                   |
| Reshape (stark / schwach)  | `POST /v1/midjourney/generations/remix-strong` · `/remix-subtle` | [Remix](./remix)                   |
| Aufgabenabfrage            | `GET /v1/tasks/{task_id}` · `/v1/midjourney/{task_id}`           | [Aufgabe abfragen](./query)        |

Siehe auch: [Best Practices](./best-practices) (Polling / Retries / Fehlersuche) · [End-to-End-Workflows](./workflow) (curl-Walkthroughs + Client-Wrapper)

## End-to-End-Ablauf

```mermaid theme={null}
flowchart TB
  A["① POST /generations<br/>Imagine einreichen"] --> B["② GET /v1/tasks/{task_id}<br/>pollen bis completed"]
  B --> C["③ Falls Buttons benötigt<br/>GET /v1/midjourney/{task_id}"]
  C --> D1["/upscale"]
  C --> D2["/variation"]
  C --> D3["/reroll"]
  C --> D4["/zoom"]
  C --> D5["/inpaint<br/>(geht in MODAL)"]
  D5 --> M["/modal<br/>Maske + Prompt einreichen"]
```

## Fehler

### Fehler-Response-Format

```json theme={null}
{
  "error": {
    "type": "invalid_request_error",
    "message": "prompt is required"
  }
}
```

### Häufige Fehler

| HTTP | type                    | Bedeutung                  |
| ---- | ----------------------- | -------------------------- |
| 400  | `invalid_request_error` | Ungültige Parameter        |
| 401  | `authentication_error`  | Ungültiger API-Key         |
| 402  | `payment_required`      | Guthaben nicht ausreichend |
| 404  | `not_found`             | Aufgabe nicht gefunden     |
| 429  | `rate_limit_error`      | Rate-Limit erreicht        |
| 500  | `internal_error`        | Serverfehler               |

### Task-Fehler

Häufige `fail_reason`-Werte:

* `Banned prompt detected` — Verbotener Prompt-Inhalt
* `Task timeout` — Task-Timeout (Auto-Refund nach 30+ Minuten)
* `No available upstream` — Dienst vorübergehend nicht verfügbar, später erneut versuchen

## Abrechnung

Der einheitliche Modellname für neue MJ-Routen ist `midjourney`. Abrechnungs-Keys werden aus action, version und speed generiert. Übliche Match-Reihenfolge:

```text theme={null}
midjourney@<action>-<version>-<speed>
-> midjourney@<action>-<version>
-> midjourney@<action>-<speed>
-> midjourney@<action>
-> midjourney
```

| Action         | Abrechnungsname                               | Hinweise                                |
| -------------- | --------------------------------------------- | --------------------------------------- |
| Imagine        | `midjourney@imagine[-version][-speed]`        | Text-zu-Bild / bildgesteuert            |
| Blend          | `midjourney@blend[-speed]`                    | Mehrbild-Blend                          |
| Describe       | `midjourney@describe[-speed]`                 | Bild zu Text                            |
| Edits          | `midjourney@edits[-speed]`                    | Bildbearbeitung                         |
| Upscale        | `midjourney@upscale[-version][-speed]`        | Hochskalieren                           |
| Variation      | `midjourney@variation[-version][-speed]`      | Variation                               |
| High Variation | `midjourney@high_variation[-version][-speed]` | Starke Variation                        |
| Low Variation  | `midjourney@low_variation[-version][-speed]`  | Schwache Variation                      |
| Reroll         | `midjourney@reroll[-version][-speed]`         | Neu generieren                          |
| Zoom           | `midjourney@zoom[-version][-speed]`           | Zoom Out / Outpaint                     |
| Pan            | `midjourney@pan[-version][-speed]`            | Pan-Outpaint                            |
| Inpaint        | `midjourney@inpaint[-version][-speed]`        | Inpaint-Einstieg                        |
| Modal          | `midjourney@modal[-speed]`                    | Inpaint-Folgeparameter                  |
| Video          | `midjourney@video` / `midjourney@video-720p`  | Bild-zu-Video, berechnet × `batch_size` |
| Remix Strong   | `midjourney@remix_strong[-speed]`             | Starkes Reshape (nur v8.1 / v8.2)       |
| Remix Subtle   | `midjourney@remix_subtle[-speed]`             | Schwaches Reshape (nur v8.1 / v8.2)     |

Hinweise:

* `speed=relax` oder weggelassen ergibt kein Speed-Suffix; `fast` / `turbo` fügen das passende Suffix hinzu.
* Hauptversionen normalisieren zu `v8.2`, `v8.1`, `v7`, `v6.1`, `v5.2`, `v5.1`.
* `niji=true + version=7/6` normalisiert zu `niji7` / `niji6`.

> Siehe Konsolen-Preisliste. Fehlgeschlagene Aufträge werden vollständig erstattet.
