Gå til dokumentasjon
På denne siden

Seedance 2.5

Generer videoer med Seedance 2.5 ved hjelp av tekst, første og siste bilde, eller multimodalt referansemateriale. Denne siden dekker hele arbeidsflyten fra forespørsel til ferdig resultat for denne modellen.

Modell-ID i API: seedance-2-5

Genereringen skjer asynkront. Ta vare på taskId som returneres når du oppretter en oppgave, og bruk den til å sjekke status eller motta en webhook.

Funksjoner

FunksjonStøttede verdier
Utgangsoppløsning480p · 720p · 1080p
Varighet på video4–30 sekunder
Skjermformat16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
ReferansebilderOpptil 30 bilder
ReferansevideoerOpptil 10 videoer
ReferanselydfilerOpptil 10 lydfiler
Totalt referansemateriale samletOpptil 50 referansefiler totalt
Total varighet per video-/lydgruppe30 sekunder
seedStøttes ikke
Godtar også duration=-1 i referanse-til-video-modus; se videoredigering og priser nedenfor. image-to-video godtar kun adaptive; utelat dette feltet eller sett det til adaptive.

Priser og kreditter

Videogenerering belastes i kreditter basert på den fakturerbare varigheten i sekunder. Uten videoinndata er den fakturerbare varigheten lik varigheten på den ferdige videoen. Med videoinndata inkluderes også varigheten på referansevideoen.

Utkast bruker 480p-takstene ovenfor, inkludert eventuell inndata fra referansevideo. Ferdige videoer bruker en pris kun for 1080p-utdata på 30 kreditter/sekund; inndata fra referansevideo belastes ikke på nytt. For eksempel koster et 5 sekunders utkast uten referansevideo 50 kreditter, og en 5 sekunders ferdig video koster ytterligere 150 kreditter.

Tabellen nedenfor viser hvor mange kreditter som trekkes per sekund, ikke den totale kostnaden for en oppgave. Satsen avhenger av modell, utgangsoppløsning og om det brukes referansevideoer i referanse-til-video-modus. Se formlene og eksemplene under tabellen for å se hvordan totalkostnaden beregnes.

UtgangsoppløsningUten videoinndataMed videoinndata
480p10 kreditter/sekund6 kreditter/sekund
720p20 kreditter/sekund12 kreditter/sekund
1080p30 kreditter/sekund20 kreditter/sekund
  • Uten videoinndata: sekunder i ferdig video × pris uten video.
  • Med videoinndata: (sekunder i ferdig video + målt varighet på referansevideo) × pris med video. Serveren måler den totale varigheten på referansevideoen og runder opp til nærmeste hele sekund før fakturering.
  • Bruk av kun bilde- eller lydreferanser belastes med prisen uten video. Prisen med referansevideo gjelder kun i referanse-til-video-modus når det faktisk sendes med videoreferanser.

Eksempler på kostnadsberegning

5 sekunders tekst-til-video i 720p: 5 × 20 = 100 kreditter.

5 sekunders video ut i 720p med en 5 sekunders referansevideo: (5 + 5) × 12 = 120 kreditter.

Disse kredittene trekkes på forskudd når oppgaven opprettes. Hvis oppgaven fullføres, blir dette den endelige prisen. Det vil ikke bli etterfakturert eller refundert deler av beløpet basert på den faktiske varigheten på den ferdige videoen. Mislykkede oppgaver eller oppgaver som tidsavbrytes, refunderes.

Kreditter reserveres ved innsending og trekkes når oppgaven er fullført. Oppgaver som mislykkes eller tidsavbrytes, refunderes automatisk. Statusen refund_failed betyr at refusjonen ikke kunne fullføres; sjekk API-loggene eller kontakt kundeservice.

Hvordan kreditter belastes når varighet=-1

Når varigheten er satt til -1, er ikke den endelige varigheten på videoen fastlåst. Det er modellen som bestemmer den.

I de fleste tilfeller bør du angi den faktiske videolengden du trenger i stedet for -1. Vi anbefaler at du kun bruker -1 til videoredigering, og ikke til andre former for videogenerering.

