# Seedance 2.0 (https://wanapi.app/de/docs/seedance-2-0)





Seedance 2.0 unterstützt Text, Start- und Endbilder sowie Bild-, Video- und Audioreferenzen mit Ausgabe in 480p, 720p, 1080p, 4K. Generiere bis zu 15 Sekunden pro Anfrage. [Modelldetails und Playground](/de/models/seedance-2-0).

## Verbindung mit Wan API herstellen [#connect-to-wan-api]

Verwende `https://api.wanapi.app` als API-Basis-URL. Erstelle in den [API-Schlüsseleinstellungen](/de/settings/apikeys) einen Schlüssel für die Modellfamilie **Seedance** und übermittle ihn als `Authorization: Bearer YOUR_API_KEY`. Bewahre Schlüssel auf deinem Server auf. Der Playground nutzt deine Website-Sitzung und belastet dasselbe Kontoguthaben; du musst keinen Schlüssel in den Browser einfügen.

Der Zugang erfordert ein freigeschaltetes Konto mit ausreichendem Guthaben. `GET /v1/models` listet die für deinen Schlüssel verfügbaren Modelle auf. Seedance-Modelle verwenden `POST /v1/videos`; wähle das Modell im JSON-Body.

| Einstellung     | Seedance 2.0                                                                   |
| --------------- | ------------------------------------------------------------------------------ |
| Modell-ID       | `bytedance/seedance-2.0`                                                       |
| `resolution`    | `480p`, `720p`, `1080p`, `4k`; Standard: `720p`.                               |
| `duration`      | 4–15 Ausgabesekunden oder `-1` für automatisch; Standard: `5`.                 |
| `aspectRatio`   | `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`; Standard: `adaptive`. |
| `generateAudio` | Standardmäßig `true`. `false` senkt den Tokentarif nicht.                      |
| Ausgabe         | Ein Video pro Anfrage, mit 24 fps.                                             |

