> ## 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.

# Pixverse v6 Videogenerierung

>  - Pixverse v6 vereinheitlichtes Videogenerierungsmodell
- Unterstützt Text-zu-Video, Bild-zu-Video, Erst-/Letztbild-Übergang, Multi-Referenzbild-Fusion und Video-Verlängerung
- Unterstützt 360p/540p/720p/1080p sowie 1–15 Sekunden Videolänge
- Asynchrone Aufgaben-API: Nach dem Senden wird das Ergebnis per Task-ID abgefragt 

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/videos/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "pixverse-v6",
      "prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
      "size": "16:9",
      "resolution": "540p",
      "duration": 5
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.apimart.ai/v1/videos/generations"

  payload = {
      "model": "pixverse-v6",
      "prompt": "A cinematic shot of a corgi running through a sunflower field at golden hour",
      "size": "16:9",
      "resolution": "540p",
      "duration": 5
  }

  headers = {
      "Authorization": "Bearer <token>",
      "Content-Type": "application/json"
  }

  response = requests.post(url, json=payload, headers=headers)

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const url = "https://api.apimart.ai/v1/videos/generations";

  const payload = {
    model: "pixverse-v6",
    prompt: "A cinematic shot of a corgi running through a sunflower field at golden hour",
    size: "16:9",
    resolution: "540p",
    duration: 5
  };

  const headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
  };

  fetch(url, {
    method: "POST",
    headers: headers,
    body: JSON.stringify(payload)
  })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error("Error:", error));
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01JWXXXXXXXXXXXX"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "type": "invalid_request_error",
      "message": "invalid duration 20, allowed range: 1-15 seconds"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "Authentifizierung fehlgeschlagen, bitte API-Schlüssel prüfen",
      "type": "authentication_error"
    }
  }
  ```

  ```json 403 theme={null}
  {
    "error": {
      "code": 403,
      "message": "insufficient quota: balance=0, required=0.25",
      "type": "quota_not_enough"
    }
  }
  ```

  ```json 429 theme={null}
  {
    "error": {
      "code": 429,
      "message": "Zu viele Anfragen, bitte später erneut versuchen",
      "type": "rate_limit_error"
    }
  }
  ```
</ResponseExample>

## Authentifizierung

<ParamField header="Authorization" type="string" required>
  Alle Endpunkte erfordern eine Authentifizierung mit einem Bearer Token.

  API Key abrufen:

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

  Fügen Sie den folgenden Header zur Anfrage hinzu:

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Anfrageparameter

<ParamField body="model" type="string" required>
  Modellname für die Videogenerierung. Fest auf `pixverse-v6`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Beschreibung des Videoinhalts, bis zu 5000 Zeichen. In allen Modi erforderlich.
</ParamField>

<ParamField body="resolution" type="string" default="540p">
  Videoauflösungsstufe. Beeinflusst die Abrechnung direkt.

  * `360p`: SD
  * `540p`: Standard (Standard)
  * `720p`: HD
  * `1080p`: Full HD

  <Warning>
    Andere Auflösungswerte führen zu einem Parameterfehler.
  </Warning>
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Videolänge in Sekunden, Bereich `1–15`.

  <Warning>
    Der Erst-/Letztbild-Übergangsmodus unterstützt nur `5` oder `8` Sekunden.
  </Warning>
</ParamField>

<ParamField body="size" type="string" default="16:9">
  Seitenverhältnis des Videos. Wirkt nur in den Modi Text-zu-Video und Multi-Referenzbild-Fusion.

  * `16:9`: Querformat Breitbild (Standard)
  * `4:3`: Querformat 4:3
  * `1:1`: Quadrat
  * `3:4`: Hochformat 3:4
  * `9:16`: Hochformat
  * `2:3`: Hochformat 2:3
  * `3:2`: Querformat 3:2
  * `21:9`: Kino-Breitbild
</ParamField>

<ParamField body="seed" type="integer" default="0">
  Zufalls-Seed, Bereich `0–2147483647`. Gleiche Prompt + Seed reproduzieren ähnliche Ergebnisse.
</ParamField>

<ParamField body="negative_prompt" type="string">
  Negativer Prompt zum Ausschluss unerwünschter Inhalte. Bis zu 2048 Zeichen.
</ParamField>

<ParamField body="audio" type="boolean" default="false">
  Ob eine Tonspur erzeugt wird.

  * `true`: Tonspur erzeugen (erhöht den Abrechnungspreis)
  * `false`: Keine Tonspur (Standard)
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  Ob ein Wasserzeichen unten rechts hinzugefügt wird.

  * `true`: Wasserzeichen hinzufügen
  * `false`: Kein Wasserzeichen (Standard)
</ParamField>

<ParamField body="motion_mode" type="string">
  Bewegungsmodus.

  * `normal`: Standardmodus (`pixverse-v6` unterstützt nur diesen Wert)

  <Warning>
    `fast` ist nur für ältere Modelle gedacht und wird vom Upstream für `pixverse-v6` abgelehnt.
  </Warning>
</ParamField>

<ParamField body="generate_multi_clip_switch" type="boolean" default="false">
  Ob ein zusammenhängendes Video aus mehreren Clips erzeugt wird. Nur in den Modi Text-zu-Video und Bild-zu-Video unterstützt.

  * `true`: Multi-Clip-Video erzeugen
  * `false`: Einzelclip (Standard)
</ParamField>

<ParamField body="image_urls" type="array<url>">
  URL-Array der Eingabebilder für Bild-zu-Video. Es wird nur das erste Bild verwendet.

  Bilder müssen öffentlich zugängliche HTTP/HTTPS-URLs sein.
</ParamField>

<ParamField body="first_frame_image" type="url">
  URL des ersten Frames im Übergangsmodus. Muss zusammen mit `last_frame_image` übergeben werden.
</ParamField>

<ParamField body="last_frame_image" type="url">
  URL des letzten Frames im Übergangsmodus. Muss zusammen mit `first_frame_image` übergeben werden.
</ParamField>

<ParamField body="img_references" type="array<url>">
  URL-Array der Referenzbilder für den Multi-Referenzbild-Fusionsmodus. Unterstützt 1–7 Bilder.

  Die Übergabe dieses Feldes löst den Multi-Referenzbild-Fusionsmodus aus.
</ParamField>

<ParamField body="extend_from_task_id" type="string">
  ID der Quellaufgabe für die Video-Verlängerung. Die Übergabe dieses Feldes löst den Verlängerungsmodus aus.

  Die Quellaufgabe muss dem aktuellen Nutzer gehören, das Modell `pixverse-v6` haben und im Status `completed` sein.
</ParamField>

## Generierungsmodi

Der Adapter wählt anhand der Anfragefelder automatisch den entsprechenden Modus. Es wird nach Priorität abgeglichen, der erste Treffer gewinnt.

| Modus                     | Auslöser                                             | Beschreibung                                          |
| ------------------------- | ---------------------------------------------------- | ----------------------------------------------------- |
| Text-zu-Video             | Keine Bild- oder Verlängerungsfelder                 | Video aus `prompt` erzeugen                           |
| Bild-zu-Video             | `image_urls` mit einem Bild                          | Erstes Bild als Eingabe verwenden                     |
| Erst-/Letztbild-Übergang  | `first_frame_image` und `last_frame_image` gemeinsam | Glatten Übergang zwischen zwei Frames erzeugen        |
| Multi-Referenzbild-Fusion | `img_references`-Array übergeben                     | 1–7 Referenzbilder zu einem Video fusionieren         |
| Video-Verlängerung        | `extend_from_task_id` übergeben                      | Aus einer abgeschlossenen Pixverse-Aufgabe fortsetzen |

<Warning>
  Alle Bildeingaben akzeptieren nur öffentlich zugängliche HTTP/HTTPS-URLs. base64 oder Data URI werden nicht unterstützt. Wenn nur lokale Bilder vorhanden sind, laden Sie sie zuerst in einen Object Storage hoch und übergeben Sie die URL.
</Warning>

## Parameterregeln

| Beschränkung              | Beschreibung                                                                                              |
| ------------------------- | --------------------------------------------------------------------------------------------------------- |
| Videolänge                | `1 ≤ duration ≤ 15` Sekunden; Übergangsmodus nur `5` oder `8` Sekunden                                    |
| Auflösung                 | Nur `360p`, `540p`, `720p`, `1080p` unterstützt                                                           |
| Seitenverhältnis          | `size` wirkt nur in den Modi Text-zu-Video und Multi-Referenzbild-Fusion                                  |
| Promptlänge               | `prompt` bis 5000 Zeichen, `negative_prompt` bis 2048 Zeichen                                             |
| Bild-zu-Video             | `image_urls` verwendet nur das erste Bild                                                                 |
| Übergang                  | `first_frame_image` und `last_frame_image` müssen paarweise übergeben werden                              |
| Bewegungsmodus            | `pixverse-v6` unterstützt nur `normal`                                                                    |
| Multi-Referenzbild-Fusion | `img_references` unterstützt 1–7 Bilder                                                                   |
| Video-Verlängerung        | `extend_from_task_id` muss auf eine `completed`-Aufgabe von `pixverse-v6` des aktuellen Nutzers verweisen |

## Antwort

<ResponseField name="code" type="integer">
  Antwort-Statuscode. Bei Erfolg `200`.
</ResponseField>

<ResponseField name="data" type="array">
  Zurückgegebenes Aufgaben-Array.

  <Expandable title="Array-Element">
    <ResponseField name="status" type="string">
      Initialer Aufgabenstatus. Bei erfolgreicher Übermittlung `submitted`.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      Eindeutige Aufgaben-ID zum Abfragen von Status und Ergebnis.
    </ResponseField>
  </Expandable>
</ResponseField>

## Aufgabenergebnis abrufen

Die Videogenerierung ist eine asynchrone Aufgabe. Nach dem Senden wird `task_id` zurückgegeben. Verwenden Sie den Endpunkt [Aufgabenstatus abrufen](/de/api-reference/tasks/status), um Fortschritt und Ergebnis abzufragen.

```bash cURL theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01JWXXXXXXXXXXXX \
  --header 'Authorization: Bearer <token>'