ReferansematerialeSlik beregnes prisenEksempel
Med referansevideoerLegg sammen varigheten på alle referansevideoer og rund opp til nærmeste hele sekund (kalt T). Prisen beregnes som (T + T) × prisen med video. Den ene T-en representerer anslått varighet på videoen som opprettes, og den andre representerer varigheten på referansevideoen.720p med en referansevideo på 5 sekunder: (5 + 5) × 12 = 120 kreditter.
Uten referansevideoer (kun bilder eller lyd)Det brukes 30 sekunder som anslått varighet på videoen som opprettes. Prisen blir da 30 × prisen uten video.720p uten referansevideoer: 30 × 20 = 600 kreditter.

Autentisering

Opprett en API-nøkkel i dashbordet. Den fullstendige nøkkelen vises bare én gang. Oppbevar den trygt på serveren din, og send den med som et Bearer-token i alle forespørsler.

Base-URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Definer miljøvariabelen SEEVIO_API_KEY før du kjører disse eksemplene. Eksemplene i JavaScript kjøres på serveren din med Node.js, mens Python-eksemplene bruker requests-pakken.

Hurtigstart

Send inn denne minimale forespørselen, ta vare på returnert taskId, og bruk deretter eksempelet for statusspørring nedenfor. Verdien for kreditter i opprettelsesresponsen er det reserverte beløpet.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Eksempel på svar ved opprettelse av oppgave

Når forespørselen ovenfor er godkjent, returnerer API-et dette JSON-svaret. taskId er oppgaveidentifikatoren som brukes til påfølgende statusforespørsler; credits er antall kreditter som er reservert for denne oppgaven. Dette svaret bekrefter kun at oppgaven er opprettet, ikke at videoen er klar. Du må polle oppgavestatusen eller bruke en Webhook for å motta videoresultatene.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Opprett en oppgave

POST https://api.seevio.ai/v1/videos/generations

Send et JSON-objekt som inneholder model og input, samt en valgfri callback_url. Oppgi alltid den nøyaktige modell-ID-en som vises på denne siden; utelates model, velges seedance-2-0 automatisk.

Forespørselstekst (body)

FeltTypePåkrevdBeskrivelse og begrensninger
model
stringJa

Modell-ID. For å bruke Seedance 2.5, setter du dette feltet til seedance-2-5.

callback_url
stringNei

Offentlig HTTPS-endepunkt for POST-tilbakemeldinger ved fullført eller feilet oppgave. Interne nettverk og localhost er ikke tillatt.

Eksempel: https://example.com/webhooks/seevio
input
objectJa

Genereringsinnstillinger. Må inneholde en prompt som ikke er tom.

Inndataparametere

image_urls kreves i image-to-video. reference-to-video krever minst én referanse fordelt på image_urls, video_urls og audio_urls.
Når draft_task_id er oppgitt, skal du utelate prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search og omni_reference_task_type, selv om verdiene samsvarer med utkastet. Disse innstillingene arves. Ikke kombiner draft=true med draft_task_id.

Oppgi image_urls, video_urls og audio_urls som matriser med URL-strenger (string[]). Hver oppgitte URL må være offentlig tilgjengelig over HTTPS, inkludert mediefiler som ignoreres av den valgte modusen.

FeltTypePåkrevdStandardverdiBeskrivelse og begrensninger
input.draft
booleanNeifalse

Opprett en forhåndsvisning av utkastet i 480p. Kun for Seedance 2.5. Kan ikke brukes samtidig med draft_task_id.

Støttede verdier
true | false
input.draft_task_id
stringNei—

Opprett en ferdig video i 1080p fra et eid, fullført API-utkast som er mindre enn 7 dager gammelt. Oppgi taskId som ble returnert av dette API-et, og utelat arvede genereringsfelt.

Eksempel: 3f2aK9mR7xQp4TnZ8bLc6YwH
input.output_format
stringNeimp4

Beholder for videoutdata. Støtter mp4 og mov, inkludert forespørsler om utkast og ferdig video.

Støttede verdier
mp4 | mov
input.prompt
stringBetinget—

Påkrevd for vanlig generering og for å opprette et utkast. Ikke send dette når du genererer en ferdig video med draft_task_id; utkastets ledetekst arves.

Eksempel: A cat surfing at sunset
input.generation_type
stringNeitext-to-video

text-to-video bruker kun prompt; image-to-video bruker 1–2 bilder; reference-to-video bruker bilder, video og/eller lyd som referanser.

Støttede verdier
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Betinget[]

image-to-video: 1 bilde for første ramme, eller 2 sorterte bilder for første og siste ramme. reference-to-video: opptil 30 bilder. Ignoreres i text-to-video.