Die [Anfragefelder](#request-fields) beschreiben alle 13 Felder auf oberster Ebene. Verwende die hier gezeigten Feldnamen, einschließlich `aspectRatio` und `generateAudio`.

## Eine Aufgabe mit Seedance 2.0 absenden [#submit-a-seedance-20-task]

Dies ist eine Text-zu-Video-Anfrage über vier Sekunden in 720p. Setze `WAN_API_KEY` auf dem Server auf deinen Seedance-Schlüssel. Sende einmal und speichere die zurückgegebene `id`.

```bash
curl https://api.wanapi.app/v1/videos \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance-2.0",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "720p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true
}'
```

## Eine Aufgabe von Seedance 2.0 abfragen [#query-a-seedance-20-task]

Speichere die zurückgegebene `id` als `TASK_ID` und frage dann mit demselben Schlüssel ab. Das Absenden liefert eine Aufgabenbestätigung; das Video ist nach Abschluss verfügbar. Beginne mit Abfragen im Abstand von fünf Sekunden; siehe [Aufgabenstatus und Downloads](#poll-and-download-the-video).

```bash
curl "https://api.wanapi.app/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $WAN_API_KEY"
```

## Seedance 2.0: Preise [#seedance-20-pricing]

Die Tarife sind in USD pro eine Million Videotokens angegeben. Eingabe- und Ausgabe-Videotokens bestimmen die endgültigen Kosten. Auflösung, Dauer und Referenzvideo-Eingaben beeinflussen den Verbrauch; verwende den passenden Tarif für Anfragen mit oder ohne Referenzvideo. Für Audio gibt es keine eigene Preisstufe.

<SeedanceModelPricing model="findSeedanceModel('seedance-2-0')" />

[Preise und Schätzungen für Seedance 2.0 ansehen](/de/models/seedance-2-0#pricing). Prüfe vor dem Absenden die Schätzung im [Playground](/de/models/seedance-2-0#playground).

## Anfragefelder [#request-fields]

Sende ein JSON-Objekt. `model` ist erforderlich, zusammen mit einem nicht leeren Prompt oder mindestens einer Medieneingabe. Andere Felder sind optional. Unbekannte Felder werden abgewiesen.

| Feld              | Typ                 | Vorgaben                                                                                                                                                                                                        |
| ----------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | Zeichenfolge        | Erforderlich: `bytedance/seedance-2.0`.                                                                                                                                                                         |
| `prompt`          | Zeichenfolge        | Textanweisungen; bei diesem Dienst bis zu 20.000 Zeichen. Ein Prompt oder eine Medieneingabe ist erforderlich.                                                                                                  |
| `image`           | URL oder URL-Objekt | URL des Startbilds oder ein Objekt mit `type: "url"`, `url` und optional `mediaType`. Verwende entweder `image` oder `frameImages`.                                                                             |
| `frameImages`     | Array               | Ein `first_frame` und optional ein `last_frame`. Jeder Eintrag enthält `frameType` und `image`; siehe Einzelbildbeispiel unten.                                                                                 |
| `inputReferences` | Array               | Bis zu 9 Bilder und 3 Videos. Jeder Eintrag enthält `type: "url"`, `url` und `mediaType`. Auch das URL-Format mit `data`/`mediaType` wird akzeptiert.                                                           |
| `aspectRatio`     | Zeichenfolge        | `adaptive` (Standard), `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`.                                                                                                                                             |
| `resolution`      | Zeichenfolge        | `480p`, `720p`, `1080p`, `4k`. Standard: `720p`. Akzeptiert auch `854x480`, `1280x720`, `1920x1080` und `3840x2160` als Auflösungsstufen; wähle die Form mit `aspectRatio`.                                     |
| `duration`        | Ganzzahl            | 4–15 Ausgabesekunden oder `-1` für automatisch. Standard: `5`.                                                                                                                                                  |
| `fps`             | Ganzzahl            | Fest auf `24`; weglassen oder `24` senden.                                                                                                                                                                      |
| `seed`            | Ganzzahl            | Optional; `-1` bis `2147483647`. Keine Garantie für Wiederholbarkeit. Gib nicht zusätzlich `providerOptions.bytedance.seed` an.                                                                                 |
| `generateAudio`   | Boolescher Wert     | Ton generieren. Standard: `true`; Deaktivieren ändert den Tokentarif nicht.                                                                                                                                     |
| `n`               | Ganzzahl            | Fest auf `1`; ein Video pro Anfrage.                                                                                                                                                                            |
| `providerOptions` | Objekt              | Optionales `bytedance`-Objekt: `referenceAudio` (bis zu 3 HTTP(S)-URLs), `seed` (dieselben Grenzen wie `seed` auf oberster Ebene). `draft: true` wird nicht unterstützt. Unbekannte Optionen werden abgewiesen. |

### Eingabekombinationen und Mediengrenzen [#input-combinations-and-media-limits]

* Verwende `image` für ein Startbild oder `frameImages` für ein Startbild mit optionalem Endbild. Ein Endbild allein und doppelte Einzelbildtypen werden abgewiesen.

* Einzelbilder lassen sich nicht mit `inputReferences` oder `providerOptions.bytedance.referenceAudio` kombinieren.

* Der Referenzmodus akzeptiert bis zu 9 Bilder, 3 Videos und 3 Audioclips mit insgesamt höchstens 15 Referenzen.

* Medieneingaben müssen öffentliche HTTP(S)-URLs sein. Hochgeladene Bytes und URLs mit Zugangsdaten werden nicht akzeptiert.

* Bilder: JPEG, PNG, WebP, BMP, TIFF oder GIF; kleiner als 30 MB; jede Seite 300–6000 Pixel; Seitenverhältnis 0.4–2.5.

* Videos: MP4 oder MOV; höchstens 50 MB pro Datei; jeder Clip 2–15 Sekunden und zusammen höchstens 15 Sekunden; 300–6000 Pixel pro Seite, Seitenverhältnis 0.4–2.5, 24–60 fps.

* Audio: MP3 oder WAV; höchstens 15 MB pro Datei; jeder Clip 2–15 Sekunden und zusammen höchstens 15 Sekunden. Mindestens ein Referenzbild oder -video ist erforderlich.

* Größe, Kodierung und Dauer entfernter Medien werden während der Verarbeitung geprüft; die URL-Prüfung allein garantiert keine nutzbare Datei.

* Das finale Rendern aus einer früheren Entwurfsaufgabe und beliebige native Aufgabenoptionen stehen über diesen Endpunkt nicht zur Verfügung.

## Beispiele für Einzelbilder und Referenzen [#frame-and-reference-examples]

Sende diese Bodys an denselben Endpunkt `POST /v1/videos`. Ersetze vor dem Absenden jede `example.com`-URL durch deine eigene direkt zugängliche Medien-URL. Halte die Eingabe-URLs bis zum Abschluss der Aufgabe verfügbar.

### Start- und Endbilder [#first-and-last-frames]

Verwende für ein einzelnes Startbild `image: "https://example.com/first-frame.jpg"` und lasse `frameImages` weg. Um beide Endpunkte des Clips festzulegen, verwende:

```json
{
  "model": "bytedance/seedance-2.0",
  "prompt": "The camera slowly moves from the opening scene to the closing scene.",
  "frameImages": [
    {
      "frameType": "first_frame",
      "image": "https://example.com/first-frame.jpg"
    },
    {
      "frameType": "last_frame",
      "image": "https://example.com/last-frame.jpg"
    }
  ],
  "aspectRatio": "adaptive",
  "resolution": "720p",
  "duration": 4
}
```

### Bild-, Video- und Audioreferenzen [#image-video-and-audio-references]

Trage Bild- und Videoeingaben mit explizitem MIME-Typ in `inputReferences` ein. Audio-URLs gehören in `providerOptions.bytedance.referenceAudio`. Füge dieser Anfrage keine Einzelbildeingaben hinzu.

```json
{
  "model": "bytedance/seedance-2.0",
  "prompt": "Use the character from the image and the camera movement from the video.",
  "inputReferences": [
    {
      "type": "url",
      "url": "https://example.com/character.jpg",
      "mediaType": "image/jpeg"
    },
    {
      "type": "url",
      "url": "https://example.com/motion.mp4",
      "mediaType": "video/mp4"
    }
  ],
  "providerOptions": {
    "bytedance": {
      "referenceAudio": [
        "https://example.com/sound.wav"
      ]
    }
  },
  "resolution": "720p",
  "duration": 4
}
```

## Video per Statusabfrage abrufen und herunterladen [#poll-and-download-the-video]

Eine akzeptierte Aufgabe gibt ein Objekt wie dieses zurück. Die Beispiel-IDs und Zeitstempel dienen der Veranschaulichung:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "queued",
  "progress": 0,
  "created_at": 1792022400
}
```

Frage `GET /v1/videos/{task_id}` mit deinem API-Schlüssel ab. Die Abfrage liefert dieselbe öffentliche Aufgaben-ID und dasselbe Modell zurück. Entscheide anhand von `status`, wann du die Abfragen beendest; `progress` ist keine Schätzung der verbleibenden Zeit.

| Status        | Bedeutung                           | Nächster Schritt                         |
| ------------- | ----------------------------------- | ---------------------------------------- |
| `queued`      | Die Aufgabe wurde angenommen.       | Weiter abfragen.                         |
| `in_progress` | Die Generierung läuft.              | Weiter abfragen.                         |
| `completed`   | Das Video ist bereit.               | `videos[0].url` lesen und herunterladen. |
| `failed`      | Die Generierung ist fehlgeschlagen. | Abfragen beenden und `error` prüfen.     |

Eine abgeschlossene Abfrage enthält `videos`, ein Array aus Objekten mit `url` und `mediaType`. Zeitstempel verwenden Unix-Sekunden; `completed_at` erscheint, sobald der Abschluss erfasst ist.

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "completed",
  "progress": 100,
  "created_at": 1792022400,
  "completed_at": 1792022460,
  "videos": [
    {
      "url": "/v1/tasks/task_EXAMPLE/artifacts/video/content",
      "mediaType": "video/mp4"
    }
  ]
}
```

Ist die zurückgegebene URL ein relativer Pfad, löse ihn gegen `https://api.wanapi.app` auf und authentifiziere dich mit deinem API-Schlüssel. Für das obige Beispiel:

```bash
curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -o video.mp4
```

Wird eine signierte HTTPS-Medien-URL zurückgegeben, verwende sie direkt, ohne deinen API-Schlüssel an diesen Host weiterzugeben. Ergebnis-URLs können ablaufen. Speichere Videos, die du behalten möchtest, in deinem eigenen Speicher. Statusabfragen und der Download eines vorhandenen Ergebnisses erzeugen keine weitere Generierung.

Eine fehlgeschlagene Aufgabe enthält ein `error`-Objekt mit `code` und `message`, zum Beispiel:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "failed",
  "error": {
    "code": "generation_failed",
    "message": "Video generation failed"
  }
}
```

## Abrechnung und Fehlerbehandlung [#billing-and-failure-handling]

Die endgültige Abrechnung richtet sich nach dem tatsächlichen Videotoken-Verbrauch und dem aktuellen Modelltarif. Die Playground-Schätzung ist ein geschätzter Höchstbetrag, kein Festpreisangebot. Längere Clips und höhere Ausgabeauflösungen können den Tokenverbrauch erhöhen. Fehlgeschlagene Anfragen werden nicht berechnet.

* **Ungültige Parameter:** Korrigiere vor dem erneuten Absenden die Felder oder Eingabekombination. Prüfe neben der URL-Syntax auch Medienformate und Grenzen.
* **Authentifizierung oder Modellzugang:** Verwende einen gültigen Seedance-Schlüssel, der für das angefragte Modell freigeschaltet ist.
* **Nicht genügend Guthaben:** Lade vor einer neuen kostenpflichtigen Anfrage Guthaben auf. Ein Schlüssellimit fügt dem Konto kein Guthaben hinzu.
* **Vorübergehender Abfragefehler:** Wiederhole den GET mit zunehmendem Abstand und einer maximalen Wartezeit. Eine fehlgeschlagene Abfrage bedeutet nicht, dass die Generierung fehlgeschlagen ist.
* **Zeitüberschreitung beim Absenden oder fehlende Aufgaben-ID:** Das Ergebnis kann unklar sein. Wiederhole den POST nicht automatisch; das könnte eine zweite kostenpflichtige Aufgabe erzeugen.
* **Downloadfehler:** Versuche zuerst erneut, das vorhandene Ergebnis herunterzuladen, bevor du eine neue Generierung startest.

Bewahre die Aufgaben-ID auf und kontaktiere den [Support](/de/contact), wenn ein unklarer Übermittlungsstatus untersucht werden muss.

[OpenAPI-Schema für Seedance 2.0 herunterladen](https://wanapi.app/models/seedance-2-0/openapi.json).
