Seedance 3.0 API voor ontwikkelaars / v1

Seedance 2.5.
In uw eigen product.

Zet tekst, afbeeldingen en referentiemateriaal om in video met één API. Gebruik uw Seedance 3.0-credits en bestaande workflow, met duidelijk vastgelegde verzoeken en resultaten.

Gedeelde accountcreditsAsynchrone videotakenIdempotente verzoeken
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"
}
Uw sleutel. Uw credits. Uw toepassing.
01 / BEGIN MET BOUWEN

Uw eerste video in een paar verzoeken.

Sla uw sleutel op de server op als SEADANCE_API_KEY. Stel SEADANCE_REQUEST_KEY in op een unieke waarde voor deze video (bijvoorbeeld met uuidgen) en behoud die waarde bij nieuwe pogingen. Zorg dat uw account voldoende credits bevat. Dit voorbeeld reserveert 350 credits voor een video van 5 seconden in 720p. Kopieer de geretourneerde id om de status op te vragen.

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
}'

Deze documentatie start nooit automatisch een generatie. Een verzoek om een video te maken verbruikt uw credits.

Authenticeer vanaf uw server.

Elke API-aanroep gebruikt Authorization: Bearer sd_live_…. Plaats sleutels niet in browsers, mobiele apps, openbare repositories of clientbundels. De volledige sleutel wordt één keer getoond; u kunt deze intrekken in het API-dashboard.

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

Standaardmachtigingen voor sleutels: videos:write voor uploads en generatie; videos:read voor modellen en taakstatus; account:read voor credits. Accounttoegang en limieten gelden voor alle sleutels samen.

Maak een videotaak aan.

POST/api/v1/videos

Gebruik Content-Type: application/json en een unieke Idempotency-Key voor elke gewenste generatie. Het kan even duren voordat de server de taak bij de provider heeft ingediend. Bij een verbindingstime-out herhaalt u dezelfde body met dezelfde sleutel. HTTP 202 betekent geaccepteerd, niet voltooid. Idempotency-Key accepteert 1–128 afdrukbare ASCII-tekens zonder spaties.

ParameterWaarden en vereisten
modelstringseedance-2.5

Verplicht. De API ondersteunt momenteel Seedance 2.5.

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

Verplicht. Kies de invoermodus; de mediavelden moeten bij deze modus passen.

promptstring3–30.000 tekens

Verplicht. Beschrijf de scène, beweging en het geluid.

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

Verplicht, in seconden. Bij bewerken wordt de lengte van de bronvideo gebruikt, voor de facturering naar boven afgerond op hele seconden.

resolutionstring480p | 720p | 1080p

Verplicht. Bepaalt het credittarief.

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

Verplicht. Beeld-naar-video gebruikt de beeldverhouding van het eerste frame.

firstFrameUrl / lastFrameUrlstringpublicObjectUrl van het geüploade bestand

Beeld-naar-video vereist een eerste frame. Een laatste frame is optioneel.

referenceImageUrlsstring[]Maximaal 30 afbeeldingen

Voor reference-to-video. Upload elk bestand eerst naar uw account.

referenceVideoUrls / referenceAudioUrlsstring[]Maximaal 10 video's / 10 audiobestanden

Elke groep mag samen maximaal 30 seconden duren. De server controleert de media vóór het genereren.

referenceTaskTypestringreference | edit | extend

Optioneel, standaard reference. edit en extend vereisen reference-to-video met precies één bronvideo.

generateAudiobooleantrue

Optioneel. Seedance 2.5 bevat ingebouwde audiogeneratie; false wordt geweigerd.

batchCountinteger1

Optioneel. Eén video per verzoek.

Via deze velden ondersteunt Seedance 2.5 tekst, eerste en laatste frames, multimodale referenties en het bewerken en verlengen van video's. GET /models is de actuele bron voor beschikbare functies en prijzen.

Voorbeeldverzoek voor beeld-naar-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"
}
Voorbeeldverzoek voor referentie-naar-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"
  ]
}
GEBRUIK UW EIGEN REFERENTIES

Eén keer uploaden. Verwijzen via URL.

Stuur fileName, contentType, size (bytes) en kind (image, video of audio) naar POST /uploads. Upload de onbewerkte bestandsbytes vóór expiresAt met PUT naar uploadUrl en gebruik daarbij requiredHeaders. Gebruik na een geslaagde upload publicObjectUrl in het generatieverzoek. Referenties moeten bij hetzelfde account horen; willekeurige externe URL's en base64-invoer worden niet geaccepteerd.

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.

De opgegeven grootte en het inhoudstype moeten overeenkomen met het geüploade bestand. Upload-URL's verlopen; vraag zo nodig een nieuwe aan. Duur, afmetingen en formaat van de media worden vóór het genereren gecontroleerd.

Volg de taak tot deze is voltooid.

