Seedance API
Bygg videogenerering inn i produktet ditt med Seedance 2.5 eller Seedance 2.0, asynkrone oppgaver, webhooks og kredittbasert fakturering.
https://api.seevio.aiPå denne siden
Introduksjon
Med API-et kan du sende inn videogenereringsoppgaver for Seedance 2.5 og Seedance 2.0 programmatisk. Seedance 2.5 er den anbefalte modellen og støtter tekst-til-video, bilde-til-video basert på første ramme eller første og siste ramme, samt multimodale referanser til video. Genereringen skjer asynkront: du oppretter en oppgave, mottar en oppgave-ID umiddelbart, og henter deretter den ferdige videoen ved å polle oppgave-endepunktet eller via en webhook.
Asynkrone oppgaver
Polling fungerer utmerket for utvikling og enkle integrasjoner.
Klar for webhook
Webhooks anbefales for produksjon da du slipper intensiv polling, og tjenesten din får beskjed med en gang en oppgave når en endelig tilstand.
Integrert kredittkontroll
Kreditter reserveres ved innsending. Fullførte oppgaver belastes fra denne reservasjonen, mens feilede oppgaver eller tidsavbrudd refunderes automatisk.
Autentisering
Opprett en API-nøkkel i dashbordet og send den med som en Bearer-token i alle forespørsler. Den fullstendige nøkkelen vises kun én gang når den opprettes.
Authorization: Bearer sk_live_xxxxxxxxBruk sk_live_-nøkler for produksjonstrafikk.
Bruk sk_test_-nøkler for integrasjonstesting i sandkasse med de samme API-betingelsene.
Manglende, ugyldige eller tilbakekalte nøkler returnerer invalid_api_key med HTTP 401.
Hurtigstart
Send først inn en oppgave. Når oppgaven er godkjent, velger du hvordan du vil motta resultatet: enten ved å polle oppgave-endepunktet, eller ved å motta det endelige resultatet via en webhook.
Opprett en asynkron videooppgave og få en oppgave-ID umiddelbart.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "1080p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'Hent status fra oppgave-endepunktet når integrasjonen din foretrekker eksplisitt polling.
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Angi en callback_url når du sender inn oppgaven for å motta callback ved fullføring eller feil, og oppdater din egen oppgavestatus.
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Opprett en videooppgave
Opprett en videooppgave med POST /v1/videos/generations. Forespørselens body må inneholde model på øverste nivå, en valgfri callback_url og et input-objekt med prompt og genereringsinnstillinger.
/v1/videos/generationscurl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "1080p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'Genereringsmoduser
generation_type styrer hvilke medietyper som godtas og hvordan modellen tolker dem.
Sett model til seedance-2-5 for å generere videoer i 480p, 720p eller 1080p med varighet fra 4 til 30 sekunder.
- Tekst-til-video med tilpasset (adaptive), 16:9, 9:16, 1:1, 4:3, 3:4 eller 21:9 bildeformat
- Bilde-til-video fra ett bilde (første ramme) eller to bilder (første og siste ramme); bildeformatet må settes til adaptive
- Referanse-til-video med opptil 30 bilder, 10 videoer og 10 lydfiler (maksimalt 50 filer totalt)
- Hver video- eller lydreferanse må være på 2–30 sekunder; samlet video- og lydvarighet kan ikke overstige 30 sekunder hver
- Kun lyd som referanse og return_last_frame støttes; seed støttes ikke
| Modus | Påkrevde medier | Valgfrie medier | Merknader |
|---|---|---|---|
text-to-video | prompt | duration, aspect_ratio, resolution, seed | Kun tekstprompt. image_urls, video_urls og audio_urls trengs ikke. |
image-to-video | prompt + image_urls-array (1–2 bilde-URL-er) | duration, aspect_ratio, resolution, seed | image_urls må være en array. Oppgi 1 bilde-URL for første ramme, eller 2 bilde-URL-er for første og siste ramme. Video og lyd ignoreres. |
reference-to-video | prompt + minst ett bilde, video eller lyd som referanse | bilder, videoer og lyd innenfor tillatte grenser | Seedance 2.5 støtter referanser med kun lyd. For Seedance 2.0 må du legge til minst ett bilde eller én video hvis du inkluderer lyd. |
text-to-videoBruk tekst-til-video når tekstprompten er den eneste kreative kilden.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "1080p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'image-to-videoBruk bilde-til-video når input.image_urls er en array med 1–2 bilde-URL-er: én URL setter første ramme, og to URL-er setter første og siste ramme. Video- og lydreferanser ignoreres i denne modusen.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"input": {
"prompt": "the subject turns toward camera, soft studio motion",
"generation_type": "image-to-video",
"image_urls": ["https://your.cdn.com/first-frame.jpg"],
"duration": 5,
"resolution": "720p"
}
}'reference-to-videoBruk referanse-til-video for mer presis regi med referansebilder, videoer og lyd. Seedance 2.5 godtar kun lyd som referanse, mens Seedance 2.0 krever minst ett bilde eller én video hvis du legger til lyd.
Grenser for kildemateriale
- Seedance 2.5: opptil 30 referansebilder
- Seedance 2.5: opptil 10 referansevideoer, hver på 2–30 sekunder og total varighet <= 30 sekunder
- Seedance 2.5: opptil 10 referanselydfiler, hver på 2–30 sekunder og total varighet <= 30 sekunder
- Seedance 2.5: maksimalt 50 filer totalt på tvers av alle typer
- Seedance 2.0-varianter beholder sine eksisterende grenser: 9 bilder, 3 videoer, 3 lydfiler og 15 sekunder per video-/lydgruppe
Støttede inndatakombinasjoner
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"input": {
"prompt": "use the product from image 1 and the camera motion from the reference video",
"generation_type": "reference-to-video",
"image_urls": ["https://your.cdn.com/product.jpg"],
"video_urls": ["https://your.cdn.com/camera-motion.mp4"],
"audio_urls": [],
"duration": 8,
"resolution": "720p"
}
}'Forespørselsparametere
Parameternavn, enum-verdier, endepunkter og eksempler er en del av API-betingelsene. Beskrivelsene nedenfor forklarer hvordan de ulike feltene fungerer.
Headere
| Header | Påkrevd | Beskrivelse | Eksempel |
|---|---|---|---|
Authorization | Ja | Bearer API-nøkkel som brukes til å autentisere forespørselen. | Bearer sk_live_xxx |
Content-Type | Ja | Alle skrivespørsmål bruker JSON. | application/json |
Felt på toppnivå
| Felt | Type | Påkrevd | Standardverdi | Verdiområde / Enum | Moduser | Eksempel |
|---|---|---|---|---|---|---|
modelModellvariant som brukes til genereringen. Bruk seedance-2-5 for Seedance 2.5, seedance-2-0 for Seedance 2.0, seedance-2-0-fast for Seedance 2.0 Fast, eller seedance-2-0-mini for Seedance 2.0 Mini. | string | Ja | - | seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-mini | alle | seedance-2-5 |
callback_urlHTTPS-endepunkt som mottar callbacks når oppgaven fullføres eller feiler. | string | Nei | - | HTTPS-URL, ikke private nettverk | alle | https://your-domain.com/hook |
inputGenereringsinnstillinger og mediereferanser. | object | Ja | - | - | alle | - |
input.* felt
| Felt | Type | Påkrevd | Standardverdi | Verdiområde / Enum | Moduser | Eksempel |
|---|---|---|---|---|---|---|
input.promptTekstprompt som beskriver videoen som skal lages. | string | Ja | - | ikke-tom tekst | alle | a cat surfing |
input.generation_typeGenereringsmodus. Standardverdien er text-to-video. | string | Nei | text-to-video | text-to-video | image-to-video | reference-to-video | - | image-to-video |
input.image_urlsOffentlig tilgjengelige bilde-URL-er. For bilde-til-video sender du 1 bilde for første ramme eller 2 bilder for første og siste ramme. For referanse-til-video støtter Seedance 2.5 opptil 30 bilder, og Seedance 2.0 opptil 9. | string[] | Betinget | [] | Bilde-til-video: 1 eller 2 bilder. Referanse-til-video: opptil 30 for Seedance 2.5; opptil 9 for Seedance 2.0. | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsOffentlig tilgjengelige referansevideoer (kun for referanse-til-video). Seedance 2.5 støtter opptil 10 videoer på 2–30 sekunder hver, med en samlet spilletid på <= 30 sekunder. Seedance 2.0 støtter opptil 3 videoer med samlet spilletid på <= 15 sekunder. | string[] | Nei | [] | Seedance 2.5: opptil 10 videoer på 2–30 sekunder hver, samlet varighet <= 30 sekunder. Seedance 2.0: opptil 3 videoer, samlet varighet <= 15 sekunder. | reference-to-video | [] |
input.audio_urlsOffentlig tilgjengelige referanselydfiler (kun for referanse-til-video). Seedance 2.5 støtter opptil 10 lydfiler på 2–30 sekunder hver, med en samlet spilletid på <= 30 sekunder, og tillater referanser med kun lyd. Seedance 2.0 støtter opptil 3 lydfiler med samlet spilletid på <= 15 sekunder. | string[] | Nei | [] | Seedance 2.5: opptil 10 lydfiler på 2–30 sekunder hver, samlet varighet <= 30 sekunder. Seedance 2.0: opptil 3 lydfiler, samlet varighet <= 15 sekunder. | reference-to-video | [] |
input.durationDen ferdige videoens varighet i sekunder. | int | Nei | 5 | Seedance 2.5: 4–30 sekunder. Seedance 2.0: 4–15 sekunder. | alle | 5 |
input.aspect_ratioVideoens bildeformat. adaptive lar tjenesten velge det beste formatet selv. Seedance 2.5 bilde-til-video støtter kun adaptive. | string | Nei | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptive | alle | 16:9 |
input.resolutionOppløsningsnivå for den ferdige videoen. | string | Nei | 720p | Seedance 2.5: 480p | 720p | 1080p. Seedance 2.0: 480p | 720p | 1080p | 4k (avhengig av variant). | alle | 720p |
input.generate_audioOm modellen skal generere lyd dersom det støttes. | boolean | Nei | true | true | false | alle | true |
input.watermarkOm det skal legges til et vannmerke. | boolean | Nei | false | true | false | alle | false |
input.web_searchOm nettsøk skal tillates for å forbedre resultatet når dette støttes. | boolean | Nei | false | true | false | alle | false |
input.return_last_frameOm URL-en til den siste rammen skal returneres når den er tilgjengelig. | boolean | Nei | false | true | false | alle | false |
input.seedDeterministisk seed for Seedance 2.0-variantene. Seedance 2.5 støtter ikke dette feltet; utelat det. | int | Nei | -1 | -1 eller 0-4294967295 | alle | -1 |
Kredittkostnaden varierer basert på oppløsning, varighet, modell, og om referanse-til-video inneholder videoreferanser. Verdien credits som returneres i opprettelsessvaret, er det nøyaktige beløpet som reserveres for oppgaven.
Se kredittpriserRespons
Dette er suksessresponsen fra POST /v1/videos/generations. Den bekrefter at oppgaven er mottatt og at kreditter er reservert. Bruk den returnerte taskId for å polle GET /v1/tasks/:id, eller for å koble oppgaven til en callback ved fullføring eller feil.
Suksessrespons for POST /v1/videos/generations
{
"taskId": "3f2aK9mR...",
"credits": 100
}Hent oppgavestatus
Bruk GET /v1/tasks/:id for å hente gjeldende oppgavestatus. Ikke poll oftere enn hvert 10. sekund. Vi anbefaler å bruke webhooks i produksjonssystemer.
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Respons for fullført oppgave
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "charged",
"credits": 100,
"failed_reason": null,
"data": {
"results": ["https://cdn.seevio.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Respons for feilet oppgave
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "refunded",
"credits": 100,
"failed_reason": "provider_failed"
}| Verdi | Betydning |
|---|---|
status=queued | Mottatt og venter på å bli sendt til behandling. |
status=generating | Leverandøren behandler genereringen. |
status=completed | Videoen er klar, og data.results inneholder URL-en til resultatet. |
status=failed | Genereringen feilet eller ble tidsavbrutt. |
billing_status=reserved | Kreditter er reservert mens oppgaven pågår. |
billing_status=charged | Oppgaven var vellykket, og reservasjonen er bokført. |
billing_status=refunded | Oppgaven feilet eller ble tidsavbrutt, og de reserverte kredittene ble returnert. |
billing_status=refund_failed | Refusjonstransaksjonen feilet og må håndteres manuelt. |
Etter video_expires_at vil data.results være tom. Last ned og lagre filen før gyldighetsperioden utløper.
Webhooks
Hvis callback_url er oppgitt, kaller Seedance endepunktet ditt når oppgaven er fullført eller har feilet, og sender JSON-data med det endelige resultatet. Hvis endepunktet ditt returnerer en statuskode som ikke er 2xx, eller ikke svarer innen 15 sekunder, prøver vi å sende dataene på nytt opptil 5 ganger. Forøkene bruker samme task id, så du kan fjerne duplikater basert på denne. Returner en 200-respons så snart du har lagret callback-dataene trygt.
Callback ved fullført oppgave
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"results": ["https://cdn.seevio.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Callback ved feilet oppgave
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 100
}
}export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Sjekk strukturen på callback-dataene, fjern duplikater ved hjelp av id, oppdater din egen oppgavestatus og svar raskt.
callback_url må bruke HTTPS og kan ikke peke til private IP-adresser, loopback eller link-local-nettverk.
Feilmeldinger
POST /v1/videos/generations og GET /v1/tasks/:id returnerer dette feilformatet dersom selve API-forespørselen feiler – for eksempel ved ugyldige parametere, ugyldig API-nøkkel, utilstrekkelig kreditt, rate-begrensning eller hvis oppgaven ikke finnes. Enkelte feilmeldinger inneholder ekstra felt som required, available eller retry_after avhengig av situasjonen.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 100,
"available": 12
}
}| Kode | HTTP | Betydning | Prøv igjen? |
|---|---|---|---|
invalid_request | 400 | Manglende eller ugyldige parametere. | Nei, korriger forespørselen. |
invalid_api_key | 401 | API-nøkkelen mangler, er ugyldig eller har blitt trukket tilbake. | Nei, bruk en gyldig nøkkel. |
insufficient_credits | 402 | Ikke nok kreditter. Oppgaven blir ikke godkjent eller belastet. | Prøv igjen etter påfylling. |
forbidden | 403 | API-nøkkelen mangler nødvendige rettigheter. | Nei. |
not_found | 404 | Oppgaven finnes ikke, eller tilhører ikke eieren av API-nøkkelen. | Nei. |
rate_limited | 429 | Grensen for antall forespørsler er overskredet. | Ja, følg Retry-After. |
internal_error | 500 | Intern serverfeil. | Ja, prøv igjen senere. |
Hastighetsbegrensninger
Hastighetsbegrensninger (rate limits) gjelder per API-nøkkel med et glidende tidsvindu. Standardgrensen for videogenerering er 100 forespørsler i minuttet, mens statusforespørsler har romsligere grenser. HTTP 429-responser inneholder en Retry-After-header.
Generering
100/min
Statusforespørsler
Mer romslig
429-header
Retry-After
Fakturering og kreditter
API-et bruker prinsippet reserver ved innsending, belast ved suksess og refunder ved feil. Brukssidene i dashbordet viser historikk over API-kreditter, oppgavelogger og tidsbasert bruksstatistikk.
Reservert
Kreditter sjekkes og reserveres når oppgaven godtas.
Belastet
Fullførte oppgaver gjør at den eksisterende reservasjonen bokføres.
Refundert
Oppgaver som feiler eller avbrytes på grunn av tidsavbrudd, tilbakefører automatisk de reserverte kredittene.
Følg med på forbruket i dashbordet
Se API-logger, tidslinjer for oppgaver, kreditthistorikk og tidsbasert bruksstatistikk.