Eksempel: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Betinget[]

Videresendes kun i reference-to-video; opptil 10 videoer og totalt 30 sekunder til sammen. Ignoreres i andre moduser.

Eksempel: ["https://example.com/source.mp4"]
input.audio_urls
string[]Betinget[]

Videresendes kun i reference-to-video; opptil 10 lydfiler og totalt 30 sekunder til sammen. Ignoreres i andre moduser.

Eksempel: ["https://example.com/music.mp3"]
input.duration
integerNei5

Utdataens varighet: 4–30 sekunder, standard 5. duration=-1 godtas for utkast og i reference-to-video. For en ferdig video skal duration utelates da den arves fra utkastet.

Støttede verdier
-1 | 4–30
Eksempel: 5
input.aspect_ratio
stringNeiadaptive

Skjermformat på ferdig video. adaptive lar modellen bestemme formatet selv. image-to-video godtar kun adaptive; utelat dette feltet eller sett det til adaptive.

Støttede verdier
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Eksempel: adaptive
input.resolution
stringNei720p

Vanlig generering har standardoppløsning 720p. Utkast støtter kun 480p (standard for utkast). Ferdige videoer støtter kun 1080p (standard for ferdig video).

Støttede verdier
480p | 720p | 1080p
Eksempel: 720p
input.generate_audio
booleanNeitrue

Be om synkronisert lydgenerering.

Støttede verdier
true | false
Eksempel: true
input.watermark
booleanNeifalse

Be om et AI-vannmerke på den genererte videoen.

Støttede verdier
true | false
Eksempel: false
input.web_search
booleanNeifalse

Tillat nettsøk når dette støttes av modellen.

Støttede verdier
true | false
Eksempel: false
input.return_last_frame
booleanNeifalse

Be om den siste rammen av videoen. Svaret på statusspørringen vil inneholde data.last_frame_url når bildet er klart; ellers returneres null.

Støttede verdier
true | false
Eksempel: true

Bolske felt må være JSON true eller false, ikke strenger eller tall.

Opprettelsesrespons

HTTP 200 returnerer taskId (streng) og credits (tall). Dette bekrefter at oppgaven er opprettet, ikke at den er fullført. Beløpet nedenfor tilsvarer hurtigstart-eksempelet på 5 sekunder i 720p.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Forhåndsvisning av utkast → ferdig video i 1080p

Seedance 2.5 støtter en totrinns arbeidsflyt: Generer først et utkast (Draft) i 480p for å sjekke det visuelle og bevegelsen, og gjenbruk det deretter til å opprette en ferdig video i 1080p. Begge trinnene bruker POST /v1/videos/generations og oppretter separate, fakturerbare oppgaver.

Utkastmodus kan redusere kostnadene når du prøver ut ulike ideer. I stedet for å generere alle forsøk i 1080p, kan du opprette flere rimeligere utkast i 480p, velge det du liker best, og deretter bruke dette utkastet til å generere en ferdig video i 1080p. Dette lar deg utforske ulike resultater til en lavere pris før du betaler for den valgte versjonen i høy oppløsning.

Bruk et fullført utkast innen 7 dager etter opprettelsen for å generere en ferdig video. Utkastet må tilhøre samme API-konto. Bruk taskId returnert av dette API-et.

1. Generer et utkast i 480p

Sett input.draft=true og oppgi vanlig ledetekst, referanser og genereringsinnstillinger. Oppløsningen settes til standard 480p i utkastmodus; andre oppløsninger avvises. Du kan aktivere return_last_frame for utkastet, som vist nedenfor.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "draft": true,
    "duration": 5,
    "resolution": "480p",
    "return_last_frame": true
  }
}'
{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 50
}

2. Vent på at utkastet blir fullført

Lagre taskId fra svaret på opprettelsen, og søk med GET /v1/tasks/TASK_ID til statusen er completed. Svaret på spørringen har is_draft=true; forhåndsvis videoen i data.results. Når den er tilgjengelig, finnes den forespurte siste bilderuten i data.last_frame_url.

Du kan også motta en webhook når utkastet er ferdig. Angi callback_url på toppnivået i forespørselen om å opprette utkastet. Når utkastet er fullført, sendes et varsel til denne URL-en, og systemet ditt kan håndtere tilbakekallet for å lagre resultatet, oppdatere oppgavestatusen eller starte din egen viderebehandling. Se webhook-delen på denne siden for formatet på tilbakekallet.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": true,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 50,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": "https://cdn.seevio.ai/api/images/draft-last-frame.jpg",
    "processing_time": 48
  }
}