```

Pollen Sie alle 5 Sekunden, bis der Status `completed` oder `failed` lautet.

### Beispiel: Erfolg

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
    "status": "completed",
    "progress": 100,
    "cost": 0.2,
    "credits_cost": 2,
    "created": 1779958948,
    "completed": 1779958999,
    "estimated_time": 100,
    "actual_time": 51,
    "result": {
      "videos": [
        {
          "url": ["https://upload.apimart.ai/f/video/xxxx.mp4"],
          "expires_at": 1780045399
        }
      ]
    }
  }
}
```

Die Video-URL liegt unter `data.result.videos[0].url[0]`. Das `url`-Feld ist selbst ein Array. Video-Links sind üblicherweise nach 24 Stunden abgelaufen — laden Sie sie rechtzeitig herunter oder transferieren Sie sie.

### Beispiel: Fehler

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KSPX48B8V1M6C2ZN0D0T4BKB",
    "status": "failed",
    "progress": 100,
    "cost": 0,
    "credits_cost": 0,
    "created": 1779958948,
    "completed": 1779958960,
    "error": {
      "code": "task_failed",
      "message": "pixverse error 400063: moderation failed",
      "type": "task_failed"
    }
  }
}
```

Bei Fehlern ist `cost` üblicherweise `0`. Die Fehlerursache lesen Sie aus `data.error.message`.

## Anwendungsfälle

### Fall 1: Text-zu-Video

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "A neon-lit alley in Tokyo at night, light rain, anamorphic lens flare",
  "size": "21:9",
  "resolution": "720p",
  "duration": 8,
  "seed": 42,
  "audio": true
}
```

### Fall 2: Bild-zu-Video

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "Camera slowly zooms in, gentle wind moves the leaves",
  "image_urls": ["https://example.com/first-frame.jpg"],
  "resolution": "540p",
  "duration": 5
}
```

### Fall 3: Erst-/Letztbild-Übergang

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "transform smoothly from a puppy to a cat",
  "first_frame_image": "https://example.com/puppy.jpg",
  "last_frame_image": "https://example.com/cat.jpg",
  "resolution": "540p",
  "duration": 5,
  "motion_mode": "normal"
}
```

### Fall 4: Multi-Referenzbild-Fusion

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "A girl wearing the outfit from image 2, holding the cat from image 3",
  "img_references": [
    "https://example.com/character.jpg",
    "https://example.com/outfit.jpg",
    "https://example.com/cat.jpg"
  ],
  "size": "9:16",
  "resolution": "720p",
  "duration": 5
}
```

### Fall 5: Video-Verlängerung

```json theme={null}
{
  "model": "pixverse-v6",
  "prompt": "the character now walks into a forest",
  "extend_from_task_id": "task_01JWXXXXXXXXXXXX",
  "resolution": "540p",
  "duration": 5
}
```
