Seedance 2.0 Mini API zur Videogenerierung
Seedance 2.0 Mini Parameter, Referenzmedien, asynchrone Aufgaben, authentifizierte Downloads und Dauerabrechnung auf APIMaster.
Seedance 2.0 Mini Videoerstellung
Verwenden Sie seedance-2.0-mini für Text-zu-Video, Bild-zu-Video, Erstellung von ersten/letzten Frames sowie Video- oder Audio-Referenzen. Mini unterstützt 480p und 720p, mit Ausgabelängen von 4 bis 15 Sekunden.
Für die Erstellung des ersten/letzten Frames setzen Sie
aspect_ratio: "adaptive"explizit. Referenz-Audio muss von einem Bild oder Video begleitet werden. Bewahren Sie Ihren APIMaster API-Schlüssel auf Ihrem Server auf.
Endpunkte und Authentifizierung
Basis-URL: https://apimaster.ai/v1. Senden Sie Authorization: Bearer YOUR_API_KEY bei der Einreichung, Abfrage und beim Download.
| Vorgang | Methode und Pfad |
|---|---|
| Video erstellen | POST /v1/videos/generations |
| Kompatibles Ergebnis abfragen | GET /v1/video/generations/{task_id} |
| OpenAI-Stil Ergebnis abfragen | GET /v1/videos/{task_id} |
| Video herunterladen | GET /v1/videos/{task_id}/content |
| Angeforderten letzten Frame herunterladen | GET /v1/videos/{task_id}/last-frame |
Verwenden Sie die von APIMaster zurückgegebene öffentliche task_id. Videoaufgaben und Medienprüfungsaufgaben sind unterschiedliche Ressourcen: Verwenden Sie für Videos die oben genannten Video-Abfrage-Endpunkte. Eine angenommene Anfrage erstellt eine asynchrone Aufgabe; HTTP-Erfolg bedeutet nicht, dass das Video fertiggestellt ist.
Parameter
| Feld | Typ | Erforderlich / Standard | Beschreibung |
|---|---|---|---|
model |
string | Erforderlich | seedance-2.0-mini |
prompt |
string | Erforderlich | APIMaster setzt keine modellspezifische Prompt-Längenbegrenzung. Beschreiben Sie das Subjekt, die Bewegung, die Szene, die Kamera und die gewünschte Audio; prägnante Prompts sind leichter zu steuern. |
duration |
integer | 5 |
Ausgabelänge, 4–15 Sekunden. -1 wird nicht unterstützt. |
resolution |
string | 720p |
480p oder 720p; 1080p und 4k werden nicht unterstützt. |
aspect_ratio |
string | 16:9 |
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, oder adaptive. |
ratio |
string | Gleich wie aspect_ratio |
APIMaster Alias. Wenn beide erscheinen, müssen ihre Werte übereinstimmen. |
size |
string | Gleich wie aspect_ratio |
Ein Seitenverhältnis wie 16:9 oder adaptive. Bevorzugen Sie aspect_ratio und resolution, um die beiden Dimensionen separat anzugeben. Widersprüchliche Angaben führen zu 400. |
seed |
integer | Ausgelassen | Steuert die Variation; übereinstimmende Seeds garantieren keine identische Ausgabe. |
generate_audio |
boolean | true |
Begleitendes Audio erzeugen; verwenden Sie false für stumme Ausgabe. |
image_urls |
string[] | Ausgelassen | Bis zu 9 Referenzbilder. Öffentliche Bild-URLs oder genehmigte APIMaster asset:// IDs. |
image_with_roles |
object[] | Ausgelassen | Bildobjekte mit url und role; können nicht zusammen mit image_urls erscheinen. Siehe Rollenregeln unten. |
video_urls |
string[] | Ausgelassen | Bis zu 3 Referenzvideos, mit einer gesamten abrechenbaren Eingabelänge von höchstens 15 Sekunden. Siehe Materialanforderungen. |
audio_urls |
string[] | Ausgelassen | Bis zu 3 Referenz-Audiodateien, kombinierte Länge höchstens 15 Sekunden. Erfordert Bild- oder Videoreferenzen. |
return_last_frame |
boolean | false |
Bei erfolgreichem Abschluss eine authentifizierte APIMaster Last-Frame-Download-URL zurückgeben, wenn das Ergebnis einen letzten Frame enthält. |
nsfw_check |
boolean | false |
Text-/Bildinhaltsmoderation vor der Erstellung anfordern. Videos und Audio sind in diesem Moderationsdurchlauf nicht enthalten. |
tools |
object[] | Ausgelassen | Suchwerkzeug-Deklaration: [{"type":"web_search"}]. |
Entwurferstellung und Entwurfs-Upgrades sind exklusiv für Seedance 2.5. Übergeben Sie draft: true oder draft_task_id nicht an dieses Modell.
Referenzmaterialien
Stellen Sie öffentlich zugängliche HTTPS-URLs oder genehmigte IDs aus Ihrer APIMaster-Mediathek bereit. Dateien hinter Login-Seiten oder solche, die Ihre eigenen Autorisierungs-Header erfordern, können nicht abgerufen werden. Ein erfolgreicher Bild-Upload impliziert keine Inhaltsgenehmigung oder Konformität mit jedem Modell-Anforderung.
| Material | Anforderungen |
|---|---|
| Referenzbilder | Bis zu 9; verwenden Sie gut lesbare RGB-JPEG/PNG-Bilder. Der APIMaster-Bild-Upload-Endpunkt hat sein eigenes Limit von 20 MiB und akzeptiert JPEG, PNG, GIF und WebP. |
| Referenzvideos | Bis zu 3; MP4/MOV, H.264/H.265-Video; AAC/MP3-Audio, falls vorhanden. Verwenden Sie 480p–720p Referenzvideo. Die kombinierte Referenzdauer muss innerhalb von 15 abrechenbaren Sekunden liegen. APIMaster überprüft die zugängliche MP4/MOV-Dauer vor der Berechnung; die Dauer der Eingabeclips wird für diese Prüfung und Abrechnung auf ganze Sekunden aufgerundet. |
| Referenzaudio | Bis zu 3; WAV oder MP3, maximal 20 MB pro Datei, kombinierte Dauer maximal 15 Sekunden. Muss immer von einem Bild- oder Videoreferenz begleitet werden. |
Verwenden Sie klare Bilder mit ausreichend Detail, vermeiden Sie beschädigte oder unvollständige Dateien und halten Sie die Bewegung im Referenzvideo konsistent mit Ihrem Prompt. Medien können eine asynchrone Format- oder Inhaltsprüfung nicht bestehen, selbst wenn die Einreichung akzeptiert wurde.
Bildrollen
role |
Bedeutung |
|---|---|
first_frame |
Startframe; maximal einer |
last_frame |
Endframe; maximal einer, erfordert einen ersten Frame |
reference_image |
Referenzbild, einschließlich genehmigter Charakter-Assets |
Für First/Last-Frame-Aufgaben setzen Sie aspect_ratio auf adaptive und lassen Sie video_urls und audio_urls weg. Verwenden Sie image_with_roles für explizite Rollen; übergeben Sie nicht zusätzlich image_urls.
{
"model": "seedance-2.0-mini",
"prompt": "A paper boat drifts gently from the starting composition to the ending composition",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_with_roles": [
{"url": "https://your-storage.example/start.png", "role": "first_frame"},
{"url": "https://your-storage.example/end.png", "role": "last_frame"}
],
"generate_audio": false
}
Uploads und Mediathek
Laden Sie ein lokales Bild mit POST /v1/uploads/images hoch, verwenden Sie das Multipart-Feld file und Bearer-Autorisierung. Die zurückgegebene Top-Level url kann als öffentliche Bildeingabe verwendet werden.
curl "https://apimaster.ai/v1/uploads/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@reference.png"
Für wiederverwendbare oder Charakter-Materialien erstellen Sie eine Gruppe mit POST /v1/seedance2/private-avatar/groups, reichen Materialien mit POST /v1/seedance2/private-avatar/assets ein, fragen den Review-Status mit GET /v1/tasks/{asset_task_id} ab und verwenden Sie nur Active-Assets als asset://{asset_id}. Diese Ressourcen gehören zu Ihrem Konto. Geben Sie model: "seedance-2.0-mini" explizit an. Asset-IDs von einer anderen Plattform oder einem anderen Konto können hier nicht verwendet werden.
Siehe den Mediathek-Workflow für Erstellung, Einreichung, Review, Teilausfälle und Löschung. Die Upload- und Asset-Management-Endpunkte sind gemeinsam; die Generierungslimits auf dieser Seite gelten für Mini. Ein fehlgeschlagener Review gibt möglicherweise keinen detaillierten Grund zurück; verwenden Sie klares, konformes Material in einem unterstützten Format und reichen Sie einen neuen Review ein. Erstellen Sie keine Aufgabe wiederholt neu, während ein bestehender Review noch verarbeitet wird.
Ein Video einreichen
curl "https://apimaster.ai/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"seedance-2.0-mini",
"prompt":"A small paper boat on calm water at sunrise, gentle tracking shot",
"duration":5,
"resolution":"720p",
"aspect_ratio":"16:9",
"generate_audio":true,
"return_last_frame":true
}'
Erstellungsantwort:
{"code":200,"data":[{"status":"submitted","task_id":"task_PUBLIC_VIDEO_ID"}]}
Ein Submit-Timeout ist mehrdeutig: Die Anfrage könnte akzeptiert worden sein. Prüfen Sie Ihren Aufgabenverlauf, bevor Sie erneut einreichen; eine weitere erfolgreiche Einreichung erstellt eine separate abrechenbare Aufgabe.
Video- und Audio-Referenzen
{
"model": "seedance-2.0-mini",
"prompt": "Follow the reference motion and keep the scene consistent with the image",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_urls": ["https://your-storage.example/reference.png"],
"video_urls": ["https://your-storage.example/reference.mp4"],
"audio_urls": ["https://your-storage.example/reference.mp3"],
"generate_audio": true
}
Abfragen und Herunterladen
Poll alle 3–5 Sekunden. Stoppen Sie, wenn erfolgreich oder fehlgeschlagen.
curl "https://apimaster.ai/v1/video/generations/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
Kompatible Abfrage erfolgreich:
{
"code":"success",
"message":"",
"data":{
"error":null,
"format":"mp4",
"metadata":null,
"status":"succeeded",
"task_id":"task_PUBLIC_VIDEO_ID",
"url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content",
"actual_time":138,
"last_frame_url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame"
}
}
Das Beispiel enthält optionale Abschlussfelder. actual_time ist die verstrichene Zeit zwischen Übermittlung und Abschluss in Sekunden, nicht die abrechenbare Videodauer. last_frame_url wird weggelassen, wenn kein letztes Frame angefordert wurde oder nicht verfügbar ist. Fehlgeschlagene Aufgaben enthalten keine erfolgsabhängigen Felder für verstrichene Zeit oder das letzte Frame.
OpenAI-Stil Abfrage:
curl "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
| Bedeutung | Kompatibler data.status |
OpenAI-Stil status |
|---|---|---|
| Wartend | queued |
queued |
| Generierend | processing |
in_progress |
| Erfolg | succeeded |
completed |
| Fehler | failed |
failed |
Das OpenAI-ähnliche Objekt verwendet id für die öffentliche Aufgaben-ID und url für die Video-Download-URL. Optionale actual_time und last_frame_url erscheinen auf der obersten Ebene. Bei einem Fehler lesen Sie error.message im entsprechenden Ergebnisobjekt. Antworten enthalten keine monetären Felder.
Herunterladen mit dem API-Schlüssel desselben Kontos. Das Öffnen einer Ergebnis-URL ohne Autorisierung reicht nicht aus. Speichern Sie die Ausgabe umgehend.
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content" \
-H "Authorization: Bearer YOUR_API_KEY" -o output.mp4
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame" \
-H "Authorization: Bearer YOUR_API_KEY" -o last-frame.jpg
Python vollständiger Workflow
import os
import time
import requests
base = "https://apimaster.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['APIMASTER_API_KEY']}"}
response = requests.post(base + "/videos/generations", headers=headers, json={
"model": "seedance-2.0-mini",
"prompt": "A small paper boat on calm water at sunrise",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": True,
"return_last_frame": True,
}, timeout=90)
response.raise_for_status()
task_id = response.json()["data"][0]["task_id"]
for _ in range(240):
response = requests.get(base + "/video/generations/" + task_id,
headers=headers, timeout=30)
response.raise_for_status()
task = response.json()["data"]
if task["status"] == "failed":
raise RuntimeError((task.get("error") or {}).get("message", "Video failed"))
if task["status"] == "succeeded":
print("Elapsed seconds:", task.get("actual_time"))
for field, filename in [("url", "output.mp4"), ("last_frame_url", "last-frame.jpg")]:
if task.get(field):
with requests.get(task[field], headers=headers, stream=True, timeout=120) as result:
result.raise_for_status()
with open(filename, "wb") as out:
for chunk in result.iter_content(1024 * 1024):
out.write(chunk)
break
time.sleep(5)
else:
raise TimeoutError("Task still processing; query the same task_id later")
Abrechnung nach Dauer
Es gibt vier Tarife: 480P, 720P, 480P-input und 720P-input. Ein Tarif mit der Bezeichnung "hochgeladene Videos" bedeutet, dass die Anfrage Referenz-Video-Input enthält. Wählen Sie den Input-Tarif für die angeforderte Ausgabequalität, auch wenn Bild-/Audio-Referenzen ebenfalls vorhanden sind.
- Ohne Referenzvideo: Generierte Videosekunden × Stückpreis der entsprechenden Auflösung.
- Mit Referenzvideo: (Gesamte Referenz-Videosekunden + generierte Videosekunden) × Stückpreis des entsprechenden Input-Tarifs.
- Der konfigurierte Basis-Stückpreis wird mit den anwendbaren Kanal- und Konto-/Gruppen-Koeffizienten multipliziert, um Ihren endgültigen Stückpreis zu erhalten. Überprüfen Sie Ihre Modellkarte und Verbrauchsaufzeichnungen im Wallet auf den anwendbaren Preis.
Zum Beispiel verwenden ein 4-Sekunden langes Referenzvideo und eine 5-Sekunden lange Ausgabe 9 abrechenbare Sekunden im Input-Tarif. Der Stückpreis des Input-Tarifs kann vom regulären Tarif abweichen; berechnen Sie nicht nur die Ausgabedauer oder wenden Sie den regulären Tarif auf Video-Referenzen an. Bilder und Audio fügen keine Referenz-Videosekunden hinzu. Generiertes Audio führt für diese vier konfigurierten Preise keinen separaten Ton/Stille-Tarif ein.
Die Einreichung reserviert die angeforderte Ausgabedauer plus die verifizierte Input-Videodauer, wenn vorhanden. Eine weggelassene Ausgabedauer reserviert 5 Ausgabesekunden. Die Aufgabe behält ihren zum Einreichungszeitpunkt gültigen Tarif; bei Fertigstellung wird die tatsächliche Dauer abgerechnet. Eine fehlgeschlagene Generierung erstattet die Gebühr für die Videoaufgabe.
Fehler und Fehlerbehebung
Ungültige Anfragen geben einen HTTP-Fehler zurück. Lesen Sie die JSON-Fehlermeldung sowie den Statuscode. Die Parameterüberprüfung verwendet den Fehler-Wrapper von APIMaster, zum Beispiel:
{"code":"invalid_request","message":"First/last-frame tasks require adaptive aspect_ratio","data":null}
| Problem | Maßnahme |
|---|---|
| Nicht unterstützte Auflösung / Dauer | Wählen Sie 480p oder 720p und eine ganzzahlige Dauer von 4 bis 15. |
| Widersprüchliches Seitenverhältnis oder Größe | Verwenden Sie konsistente aspect_ratio, ratio, size und resolution; am besten behalten Sie nur das explizite Seitenverhältnis/Auflösungs-Paar. |
| Einschränkungen für ersten/letzten Frame | Verwenden Sie adaptive, höchstens eine von jeder Rolle, und lassen Sie Video-/Audio-Referenzen weg. |
| Referenzvideo kann nicht inspiziert werden | Stellen Sie ein zugängliches, vollständiges MP4/MOV mit einer gültigen Dauer bereit. |
| Referenz-Audio ohne Bild/Video | Fügen Sie Bild-/Video-Referenzen hinzu oder entfernen Sie die Audio-Referenz. |
| Ablehnung durch Inhaltsmoderation | Ändern Sie den Text oder das Bild und stellen Sie eine neue Anfrage. Ein Fehler des Moderationsdienstes kann die Generierung fortsetzen lassen; dies ist keine absolute Sicherheitsgarantie. |
FormatUnsupported / Asynchrone Ablehnung von Format/Inhalt |
Lesen Sie das error.message der fehlgeschlagenen Aufgabe, prüfen Sie Formatanforderungen und Materialanforderungen und ersetzen Sie die Quelle. |
401 |
Stellen Sie einen gültigen Bearer-API-Schlüssel bereit. |
| Unzureichendes Guthaben | Füllen Sie Ihr Guthaben auf oder verwenden Sie einen Schlüssel mit ausreichendem Kontingent. |
429 / Vorübergehender Dienstfehler |
Warten Sie und wiederholen Sie den Vorgang mit Backoff; vermeiden Sie doppelte Einreichungen nach einem unklaren Timeout. |
Synchronen Anfragen mit ungültigen Parametern erstellen keine Videoaufgaben oder berechnen Generierungskosten. Angenommene Aufgaben können dennoch asynchron fehlschlagen; überprüfen Sie den endgültigen Aufgabenstatus, bevor Sie ein Ergebnis verwenden.
Siehe auch: Video-Generierung – Überblick, Seedance 2.0, Seedance 2.0 Fast und Seedance 2.5.