3. Generer en ferdig video i 1080p

Erstatt draft_task_id i dette eksempelet med taskId fra ditt fullførte utkast. Den ferdige videoen arver innholdet og varigheten fra utkastet. Oppløsningen settes som standard til 1080p, og ingen annen oppløsning godtas. output_format, watermark og return_last_frame kan angis uavhengig for hver ferdige video; callback_url forblir på forespørselens toppnivå.

Når draft_task_id er oppgitt, skal du utelate prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search og omni_reference_task_type, selv om verdiene samsvarer med utkastet. Disse innstillingene arves. Ikke kombiner draft=true med draft_task_id.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "draft_task_id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
    "resolution": "1080p",
    "output_format": "mp4",
    "watermark": false,
    "return_last_frame": true
  }
}'

Svaret inneholder en ny taskId for den ferdige videoen. Poll denne nye ID-en, eller vent på dens webhook. Spørringen for den ferdige videoen har is_draft=false og draft_task_id lik den opprinnelige utkastoppgavens API-ID. Det opprinnelige utkastet forblir tilgjengelig. Hver godkjente forespørsel om en ferdig video oppretter en ny, separat fakturert oppgave.

{
  "taskId": "final_7mQx2pN8kR4vT9cL6bW3",
  "credits": 150
}

Fakturering av utkast og ferdig video

Utkast bruker 480p-takstene ovenfor, inkludert eventuell inndata fra referansevideo. Ferdige videoer bruker en pris kun for 1080p-utdata på 30 kreditter/sekund; inndata fra referansevideo belastes ikke på nytt. For eksempel koster et 5 sekunders utkast uten referansevideo 50 kreditter, og en 5 sekunders ferdig video koster ytterligere 150 kreditter.

Ved duration=-1 reserverer både utkastet og den ferdige videoen kreditter for opptil 30 sekunders utdata, pluss referansevideo kun for utkastet. Ved fullføring justeres belastningen til faktisk utdatavarighet (hvis den kan fastslås), og ubrukte, reserverte kreditter returneres. En ferdig video reserverer opptil 900 kreditter.

En uferdig, utløpt, ikke-utkast eller utilgjengelig kilde avvises med HTTP 400 (invalid_request). Ugyldig oppløsning, arvede felt eller motstridende utkastparametere gir også HTTP 400. Utilstrekkelig kredittsaldo gir HTTP 402.

Genereringsmoduser og eksempler

Erstatt medie-URL-ene fra example.com med dine egne offentlig tilgjengelige HTTPS-filer. Eksempel-URL-ene illustrerer kun forespørselens struktur og er ikke nedlastbare filer.

Tekst til video

Generer ut fra en tekst-prompt. Medie-URL-er videresendes ikke i denne modusen.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Første ramme

Oppgi ett bilde som skal brukes som første ramme, og beskriv deretter bevegelsen i din prompt.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Første og siste ramme

Oppgi to bilde-URL-er i rekkefølge: første ramme, og deretter siste ramme. Dette eksempelet ber også om den genererte videoens siste ramme.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

Multimodalt referansemateriale

Kombiner referanser fra bilde, video og lyd. Tekst-prompt er fortsatt påkrevd. Referansevideo endrer formelen for fakturering.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Lydreferanse

Bruk lyd som eneste referansetype, sammen med en påkrevd tekst-prompt som beskriver den ønskede videoen.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Create a coastal sunrise scene matching the rhythm of this audio.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "audio_urls": [
      "https://example.com/music.mp3"
    ]
  }
}'

Videoredigering

For videoredigering i Seedance 2.5 må varighet settes til -1 og aspect_ratio settes til adaptive. Begge innstillingene kreves, ellers vil genereringen feile.

Beskriv endringen og legg ved kildevideoen. Sett duration=-1 og bruk adaptive skjermformat. Bruk en kildevideo på minst 4 sekunder for denne arbeidsflyten. Faktureringsreglene for duration=-1 vises ovenfor.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Edit the source video: change the character’s coat to blue and preserve the camera movement.",
    "duration": -1,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Videoutvidelse

For video-utvidelsen Seedance 2.5 må aspect_ratio settes til adaptive, ellers kan genereringen mislykkes. Angi varigheten på vanlig måte for ønsket lengde på videoen innenfor det støttede området – du trenger ikke å bruke -1.

