Seedance API

Bygg videogenerering inn i produktet ditt med Seedance 2.5 eller Seedance 2.0, asynkrone oppgaver, webhooks og kredittbasert fakturering.

Base-URL
https://api.seevio.ai
På 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_xxxxxxxx
sk_live_

Bruk sk_live_-nøkler for produksjonstrafikk.

sk_test_

Bruk sk_test_-nøkler for integrasjonstesting i sandkasse med de samme API-betingelsene.

401

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.

Send inn en oppgave

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
    }
  }'
Resultatmetode: Polling

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"
Resultatmetode: Webhook

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.

POST
/v1/videos/generations
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
    }
  }'

Genereringsmoduser

generation_type styrer hvilke medietyper som godtas og hvordan modellen tolker dem.

Egenskaper i Seedance 2.5
seedance-2-5

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
ModusPåkrevde medierValgfrie medierMerknader
text-to-videopromptduration, aspect_ratio, resolution, seedKun tekstprompt. image_urls, video_urls og audio_urls trengs ikke.
image-to-videoprompt + image_urls-array (1–2 bilde-URL-er)duration, aspect_ratio, resolution, seedimage_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-videoprompt + minst ett bilde, video eller lyd som referansebilder, videoer og lyd innenfor tillatte grenserSeedance 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-video

Bruk 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-video

Bruk 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-video

Bruk 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

Tekst + Bilde
Tekst + Video
Tekst + Lyd (Seedance 2.5)
Tekst + Bilde + Video
Tekst + Bilde + Lyd
Tekst + Video + Lyd
Tekst + Bilde + Video + Lyd
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

HeaderPåkrevdBeskrivelseEksempel
AuthorizationJaBearer API-nøkkel som brukes til å autentisere forespørselen.Bearer sk_live_xxx
Content-TypeJaAlle skrivespørsmål bruker JSON.application/json

Felt på toppnivå

FeltTypePåkrevdStandardverdiVerdiområde / EnumModuserEksempel
model

Modellvariant 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.

stringJa-seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-minialleseedance-2-5
callback_url

HTTPS-endepunkt som mottar callbacks når oppgaven fullføres eller feiler.

stringNei-HTTPS-URL, ikke private nettverkallehttps://your-domain.com/hook
input

Genereringsinnstillinger og mediereferanser.

objectJa--alle-

input.* felt

FeltTypePåkrevdStandardverdiVerdiområde / EnumModuserEksempel
input.prompt

Tekstprompt som beskriver videoen som skal lages.

stringJa-ikke-tom tekstallea cat surfing
input.generation_type

Genereringsmodus. Standardverdien er text-to-video.

stringNeitext-to-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

Offentlig 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_urls

Offentlig 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_urls

Offentlig 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.duration

Den ferdige videoens varighet i sekunder.

intNei5Seedance 2.5: 4–30 sekunder. Seedance 2.0: 4–15 sekunder.alle5
input.aspect_ratio

Videoens bildeformat. adaptive lar tjenesten velge det beste formatet selv. Seedance 2.5 bilde-til-video støtter kun adaptive.

stringNeiadaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptivealle16:9
input.resolution

Oppløsningsnivå for den ferdige videoen.

stringNei720pSeedance 2.5: 480p | 720p | 1080p. Seedance 2.0: 480p | 720p | 1080p | 4k (avhengig av variant).alle720p
input.generate_audio

Om modellen skal generere lyd dersom det støttes.

booleanNeitruetrue | falsealletrue
input.watermark

Om det skal legges til et vannmerke.

booleanNeifalsetrue | falseallefalse
input.web_search

Om nettsøk skal tillates for å forbedre resultatet når dette støttes.

booleanNeifalsetrue | falseallefalse
input.return_last_frame

Om URL-en til den siste rammen skal returneres når den er tilgjengelig.

booleanNeifalsetrue | falseallefalse
input.seed

Deterministisk seed for Seedance 2.0-variantene. Seedance 2.5 støtter ikke dette feltet; utelat det.

intNei-1-1 eller 0-4294967295alle-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 kredittpriser

Respons

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"
}
VerdiBetydning
status=queuedMottatt og venter på å bli sendt til behandling.
status=generatingLeverandøren behandler genereringen.
status=completedVideoen er klar, og data.results inneholder URL-en til resultatet.
status=failedGenereringen feilet eller ble tidsavbrutt.
billing_status=reservedKreditter er reservert mens oppgaven pågår.
billing_status=chargedOppgaven var vellykket, og reservasjonen er bokført.
billing_status=refundedOppgaven feilet eller ble tidsavbrutt, og de reserverte kredittene ble returnert.
billing_status=refund_failedRefusjonstransaksjonen 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
  }
}
KodeHTTPBetydningPrøv igjen?
invalid_request400Manglende eller ugyldige parametere.Nei, korriger forespørselen.
invalid_api_key401API-nøkkelen mangler, er ugyldig eller har blitt trukket tilbake.Nei, bruk en gyldig nøkkel.
insufficient_credits402Ikke nok kreditter. Oppgaven blir ikke godkjent eller belastet.Prøv igjen etter påfylling.
forbidden403API-nøkkelen mangler nødvendige rettigheter.Nei.
not_found404Oppgaven finnes ikke, eller tilhører ikke eieren av API-nøkkelen.Nei.
rate_limited429Grensen for antall forespørsler er overskredet.Ja, følg Retry-After.
internal_error500Intern 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.

API-logger