curl --request POST \
--url https://api.apimart.ai/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
}'
import requests
url = "https://api.apimart.ai/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())
const url = "https://api.apimart.ai/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));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/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))
}
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://api.apimart.ai/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
$url = "https://api.apimart.ai/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;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/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
import Foundation
let url = URL(string: "https://api.apimart.ai/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()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/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);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KMCGF6BQGN3X28H3KSR50X5T"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later",
"type": "server_error"
}
}
seedance-2-0
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
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/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
}'
import requests
url = "https://api.apimart.ai/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())
const url = "https://api.apimart.ai/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));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/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))
}
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://api.apimart.ai/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
$url = "https://api.apimart.ai/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;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/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
import Foundation
let url = URL(string: "https://api.apimart.ai/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()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/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);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KMCGF6BQGN3X28H3KSR50X5T"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later",
"type": "server_error"
}
}
curl --request POST \
--url https://api.apimart.ai/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
}'
import requests
url = "https://api.apimart.ai/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())
const url = "https://api.apimart.ai/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));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/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))
}
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://api.apimart.ai/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
$url = "https://api.apimart.ai/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;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/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
import Foundation
let url = URL(string: "https://api.apimart.ai/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()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/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);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KMCGF6BQGN3X28H3KSR50X5T"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later",
"type": "server_error"
}
}
Authentifizierung
string
erforderlich
Alle API-Endpunkte erfordern eine Bearer-Token-AuthentifizierungHolen Sie Ihren API Key:Besuchen Sie die Seite zur API-Key-Verwaltung, um Ihren API Key zu erhaltenFügen Sie ihn dem Anfrage-Header hinzu:
Authorization: Bearer YOUR_API_KEY
Anfrageparameter
string
erforderlich
Name des VideogenerierungsmodellsUnterstützte Modelle:
seedance-2.0— Standardversion, unterstützt Text-zu-Video, Bild-zu-Video, Video aus erstem/letztem Frame, Referenzvideo, Referenzaudio und Video mit Audiospurseedance-2.0-fast— Schnellversion, dieselben Funktionen wie die Standardversion bei höherer Generierungsgeschwindigkeitseedance-2.0-mini— Mini-Version, dieselben Funktionen wie die Standardversion
boolean
Standard:"false"
Legt fest, ob der Inhalt vor dem Absenden des Videoauftrags moderiert wird.Beispiel:Antwort bei Erkennung:
true: Prompts und Eingabebilder mitomni-moderation-latestprüfenfalseoder nicht angegeben: keine Moderationsanfrage und damit keine zusätzlichen Moderationskosten oder Verzögerung (Standard)
- 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.- Bei erkannten Inhalten wird synchron HTTP 400 (
nsfw_content_detected) zurückgegeben. Es werden weder ein Auftrag noch einetask_iderstellt 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: trueohne Meldung
{
"model": "seedance-2.0",
"prompt": "a cat walking on the beach",
"image_urls": ["https://cdn.example.com/ref.png"],
"nsfw_check": true
}
{
"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"
}
}
string
Beschreibung des VideoinhaltsErforderlich für Text-zu-Video; optional für Bild-zu-Video oder Video-Referenz-zu-VideoEs wird empfohlen, Motiv, Aktion, Kamerabewegung und Stil klar anzugeben, um bessere Generierungsergebnisse zu erzielenBeispiel:
- Der Prompt ist auf 4000 Zeichen begrenzt, empfohlen werden jedoch 500 Zeichen.
- Das Modell
seedance-2.0-minihat 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.
"A kitten yawning at the camera"integer
Standard:"5"
Videodauer (in Sekunden)Unterstützter Bereich:
4 bis 15 SekundenStandard: 5string
Standard:"16:9"
Seitenverhältnis des VideosDas Seitenverhältnis muss zwischen 0.5 und 2.5 liegenOptionen:
16:9— Querformat9:16— Hochformat1:1— Quadrat4:3— Traditionelles Verhältnis3:4— Vertikales traditionelles Verhältnis21:9— Ultrabreitadaptive— Adaptiv (passt sich automatisch an das eingegebene Bild/Video an)
16:9string
Standard:"720p"
VideoauflösungOptionen:
480p— Standard Definition720p— High Definition1080p— Full HD (nur unterstützt vonseedance-2.0)4k— Ultra HD (nur unterstützt vonseedance-2.0)
720pinteger
Zufalls-Seed zur Steuerung der Zufälligkeit des generierten Inhalts
- Bei derselben Anfrage erzeugen unterschiedliche Seed-Werte unterschiedliche Ergebnisse
- Bei derselben Anfrage erzeugt derselbe Seed-Wert ähnliche Ergebnisse, exakte Konsistenz ist jedoch nicht garantiert
boolean
Standard:"true"
Ob Audio generiert werden soll (Video mit Audiospur)Wenn auf
true gesetzt, enthält das Video von der KI generiertes BegleitaudioWenn auf false gesetzt, enthält das Video kein Audio (stummes Video)Standard: trueboolean
Standard:"false"
Ob das Bild des letzten Frames zurückgegeben werden sollWenn 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 kannStandard: falsearray<object>
Werkzeugliste für erweiterte Funktionen wie WebsucheBeispiel:
[{"type": "web_search"}]Anzeigen Feldbeschreibung
Anzeigen Feldbeschreibung
string
erforderlich
WerkzeugtypOptionen:
web_search— Websuche, bezieht Online-Informationen während der Generierung ein
array<string>
Array von Bild-URLs für Bild-zu-VideoUnterstützt zwei Formate:
- Normale Bild-URL:
https://example.com/cat.jpg - Asset-URL (genehmigtes Asset):
asset://asset_a
["https://example.com/cat.jpg"] oder ["asset://asset_a"]Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt:
seedance-2.0, seedance-2.0-fast und seedance-2.0-mini.image_urlsundimage_with_roleskönnen nicht gleichzeitig verwendet werden- Maximal 9 Referenzbilder
array
Bild-Array mit Rollen, unterstützt die Angabe von erstem Frame/letztem Frame
Beispiel:Asset-URL-Format:
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.Anzeigen Feldbeschreibung
Anzeigen Feldbeschreibung
string
erforderlich
Bild-URLUnterstützt zwei Formate:
- Normale Bild-URL:
https://example.com/day.jpg - Asset-URL (genehmigtes Asset):
asset://asset_a
Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt:
seedance-2.0, seedance-2.0-fast und seedance-2.0-mini.string
erforderlich
BildrolleOptionen:
first_frame— Bild des ersten Frames, wird als Startframe des Videos verwendetlast_frame— Bild des letzten Frames, wird als Endframe des Videos verwendetreference_image— Referenz-Porträtbild (wird mit Asset-URL verwendet)
[
{"url": "https://example.com/day.jpg", "role": "first_frame"},
{"url": "https://example.com/night.jpg", "role": "last_frame"}
]
[
{"url": "asset://asset_a", "role": "reference_image"}
]
image_urlsundimage_with_roleskönnen nicht gleichzeitig verwendet werden- Bei Verwendung von Bildern des ersten/letzten Frames sind
video_urlsundaudio_urlsnicht verfügbar
array<string>
Array von Referenzvideo-URLsUnterstützt zwei Formate:
- Normale Video-URL:
https://example.com/reference.mp4 - Asset-URL (genehmigtes Asset):
asset://asset_a
["https://example.com/reference.mp4"] oder ["asset://asset_a"]Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt:
seedance-2.0, seedance-2.0-fast und seedance-2.0-mini.- 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
array<string>
Array von Referenzaudio-URLsUnterstützt zwei Formate:
- Normale Audio-URL:
https://example.com/speech.wav - Asset-URL (genehmigtes Asset):
asset://asset_a
["https://example.com/speech.wav"] oder ["asset://asset_a"]Asset-URLs werden von allen Seedance-2.0-Modellen unterstützt:
seedance-2.0, seedance-2.0-fast und seedance-2.0-mini.- 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
integer
Antwortstatuscode, 200 bei Erfolg
array
Anwendungsfälle
Fall 1: Text-zu-Video
{
"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)
{
"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
{
"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
{
"model": "seedance-2.0",
"prompt": "Convert the video style to anime style",
"video_urls": ["https://example.com/reference.mp4"]
}
Fall 5: Referenzvideo + Referenzaudio
{
"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
{
"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)
{
"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
{
"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.{
"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.{
"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)
{
"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
{
"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.{
"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"
}
Aufgabenergebnisse abfragenDie Videogenerierung ist eine asynchrone Aufgabe, die bei der Einreichung eine
task_id zurückgibt. Verwenden Sie den Endpunkt Aufgabenstatus abrufen, 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 |