Beskriv hvordan kildevideoen skal fortsette. Bruk adaptive skjermformat og sett en normal varighet innenfor modellens tillatte område.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Continue the camera movement from the source video, revealing a forest clearing.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Spør om en oppgave

GET https://api.seevio.ai/v1/tasks/{taskId}

Erstatt eksempel-ID-en med den taskId du fikk ved opprettelse. Statusspørringer returnerer kun oppgaver som tilhører brukeren av den gitte API-nøkkelen; utilgjengelige eller ukjente ID-er returnerer HTTP 404.

Start med å gjøre en spørring (poll) hvert 10.–20. sekund. Ved HTTP 429 bør du øke intervallet, og stoppe når statusen er completed eller failed. Vi anbefaler webhooks i produksjon. Hvert kodeeksempel nedenfor utfører én enkelt spørring.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusBeskrivelse og begrensninger
queuedMottatt og venter på å bli sendt til behandling.
generatingGenerering pågår.
completedFullført med suksess. Last ned data.results før filene utløper.
failedFeilet. Undersøk failed_reason og billing_status.
FeltTypeBeskrivelse og begrensninger
idstring
Oppgave-ID. Dette tilsvarer taskId fra opprettelsesresponsen.
created_atnumber
Tidspunkt for opprettelse av oppgaven, oppgitt i Unix-sekunder.
modelstring
Den offentlige modell-ID-en som ble brukt for denne oppgaven.
is_draftboolean
Sann (true) for et 480p-utkast; usann (false) for en ferdig eller vanlig video.
draft_task_idstring | null
Kildeutkastets API-oppgave-ID for en ferdig video; null for utkast og vanlige videoer.
billing_statusstring
reserved, charged, refunded eller refund_failed.
creditsnumber
Kreditter reservert for denne oppgaven. Denne verdien beholdes etter en refusjon; sjekk billing_status for å se det endelige faktureringsresultatet.
failed_reasonstring | null
Årsak til feilen på oppgaver som har feilet; ellers null. Svar på statusspørringer som har feilet, utelater data.
dataobject
Inkludert på vellykkede statusspørringer. Inneholder detaljer om resultat og behandling.
data.resultsstring[]
En array med video-URL-er. Tom frem til oppgaven er fullført, eller etter at videoen har utløpt.
data.video_expires_atstring | null
Tidspunktet videoen utløper, oppgitt som ISO 8601-tidsstempel, eller null før den er tilgjengelig. Lagre resultatet lokalt før dette tidspunktet.
data.last_frame_urlstring | null
URL til den siste rammen hvis forespurt og tilgjengelig, ellers null.
data.processing_timenumber | null
Leverandørens behandlingstid i sekunder når tilgjengelig, ellers null.

Fullført oppgave: statussvar med videoresultater

Når statusforespørselen returnerer status=completed, er videogenereringen fullført. Hent video-URL-ene fra data.results og last dem ned før data.video_expires_at. billing_status=charged viser at de reserverte kredittene har blitt trukket.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Mislykket oppgave: statussvar med feil- og faktureringsinformasjon

Når statusforespørselen returnerer status=failed, ble ikke genereringen fullført. Se failed_reason for årsaken, og billing_status for refusjonsstatusen. I dette eksempelet betyr refunded at kredittene har blitt refundert. credits viser det opprinnelige reserverte beløpet, og svaret inneholder ikke data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhooks

Angi callback_url i opprettelsesforespørselen for å motta en JSON POST når oppgaven er fullført eller feiler. Returner en 2xx-respons innen 15 sekunder. Meldinger som ikke blir levert, prøves på nytt; håndter gjentatte leveringer idempotent basert på oppgave-ID.

Ditt endepunkt for tilbakesending må godta POST-forespørsler med en JSON-meldingskropp (Content-Type: application/json).

Opprett en oppgave med callback

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Oppgave fullført: payload for vellykket tilbakesending

Når genereringen lykkes, inneholder tilbakesendingen status=completed. Bruk id for å identifisere oppgaven og data.results for å hente video-URL-ene. Last ned og lagre resultatene før data.video_expires_at.

created_at er hendelsens opprettelsestid; task_created_at er oppgavens opprettelsestid, i Unix-sekunder. Eksemplene viser anbefalte felt; svar kan inneholde flere felt.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "seedance-2-5",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Oppgave mislyktes: payload for mislykket tilbakesending

