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

# seedance-2.0 Videogenerierung

>  - Asynchroner Verarbeitungsmodus, gibt Task-ID für nachfolgende Abfragen zurück
- Unterstützt Text-zu-Video und Bild-zu-Video (erster Frame / letzter Frame)
- Unterstützt Referenzvideo, Referenzaudio und Video mit Audiospur
- Unterstützt Quer-, Hoch-, Quadrat-, Ultrabreit- und adaptives Format 

```bash cURL theme={null}
curl --request POST \
  --url https://gccai.heqingsong.uk/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "seedance-2.0",
    "prompt": "A kitten yawning at the camera",
    "resolution": "720p",
    "size": "16:9",
    "duration": 5,
    "generate_audio": true
  }'
```

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

url = "https://gccai.heqingsong.uk/v1/videos/generations"

payload = {
    "model": "seedance-2.0",
    "prompt": "A kitten yawning at the camera",
    "resolution": "720p",
    "size": "16:9",
    "duration": 5,
    "generate_audio": True
}

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://gccai.heqingsong.uk/v1/videos/generations";

const payload = {
  model: "seedance-2.0",
  prompt: "A kitten yawning at the camera",
  resolution: "720p",
  size: "16:9",
  duration: 5,
  generate_audio: true
};

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));
```

```go Go theme={null}
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://gccai.heqingsong.uk/v1/videos/generations"

    payload := map[string]interface{}{
        "model":          "seedance-2.0",
        "prompt":         "A kitten yawning at the camera",
        "resolution":     "720p",
        "size":           "16:9",
        "duration":       5,
        "generate_audio": true,
    }

    jsonData, _ := json.Marshal(payload)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer <token>")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

```java Java theme={null}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://gccai.heqingsong.uk/v1/videos/generations";

        String payload = """
        {
          "model": "seedance-2.0",
          "prompt": "A kitten yawning at the camera",
          "resolution": "720p",
          "size": "16:9",
          "duration": 5,
          "generate_audio": true
        }
        """;

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(url))
            .header("Authorization", "Bearer <token>")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(payload))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

```php PHP theme={null}
<?php

$url = "https://gccai.heqingsong.uk/v1/videos/generations";

$payload = [
    "model" => "seedance-2.0",
    "prompt" => "A kitten yawning at the camera",
    "resolution" => "720p",
    "size" => "16:9",
    "duration" => 5,
    "generate_audio" => true
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
```

```ruby Ruby theme={null}
require 'net/http'
require 'json'
require 'uri'

url = URI("https://gccai.heqingsong.uk/v1/videos/generations")

payload = {
  model: "seedance-2.0",
  prompt: "A kitten yawning at the camera",
  resolution: "720p",
  size: "16:9",
  duration: 5,
  generate_audio: true
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json

response = http.request(request)
puts response.body
```

```swift Swift theme={null}
import Foundation

let url = URL(string: "https://gccai.heqingsong.uk/v1/videos/generations")!

let payload: [String: Any] = [
    "model": "seedance-2.0",
    "prompt": "A kitten yawning at the camera",
    "resolution": "720p",
    "size": "16:9",
    "duration": 5,
    "generate_audio": true
]

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Error: \(error)")
        return
    }

    if let data = data, let responseString = String(data: data, encoding: .utf8) {
        print(responseString)
    }
}

task.resume()
```

```csharp C# theme={null}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var url = "https://gccai.heqingsong.uk/v1/videos/generations";

        var payload = @"{
            ""model"": ""seedance-2.0"",
            ""prompt"": ""A kitten yawning at the camera"",
            ""resolution"": ""720p"",
            ""size"": ""16:9"",
            ""duration"": 5,
            ""generate_audio"": true
        }";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

        var content = new StringContent(payload, Encoding.UTF8, "application/json");
        var response = await client.PostAsync(url, content);
        var result = await response.Content.ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
