Seedance 3.0 Entwickler-API / v1

Seedance 2.5.
In Ihrem Produkt.

Verwandeln Sie Text, Bilder und Referenzmedien mit einer API in Videos. Nutzen Sie Ihre Seedance 3.0-Credits und Ihren bestehenden Workflow – mit klar definierten Anfragen und Ergebnissen.

Gemeinsame Konto-CreditsAsynchrone VideoaufgabenIdempotente Anfragen
POST /api/v1/videos
{
  "model": "seedance-2.5",
  "mode": "text-to-video",
  "prompt": "A paper boat drifting into the morning light",
  "duration": 5,
  "resolution": "720p",
  "aspectRatio": "16:9"
}
Ihr Schlüssel. Ihre Credits. Ihre Anwendung.
01 / INTEGRATION STARTEN

Ihr erstes Video mit wenigen Anfragen.

Speichern Sie Ihren Schlüssel auf dem Server als SEADANCE_API_KEY. Setzen Sie SEADANCE_REQUEST_KEY auf einen eindeutigen Wert für dieses Video (zum Beispiel mit uuidgen) und behalten Sie diesen Wert bei Wiederholungen bei. Stellen Sie sicher, dass Ihr Konto genügend Credits enthält. Dieses Beispiel reserviert 350 Credits für ein 5-sekündiges 720p-Video. Kopieren Sie die zurückgegebene id, um den Status abzufragen.

Terminal
export SEADANCE_API_KEY="sd_live_your_key"
# Keep this value for retries; choose a new value for a new video.
export SEADANCE_REQUEST_KEY="${SEADANCE_REQUEST_KEY:-$(uuidgen)}"

curl --fail-with-body "https://seedance3ai.dev/api/v1/videos" \
  -H "Authorization: Bearer $SEADANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SEADANCE_REQUEST_KEY" \
  --data '{
  "model": "seedance-2.5",
  "mode": "text-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5
}'

Diese Dokumentation startet niemals automatisch eine Generierung. Das Senden einer Erstellungsanfrage verbraucht Ihre Credits.

Authentifizieren Sie sich über Ihren Server.

Jeder API-Aufruf verwendet Authorization: Bearer sd_live_…. Speichern Sie Schlüssel nicht in Browsern, mobilen Apps, öffentlichen Repositories oder clientseitigen Bundles. Der vollständige Schlüssel wird nur einmal angezeigt; Sie können ihn im API-Dashboard widerrufen.

Basis-URLhttps://seedance3ai.dev/api/v1

Standardberechtigungen der Schlüssel: videos:write für Uploads und Generierung; videos:read für Modelle und Aufgabenstatus; account:read für Credits. Kontozugriff und Limits gelten gemeinsam für alle Schlüssel.

Erstellen Sie eine Videoaufgabe.

POST/api/v1/videos

Verwenden Sie Content-Type: application/json und für jede beabsichtigte Generierung einen eindeutigen Idempotency-Key. Die Annahme der Aufgabe beim Anbieter kann etwas dauern. Bei einem Verbindungs-Timeout senden Sie denselben Body mit demselben Schlüssel erneut. HTTP 202 bedeutet angenommen, nicht abgeschlossen. Idempotency-Key akzeptiert 1–128 druckbare ASCII-Zeichen ohne Leerzeichen.

ParameterWerte und Anforderungen
modelstringseedance-2.5

Erforderlich. Die API unterstützt derzeit Seedance 2.5.

modestringtext-to-video | image-to-video | reference-to-video

Erforderlich. Wählen Sie den Eingabemodus; die Medienfelder müssen zu diesem Modus passen.

promptstring3–30.000 Zeichen

Erforderlich. Beschreiben Sie Szene, Bewegung und Ton.

durationinteger4, 5, 6, 8, 10, 12, 15, 20, 25, 29, 30

Erforderlich, in Sekunden. Bei der Bearbeitung wird die Länge des Quellvideos verwendet und für die Abrechnung auf volle Sekunden aufgerundet.

resolutionstring480p | 720p | 1080p

Erforderlich. Bestimmt den Credit-Tarif.

aspectRatiostring1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 21:9

Erforderlich. Bei Bild-zu-Video wird das Seitenverhältnis des ersten Frames verwendet.

firstFrameUrl / lastFrameUrlstringpublicObjectUrl der hochgeladenen Datei

Bild-zu-Video erfordert einen ersten Frame. Ein letzter Frame ist optional.

referenceImageUrlsstring[]Bis zu 30 Bilder

Für reference-to-video. Laden Sie jede Datei zuerst in Ihr Konto hoch.

referenceVideoUrls / referenceAudioUrlsstring[]Bis zu 10 Videos / 10 Audiodateien

Jede Gruppe darf insgesamt höchstens 30 Sekunden umfassen. Der Server prüft die Medien vor der Generierung.

referenceTaskTypestringreference | edit | extend