Når genereringen mislykkes, inneholder tilbakesendingen status=failed. Bruk id for å identifisere oppgaven, failed_reason for årsaken til feilen, og credits_refunded for antall refunderte kreditter.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "seedance-2-5",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed",
  "credits_refunded": 100
}

Eksempel på mottaker (receiver)

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Dette Next.js-eksempelet leser JSON-tilbakesendingskroppen og håndterer fullførte og mislykkede oppgaver direkte. Legg til datalagring og deduplisering av oppgave-ID-er i applikasjonen din, og legg tidkrevende oppgaver i kø før tilbakesendingen bekreftes.

Mediekrav og begrensninger

  • Alle medie- og callback-URL-er må være offentlige HTTPS-URL-er. Unngå localhost, private IP-adresser og filer som krever informasjonskapsler (cookies) eller pålogging. URL-er for referansevideo og -lyd må peke direkte til lesbare mediefiler.
  • I reference-to-video må du oppgi minst én referanse, med maksimalt 30 bilder, 10 videoer, 10 lydfiler og totalt 50 materialer til sammen. Total videovarighet og total lydvarighet kan ikke overstige 30 sekunder hver.
  • text-to-video ignorerer alle mediereferanser. image-to-video videresender kun bildene for første/siste ramme og ignorerer video- og lydreferanser. Bruk reference-to-video for å kombinere ulike medier.
  • Hver referansevideo og referanselydfil må være mellom 2 og 30 sekunder. For videoredigering bør du bruke kildeklipp på minst 4 sekunder.

Krav til bilder

  • Hvert bilde må være mindre enn 30 MB.
  • Støttede formater: jpeg, png, webp, bmp, tiff, gif.
  • Bildeformat (bredde ÷ høyde): 0,4 til og med 2,5.
  • Bredde og høyde må hver være på mellom 300 og 6 000 piksler.

Krav til video

  • Støttede formater: mp4, mov.
  • Hver video kan ikke overstige 100 MB.
  • Bildefrekvens (FPS): 24 til og med 60.
  • Bildeformat (bredde ÷ høyde): 0,4 til og med 2,5.
  • Totalt antall piksler (bredde × høyde): 407 696 til og med 8 295 044. For eksempel: 614 × 664 = 407 696 og 3 326 × 2 494 = 8 295 044. Dette er eksempler på pikselantall, ikke faste krav til bredde og høyde.

Krav til lyd

  • Støttede formater: wav, mp3.
  • Hver lydfil kan ikke overstige 15 MB.

Feilmeldinger

HTTP-feil returnerer et error-objekt med code og message. En oppgave som ble mottatt uten feil, kan fortsatt mislykkes senere; sjekk status på oppgaven eller håndter feil via callback.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPFeltLøsning
400invalid_request
Rett opp feil i JSON-strukturen, manglende prompt, feil parameterverdier eller ugyldige medie-URL-er før du prøver igjen.
401invalid_api_key
Kontroller Bearer-tokenet og sjekk om API-nøkkelen er aktiv.
402insufficient_credits
Fyll på kreditter eller reduser kostnaden for oppgaven. Svaret kan inneholde opplysninger om nødvendig og tilgjengelig saldo.
403forbidden
Sjekk kontobegrensningen som er beskrevet i feilmeldingen.
404not_found
Kontroller oppgave-ID-en og at nøkkelen tilhører eieren av oppgaven.
429rate_limited
Vent i tidsrommet angitt i Retry-After før du prøver igjen.
500internal_error
Undersøk feilmeldingen og API-loggene. Prøv igjen med forsiktighet; en ny innsending av forespørselen kan opprette en ny, betalbar oppgave.

Grenser for forespørsler (rate limits)

Opprett oppgaver: Hver API-nøkkel tillater som standard opptil 100 forespørsler i minuttet. Skreddersydde ratebegrensninger er foreløpig ikke tilgjengelig.

Hent oppgaver: Hver API-nøkkel tillater som standard opptil 120 forespørsler i minuttet. Forespørsler om opphenting og oppretting av oppgaver telles hver for seg.

HTTP 429 inkluderer Retry-After: 60 for opprettelse og Retry-After: 5 for statusspørringer. Bruk gradvis økende ventetid (backoff) og unngå unødvendig hyppig polling.