```

```json 200 theme={null}
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KMCGF6BQGN3X28H3KSR50X5T"
    }
  ]
}
```

```json 400 theme={null}
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
```

```json 401 theme={null}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
```

```json 402 theme={null}
{
  "error": {
    "code": 402,
    "message": "Insufficient account balance, please top up and try again",
    "type": "payment_required"
  }
}
```

```json 429 theme={null}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
```

```json 500 theme={null}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
```

## Authentifizierung

**Authorization** `string` *required*

Alle API-Endpunkte erfordern eine Bearer-Token-Authentifizierung

Holen Sie Ihren API Key:

Besuchen Sie die [Seite zur API-Key-Verwaltung](https://gccai.heqingsong.uk/keys), um Ihren API Key zu erhalten

Fügen Sie ihn dem Anfrage-Header hinzu:

```
Authorization: Bearer YOUR_API_KEY
```

## Anfrageparameter

**model** `string` *required*

Name des Videogenerierungsmodells

Unterstützte Modelle:

* `seedance-2.0` — Standardversion, unterstützt Text-zu-Video, Bild-zu-Video, Video aus erstem/letztem Frame, Referenzvideo, Referenzaudio und Video mit Audiospur
* `seedance-2.0-fast` — Schnellversion, dieselben Funktionen wie die Standardversion bei höherer Generierungsgeschwindigkeit
* `seedance-2.0-mini` — Mini-Version, dieselben Funktionen wie die Standardversion

**nsfw\_check** `boolean` (default: false)

Legt fest, ob der Inhalt vor dem Absenden des Videoauftrags moderiert wird.

* `true`: Prompts und Eingabebilder mit `omni-moderation-latest` prüfen
* `false` oder nicht angegeben: keine Moderationsanfrage und damit keine zusätzlichen Moderationskosten oder Verzögerung (Standard)

Geprüfte Inhalte:

* Text: `prompt`, `negative_prompt`
* Bilder: `image_urls`, `image_with_roles[].url`, `first_frame_image`, `last_frame_image`
* Private Bild-Assets mit `asset://`: ursprüngliche öffentliche URL auflösen und prüfen
* Base64-Bilder: nach der Umwandlung in eine öffentliche URL prüfen

`video_urls`, `audio_urls` sowie private Video- und Audio-Assets werden **nicht geprüft**, da das Moderationsmodell Video und Audio nicht unterstützt.

Unterstützte Modell-IDs: `seedance-2.0`, `seedance-2.0-fast`, `seedance-2.0-mini`, `seedance-2.0-face`, `seedance-2.0-fast-face`, `seedance-2-0` (alter Name) und `seedance-2.5`.

Der Moderationsaufruf selbst wird dem Benutzer, der die Videoanfrage absendet, nicht berechnet.

> [!WARNING]
>
> * Bei erkannten Inhalten wird synchron HTTP 400 (`nsfw_content_detected`) zurückgegeben. Es werden weder ein Auftrag noch eine `task_id` erstellt und kein Kontingent für die Videogenerierung abgezogen
> * Ist die Moderation nicht verfügbar, läuft in ein Timeout oder liefert eine ungültige Antwort, gilt **fail-open** und die Generierung wird fortgesetzt. Diese Option ist keine absolute Garantie für Inhaltssicherheit
> * Eingaben, die nicht in eine öffentliche Bild-URL aufgelöst werden können, werden übersprungen; nicht unterstützte Modelle ignorieren `nsfw_check: true` ohne Meldung