Optional, Standardwert: reference. edit und extend erfordern reference-to-video mit genau einem Quellvideo.

generateAudiobooleantrue

Optional. Seedance 2.5 enthält native Audioausgabe; false wird abgelehnt.

batchCountinteger1

Optional. Ein Video pro Anfrage.

Über diese Felder unterstützt Seedance 2.5 Text, erste und letzte Frames, multimodale Referenzen sowie die Bearbeitung und Verlängerung von Videos. Maßgeblich für aktuell verfügbare Funktionen und Preise ist GET /models.

Beispielanfrage für Bild-zu-Video
request.json
{
  "model": "seedance-2.5",
  "mode": "image-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "firstFrameUrl": "YOUR_UPLOADED_PUBLIC_OBJECT_URL"
}
Beispielanfrage für Referenz-zu-Video
request.json
{
  "model": "seedance-2.5",
  "mode": "reference-to-video",
  "prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
  "aspectRatio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "referenceImageUrls": [
    "YOUR_UPLOADED_IMAGE_URL"
  ],
  "referenceVideoUrls": [
    "YOUR_UPLOADED_VIDEO_URL"
  ]
}
EIGENE REFERENZEN VERWENDEN

Einmal hochladen. Per URL referenzieren.

Senden Sie fileName, contentType, size (Bytes) und kind (image, video oder audio) an POST /uploads. Laden Sie die unveränderten Dateibytes vor expiresAt mit PUT an uploadUrl hoch und verwenden Sie dabei requiredHeaders. Nach erfolgreichem Upload nutzen Sie publicObjectUrl in der Generierungsanfrage. Referenzen müssen zum selben Konto gehören; beliebige externe URLs und base64-Eingaben werden nicht akzeptiert.

upload.mjs
// Node.js 20+ · upload once, then use publicObjectUrl
import { readFile } from "node:fs/promises";

const bytes = await readFile("./first-frame.jpg");
const signed = await fetch("https://seedance3ai.dev/api/v1/uploads", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SEADANCE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    fileName: "first-frame.jpg", contentType: "image/jpeg",
    size: bytes.length, kind: "image",
  }),
});
const upload = await signed.json();
if (!signed.ok) throw new Error(JSON.stringify(upload));
const stored = await fetch(upload.uploadUrl, {
  method: "PUT", headers: upload.requiredHeaders, body: bytes,
});
if (!stored.ok) throw new Error("Upload failed");
console.log(upload.publicObjectUrl);
// Use this URL as firstFrameUrl in an image-to-video request.

Die angegebene Größe und der Inhaltstyp müssen mit der hochgeladenen Datei übereinstimmen. Upload-URLs laufen ab; fordern Sie bei Bedarf eine neue an. Dauer, Abmessungen und Format der Medien werden vor der Generierung geprüft.

Verfolgen Sie die Aufgabe bis zum Abschluss.

GET /videos/:id liefert den aktuellen Aufgabenstatus. Fragen Sie ihn alle 5–10 Sekunden ab, beenden Sie die Abfrage bei succeeded oder failed und verlängern Sie die Wartezeit, wenn Retry-After vorhanden ist. Abfragen sind auf API-Aufgaben Ihres Kontos beschränkt. Die aktuelle Integration verwendet Polling.

GET /api/v1/videos/:id
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos/TASK_ID" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"
queuedprocessingsucceeded / failed
Beispiel einer erfolgreichen Aufgabe
{
  "id": "a1b2c3d4-1234-4567-8901-abcdef123456",
  "status": "succeeded",
  "credits_reserved": 350,
  "created_at": "2026-10-27T00:00:00.000Z",
  "output": {
    "url": "https://your-result-host.example/video.mp4"
  },
  "error": null,
  "refund_status": "not_applicable"
}

output ist null, bis ein Video verfügbar ist. Eine fehlgeschlagene Aufgabe enthält einen Fehler; prüfen Sie refund_status für den Status der Credit-Erstattung. Laden Sie erfolgreiche Ergebnisse zeitnah herunter. Das Löschen eines Videos setzt die Anfrage nicht zurück: Eine Wiederholung mit demselben Idempotency-Key gibt 410 video_deleted zurück und kann das Video nicht erneut erstellen.

EIN KONTO, EIN GUTHABEN

Kennen Sie die Credit-Kosten vor der Integration.

API-Generierungen nutzen dieselben Konto-Credits und Tarife für Seedance 2.5 wie die Website. Bei Annahme einer Anfrage werden Credits reserviert. Fehlgeschlagene Generierungen erstatten diese Credits auf Ihr Einmalguthaben. Eine fehlgeschlagene Validierung vor der Aufgabenerstellung erzeugt kein kostenpflichtiges Video.

480p

30Credits / Ausgabesekunde

+ 20 Credits / Referenzvideosekunde

720p

70Credits / Ausgabesekunde