GET /videos/:id retourneert de huidige taakstatus. Vraag de status elke 5–10 seconden op, stop bij succeeded of failed en verleng de wachttijd als Retry-After aanwezig is. U kunt alleen API-taken van uw eigen account opvragen. De huidige integratie gebruikt 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
Voorbeeld van een geslaagde taak
{
  "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 is null totdat er een video beschikbaar is. Een mislukte taak bevat een fout; controleer refund_status voor de status van de creditteruggave. Download geslaagde resultaten tijdig. Een video verwijderen zet het verzoek niet terug: opnieuw indienen met die Idempotency-Key retourneert 410 video_deleted en kan de video niet opnieuw maken.

ÉÉN ACCOUNT, ÉÉN SALDO

Ken de creditkosten voordat u begint.

API-generatie gebruikt dezelfde accountcredits en Seedance 2.5-tarieven als de website. Credits worden gereserveerd zodra een verzoek is geaccepteerd. Bij een mislukte generatie worden die credits teruggestort op uw eenmalige creditsaldo. Een validatiefout vóór het aanmaken van de taak leidt niet tot een betaalde video.

480p

30credits / uitvoerseconde

+ 20 credits / seconde referentievideo

720p

70credits / uitvoerseconde

+ 50 credits / seconde referentievideo

1080p

160credits / uitvoerseconde

+ 90 credits / seconde referentievideo

Kosten = uitvoerduur × uitvoertarief, plus eventuele referentievideoduur × referentietarief. De duur van referentievideo's wordt op de server gemeten; het totaal wordt voor de facturering naar beneden afgerond op hele seconden. Ingebouwde audio is inbegrepen. Een video van 5 seconden in 720p kost bijvoorbeeld 350 credits, of 600 credits met een referentievideo van 5 seconden.

Modellen, prijzen en uw saldo opvragen
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"

In het API-dashboard vindt u beschikbare credits, de verzoekgeschiedenis en accountlimieten. Voeg credits toe via de prijspagina van de website met hetzelfde account; er is geen apart API-saldo of API-eindpunt om credits op te waarderen. U hebt geen actief abonnement nodig als u voldoende beschikbare credits hebt. Voor het verlopen van abonnementen en eenmalige credits gelden dezelfde regels als op de website.

Credits toevoegen verhoogt de API-frequentie, het aantal gelijktijdige taken of de daglimieten niet en activeert geen uitgeschakeld account opnieuw. De daglimiet telt alle gereserveerde credits mee, inclusief teruggestorte credits van mislukte taken, en wordt om 00:00 UTC teruggezet. Neem contact op met support als uw toepassing hogere limieten nodig heeft.

Abonnementen bekijken en credits toevoegen

Veilig opnieuw proberen. Dubbele kosten voorkomen.

Gebruik één Idempotency-Key per gewenste video en bewaar deze met de exacte verzoekbody totdat het resultaat bekend is. Nieuwe sleutels staan voor nieuwe generaties. Een foutantwoord bevat error.code, error.message en request_id; vermeld de verzoek-ID wanneer u contact opneemt met support.

HTTPBetekenisVolgende stap
400Ongeldig verzoekControleer de foutmelding, velden en mediabeperkingen voordat u het opnieuw probeert.
401Ongeldige API-sleutelControleer de Bearer-header. Ingetrokken sleutels kunnen niet opnieuw worden gebruikt.
402Onvoldoende creditsVoeg credits toe aan hetzelfde Seedance 3.0-account.
403Toegang geweigerdAPI-toegang is uitgeschakeld of de sleutel heeft niet de vereiste machtiging.
404Video niet gevondenGebruik de ID van een taak die uw account via deze API heeft aangemaakt.
409VerzoekconflictWacht bij request_in_progress en probeer het opnieuw met dezelfde body en sleutel. idempotency_conflict betekent dat de sleutel opnieuw is gebruikt voor een andere body. request_expired of request_previously_failed bevestigt dat er geen video-opdracht is ingediend: los het gemelde probleem op en gebruik daarna een nieuwe sleutel.
410Video verwijderdvideo_deleted betekent dat het oorspronkelijke verzoek is verwerkt, maar de video is verwijderd. Met de bijbehorende sleutel kan niet opnieuw worden gegenereerd. Stop met opnieuw proberen; gebruik alleen een nieuwe sleutel als u bewust een nieuwe, betaalde generatie wilt starten.
429Accountlimiet bereiktHoud rekening met Retry-After. Limieten voor verzoekfrequentie, gelijktijdige taken en dagelijkse credits gelden voor alle sleutels samen. Dagbudgetten worden om 00:00 UTC teruggezet.
500 / 503Tijdelijke servicefoutBehoud de Idempotency-Key. Dien hetzelfde verzoek opnieuw in; maak geen nieuwe sleutel aan als het resultaat onzeker is.

Als het indienen request_in_progress retourneert, wacht dan en herhaal hetzelfde verzoek. Gebruik nooit een nieuwe sleutel alleen om een time-out te omzeilen. Als de creditteruggave voor een mislukte taak nog in behandeling is, bewaar dan de taak-ID en neem contact op met support.

Klaar om te integreren?

Maak een sleutel aan en bouw uw eerste integratie.

API-dashboard openen