Beispiel:

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "a cat walking on the beach",
  "image_urls": ["https://cdn.example.com/ref.png"],
  "nsfw_check": true
}
```

Antwort bei Erkennung:

```json theme={null}
{
  "error": {
    "message": "Your request was rejected by content moderation (`nsfw_check` is enabled). Flagged categories: sexual, violence/graphic.",
    "type": "nsfw_content_detected",
    "param": "",
    "code": "nsfw_content_detected"
  }
}
```

**prompt** `string`

Beschreibung des Videoinhalts

Erforderlich für Text-zu-Video; optional für Bild-zu-Video oder Video-Referenz-zu-Video

Es wird empfohlen, Motiv, Aktion, Kamerabewegung und Stil klar anzugeben, um bessere Generierungsergebnisse zu erzielen

> [!WARNING]
>
> * Der Prompt ist auf 4000 Zeichen begrenzt, empfohlen werden jedoch 500 Zeichen.
> * Das Modell `seedance-2.0-mini` hat keine Zeichenbegrenzung. Empfehlung: Chinesische Prompts sollten 500 Zeichen und englische Prompts 1000 Wörter nicht überschreiten. Zu lange Texte führen leicht dazu, dass die Informationen verstreut werden, und das Modell könnte Details übersehen und sich nur auf die Schwerpunkte konzentrieren, wodurch im Video einige Elemente fehlen.

Beispiel: `"A kitten yawning at the camera"`

**duration** `integer` (default: 5)

Videodauer (in Sekunden)

Unterstützter Bereich: `4` bis `15` Sekunden

Standard: `5`

**size** `string` (default: 16:9)

Seitenverhältnis des Videos

Das Seitenverhältnis muss zwischen 0.5 und 2.5 liegen

Optionen:

* `16:9` — Querformat
* `9:16` — Hochformat
* `1:1` — Quadrat
* `4:3` — Traditionelles Verhältnis
* `3:4` — Vertikales traditionelles Verhältnis
* `21:9` — Ultrabreit
* `adaptive` — Adaptiv (passt sich automatisch an das eingegebene Bild/Video an)

Standard: `16:9`

**resolution** `string` (default: 720p)

Videoauflösung

Optionen:

* `480p` — Standard Definition
* `720p` — High Definition
* `1080p` — Full HD (nur unterstützt von `seedance-2.0`)
* `4k` — Ultra HD (nur unterstützt von `seedance-2.0`)

Standard: `720p`

**seed** `integer`

Zufalls-Seed zur Steuerung der Zufälligkeit des generierten Inhalts

> [!NOTE]
>
> * Bei derselben Anfrage erzeugen unterschiedliche Seed-Werte unterschiedliche Ergebnisse
> * Bei derselben Anfrage erzeugt derselbe Seed-Wert ähnliche Ergebnisse, exakte Konsistenz ist jedoch nicht garantiert

**generate\_audio** `boolean` (default: true)

Ob Audio generiert werden soll (Video mit Audiospur)

Wenn auf `true` gesetzt, enthält das Video von der KI generiertes Begleitaudio

Wenn auf `false` gesetzt, enthält das Video kein Audio (stummes Video)

Standard: `true`

**return\_last\_frame** `boolean` (default: false)

Ob das Bild des letzten Frames zurückgegeben werden soll

Wenn auf `true` gesetzt, gibt das Aufgabenergebnis zusätzlich die URL des letzten Frames des Videos zurück, die für die kontinuierliche Videogenerierung verwendet werden kann

Standard: `false`

**tools** `array\<object\>`

Werkzeugliste für erweiterte Funktionen wie Websuche

Beispiel: `[{"type": "web_search"}]`

**Feldbeschreibung**

**type** `string` *required*

Werkzeugtyp

Optionen:

* `web_search` — Websuche, bezieht Online-Informationen während der Generierung ein

**image\_urls** `array\<string\>`

Array von Bild-URLs für Bild-zu-Video

Unterstützt zwei Formate:

* Normale Bild-URL: `https://example.com/cat.jpg`
* Asset-URL (genehmigtes Asset): `asset://asset_a`

Beispiel: `["https://example.com/cat.jpg"]` oder `["asset://asset_a"]`

> [!NOTE]
>
> Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt: `seedance-2.0`, `seedance-2.0-fast` und `seedance-2.0-mini`.

> [!WARNING]
>
> * `image_urls` und `image_with_roles` können nicht gleichzeitig verwendet werden
> * Maximal 9 Referenzbilder

**image\_with\_roles** `array`

Bild-Array mit Rollen, unterstützt die Angabe von erstem Frame/letztem Frame

> [!NOTE]
>
> Wenn das Feld `url` eine Asset-URL verwendet, werden alle Seedance-2.0-Modelle unterstützt: `seedance-2.0`, `seedance-2.0-fast` und `seedance-2.0-mini`.

**Feldbeschreibung**

**url** `string` *required*

Bild-URL

Unterstützt zwei Formate:

* Normale Bild-URL: `https://example.com/day.jpg`
* Asset-URL (genehmigtes Asset): `asset://asset_a`

> [!NOTE]
>
> Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt: `seedance-2.0`, `seedance-2.0-fast` und `seedance-2.0-mini`.

**role** `string` *required*

Bildrolle

Optionen:

* `first_frame` — Bild des ersten Frames, wird als Startframe des Videos verwendet
* `last_frame` — Bild des letzten Frames, wird als Endframe des Videos verwendet
* `reference_image` — Referenz-Porträtbild (wird mit Asset-URL verwendet)

Beispiel:

```json theme={null}
[
  {"url": "https://example.com/day.jpg", "role": "first_frame"},
  {"url": "https://example.com/night.jpg", "role": "last_frame"}
]
```

Asset-URL-Format:

```json theme={null}
[
  {"url": "asset://asset_a", "role": "reference_image"}
]
```

> [!WARNING]
>
> * `image_urls` und `image_with_roles` können nicht gleichzeitig verwendet werden
> * Bei Verwendung von Bildern des ersten/letzten Frames sind `video_urls` und `audio_urls` nicht verfügbar