+ 50 Credits / Referenzvideosekunde

1080p

160Credits / Ausgabesekunde

+ 90 Credits / Referenzvideosekunde

Kosten = Ausgabedauer × Ausgabetarif plus gegebenenfalls Referenzvideodauer × Referenztarif. Die Referenzvideodauer wird auf dem Server gemessen; die Gesamtdauer wird für die Abrechnung auf volle Sekunden abgerundet. Native Audioausgabe ist enthalten. Beispielsweise kosten 5 Sekunden in 720p 350 Credits oder 600 Credits mit einem 5-sekündigen Referenzvideo.

Modelle, Preise und Guthaben abfragen
curl --fail-with-body "https://seedance3ai.dev/api/v1/models" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"

curl --fail-with-body "https://seedance3ai.dev/api/v1/credits" \
  -H "Authorization: Bearer $SEADANCE_API_KEY"

Im API-Dashboard sehen Sie verfügbare Credits, den Anfrageverlauf und Kontolimits. Laden Sie Credits über die Preisseite der Website mit demselben Konto auf; es gibt weder ein separates API-Guthaben noch einen API-Endpunkt zum Aufladen. Bei ausreichendem Credit-Guthaben ist kein aktives Abonnement erforderlich. Für den Ablauf von Abonnements und Einmal-Credits gelten dieselben Regeln wie auf der Website.

Das Aufladen von Credits erhöht weder Anfragerate, Parallelität noch Tageslimits und aktiviert kein deaktiviertes Konto erneut. Das Tageslimit zählt alle reservierten Credits einschließlich erstatteter Fehlversuche und wird um 00:00 UTC zurückgesetzt. Kontaktieren Sie den Support, wenn Ihre Anwendung höhere Limits benötigt.

Tarife ansehen und Credits aufladen

Sicher wiederholen. Doppelte Kosten vermeiden.

Verwenden Sie pro beabsichtigtem Video einen Idempotency-Key und bewahren Sie ihn zusammen mit dem exakten Anfrage-Body auf, bis das Ergebnis bekannt ist. Neue Schlüssel stehen für neue Generierungen. Eine Fehlerantwort enthält error.code, error.message und request_id; geben Sie die Anfrage-ID an, wenn Sie den Support kontaktieren.

HTTPBedeutungNächster Schritt
400Ungültige AnfragePrüfen Sie Fehlermeldung, Felder und Medienbeschränkungen, bevor Sie die Anfrage wiederholen.
401Ungültiger API-SchlüsselPrüfen Sie den Bearer-Header. Widerrufene Schlüssel können nicht erneut verwendet werden.
402Nicht genügend CreditsLaden Sie Credits auf dasselbe Seedance 3.0-Konto auf.
403Zugriff verweigertDer API-Zugriff ist deaktiviert oder dem Schlüssel fehlt die erforderliche Berechtigung.
404Video nicht gefundenVerwenden Sie die ID einer Aufgabe, die Ihr Konto über diese API erstellt hat.
409AnfragekonfliktWarten Sie bei request_in_progress und wiederholen Sie die Anfrage mit demselben Body und Schlüssel. idempotency_conflict bedeutet, dass der Schlüssel für einen anderen Body wiederverwendet wurde. request_expired oder request_previously_failed bestätigt, dass kein Videoauftrag übermittelt wurde: Beheben Sie das gemeldete Problem und verwenden Sie dann einen neuen Schlüssel.
410Video gelöschtvideo_deleted bedeutet, dass die ursprüngliche Anfrage verarbeitet, ihr Video aber gelöscht wurde. Mit ihrem Schlüssel kann keine erneute Generierung erfolgen. Beenden Sie die Wiederholungen; verwenden Sie einen neuen Schlüssel nur, wenn Sie ausdrücklich eine neue, kostenpflichtige Generierung wünschen.
429Kontolimit erreichtBeachten Sie Retry-After. Limits für Anfragerate, gleichzeitige Aufgaben und tägliche Credits gelten gemeinsam für alle Schlüssel. Tagesbudgets werden um 00:00 UTC zurückgesetzt.
500 / 503Vorübergehender DienstfehlerBehalten Sie den Idempotency-Key bei. Wiederholen Sie dieselbe Anfrage; erstellen Sie bei unklarem Ergebnis keinen neuen Schlüssel.

Wenn die Übermittlung request_in_progress zurückgibt, warten Sie und wiederholen Sie dieselbe Anfrage. Wechseln Sie niemals zu einem neuen Schlüssel, nur um einen Timeout zu umgehen. Falls die Erstattung für eine fehlgeschlagene Aufgabe noch aussteht, bewahren Sie die Aufgaben-ID auf und kontaktieren Sie den Support.

Bereit für die Integration?

Erstellen Sie einen Schlüssel und beginnen Sie mit Ihrer ersten Integration.

API-Dashboard öffnen