**video\_urls** `array\<string\>`

Array von Referenzvideo-URLs

Unterstützt zwei Formate:

* Normale Video-URL: `https://example.com/reference.mp4`
* Asset-URL (genehmigtes Asset): `asset://asset_a`

Beispiel: `["https://example.com/reference.mp4"]` oder `["asset://asset_a"]`

> [!NOTE]
>
> Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt: `seedance-2.0`, `seedance-2.0-fast` und `seedance-2.0-mini`.

> [!WARNING]
>
> * Bei Verwendung von Bildern des ersten/letzten Frames (`image_with_roles`) sind Referenzvideos nicht verfügbar
> * Maximal 3 Referenzvideos, 1.8 s \< Gesamtdauer \< 15.2 s
> * Die Auflösung des Referenzvideos muss zwischen 480P und 720P liegen

**audio\_urls** `array\<string\>`

Array von Referenzaudio-URLs

Unterstützt zwei Formate:

* Normale Audio-URL: `https://example.com/speech.wav`
* Asset-URL (genehmigtes Asset): `asset://asset_a`

Beispiel: `["https://example.com/speech.wav"]` oder `["asset://asset_a"]`

> [!NOTE]
>
> Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt: `seedance-2.0`, `seedance-2.0-fast` und `seedance-2.0-mini`.

> [!WARNING]
>
> * Bei Verwendung von Bildern des ersten/letzten Frames (`image_with_roles`) ist Referenzaudio nicht verfügbar
> * Maximal 3 Referenzaudiodateien, Gesamtdauer maximal 15 Sekunden
> * Referenzaudio muss zusammen mit Referenzbildern oder Referenzvideos verwendet werden

## Antwort

**code** `integer`

Antwortstatuscode, 200 bei Erfolg

**data** `array`

Array der Antwortdaten

**Array-Elemente**

**status** `string`

Aufgabenstatus, `submitted` bei der ersten Einreichung

**task\_id** `string`

Eindeutige Aufgabenkennung zum Abfragen des Aufgabenstatus und der Ergebnisse

## Anwendungsfälle

### Fall 1: Text-zu-Video

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "A kitten yawning at the camera",
  "resolution": "720p",
  "size": "16:9",
  "duration": 5,
  "seed": 42,
  "generate_audio": true
}
```

### Fall 2: Bild-zu-Video (erster Frame)

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "The kitten stands up and walks toward the camera",
  "image_urls": ["https://example.com/cat.jpg"],
  "duration": 5
}
```

### Fall 3: Video aus erstem/letztem Frame

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "Transition from day to night",
  "image_with_roles": [
    {"url": "https://example.com/day.jpg", "role": "first_frame"},
    {"url": "https://example.com/night.jpg", "role": "last_frame"}
  ],
  "duration": 5
}
```

### Fall 4: Video aus Referenzvideo

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "Convert the video style to anime style",
  "video_urls": ["https://example.com/reference.mp4"]
}
```

### Fall 5: Referenzvideo + Referenzaudio

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "A scene of a person speaking",
  "video_urls": ["https://example.com/reference.mp4"],
  "audio_urls": ["https://example.com/speech.wav"],
  "size": "16:9",
  "duration": 11
}
```

### Fall 6: Video mit Audiospur

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "A man stops a woman and says: \"Remember, you must never point your finger at the moon.\"",
  "generate_audio": true
}
```

### Fall 7: Kontinuierliche Videogenerierung (letzten Frame zurückgeben)

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "The kitten continues walking toward the camera",
  "image_urls": ["https://example.com/last_frame_from_prev.png"],
  "return_last_frame": true
}
```

### Fall 8: Generierung mit Schnellversion

```json theme={null}
{
  "model": "seedance-2.0-fast",
  "prompt": "City nightscape timelapse photography",
  "size": "21:9",
  "duration": 8
}
```

### Fall 9: Referenzbilder + Referenzvideo + Referenzaudio (multimodales Video)

Kombinieren Sie Referenzbilder, Referenzvideo und Referenzaudio, um ein immersives Werbevideo aus der Ich-Perspektive zu erstellen. Ideal für Produktwerbung, Markenanzeigen und andere Szenarien, die das Zusammenführen von Materialien aus mehreren Quellen erfordern.

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "Use video 1's first-person perspective throughout, and use audio 1 as the background music throughout. First-person POV fruit tea advertisement for seedance brand 'Peace Apple' apple fruit tea limited edition. First frame is image 1: your hand picks a dewy Aksu red apple with a crisp apple collision sound. 2-4s: quick cut, your hand drops apple chunks into a shaker cup, adds ice and tea base, shakes vigorously, ice collision and shaking sounds sync with upbeat drum beats, background voice: 'Fresh-cut, fresh-shaken'. 4-6s: first-person close-up of the finished product, layered fruit tea poured into a clear cup, your hand gently squeezes cream cap spreading on top, sticks a pink label on the cup, camera zooms in on the layered texture of cream cap and fruit tea. 6-8s: first-person handheld cup raise, you lift the fruit tea from image 2 toward the camera (simulating handing it to the viewer), cup label clearly visible, background voice 'Take a sip of freshness', final frame freezes on image 2. Background voice consistently uses a female tone.",
  "image_urls": [
    "https://example.com/tea_pic1.jpg",
    "https://example.com/tea_pic2.jpg"
  ],
  "video_urls": ["https://example.com/tea_video1.mp4"],
  "audio_urls": ["https://example.com/tea_audio1.mp3"],
  "generate_audio": true,
  "size": "16:9",
  "duration": 11
}
```

### Fall 10: Bild-zu-Video mit Asset-URL

Genehmigte Assets virtueller Avatare können direkt als Referenzbilder übergeben werden, ohne sie erneut hochladen oder prüfen lassen zu müssen.

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "The character walks naturally on a city street under bright sunshine",
  "image_urls": ["asset://asset_a"],
  "duration": 5,
  "resolution": "720p"
}
```

### Fall 11: Referenz-Porträt mit Asset-URL angeben (image\_with\_roles)

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "Using the reference portrait, the character walks elegantly toward the camera",
  "image_with_roles": [
    {
      "url": "asset://asset_a",
      "role": "reference_image"
    }
  ],
  "resolution": "720p",
  "duration": 5
}
```

### Fall 12: Schnellversion + Asset-URL für Bild-zu-Video

```json theme={null}
{
  "model": "seedance-2.0-fast",
  "prompt": "The character strolls in a park with a gentle breeze",
  "image_urls": ["asset://asset_a"],
  "duration": 5,
  "resolution": "720p"
}
```

### Fall 13: Bild über Asset-URL + Referenzvideo (Bewegungsübertragung)

Kombinieren Sie ein genehmigtes Porträt-Asset mit einem Referenzvideo, um die Figur dazu zu bringen, bestimmte Bewegungen auszuführen.

```json theme={null}
{
  "model": "seedance-2.0",
  "prompt": "The character dances to the rhythm of the reference video with smooth and natural movements",
  "image_urls": ["https://example.com/dance_reference.jpg", "asset://asset_a"],
  "video_urls": ["https://example.com/dance_reference.mp4", "asset://asset_a"],
  "duration": 8,
  "resolution": "720p"
}
```

> [!NOTE]
>
> **Aufgabenergebnisse abfragen**
>
> Die Videogenerierung ist eine asynchrone Aufgabe, die bei der Einreichung eine `task_id` zurückgibt. Verwenden Sie den Endpunkt [Aufgabenstatus abrufen](https://gccai.heqingsong.uk/de/api-reference/tasks/status.md), um den Fortschritt und die Ergebnisse der Generierung abzufragen.

## Unterschiede zur Version 1.5 Pro

| Funktion | 1.5 Pro | 2.0 / 2.0 fast |
| - | - | - |
| Auflösung | 480p/720p/1080p | **480p/720p/1080p/4k** (fast nur 480p/720p) |
| Dauerbereich | 4-12 s | **5-15 s** |
| Standarddauer | 5 s | **5 s** |
| Parameter für Seitenverhältnis | `aspect_ratio` | **`size`** (neue Option `adaptive`) |
| Audio-Generierung | Parameter `audio` | **Parameter `generate_audio`** |
| Referenzvideo | Nicht unterstützt | **Unterstützt über `video_urls`** |
| Referenzaudio | Nicht unterstützt | **Unterstützt über `audio_urls`** |
| Bild-zu-Video | `image_urls` / `image_with_roles` | **`image_urls` / `image_with_roles`** |
| Video mit Audiospur | Nicht unterstützt | **Unterstützt über `generate_audio`** |
| Kontinuierliches Video | Nicht unterstützt | **Unterstützt über `return_last_frame`** |
| Schnellversion | Nicht unterstützt | **Unterstützt über `seedance-2.0-fast`** |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.