Siirry dokumentaatioon
Tällä sivulla

Seedance 2.5

Luo videoita Seedance 2.5 -mallilla käyttäen tekstiä, ensimmäistä ja viimeistä kehystä tai multimodaalisia viitteitä. Tämä sivu kattaa koko työnkulun pyynnöstä valmiiseen tulokseen.

Mallin API-tunniste: seedance-2-5

Videon luominen tapahtuu asynkronisesti. Tallenna luontipyynnön palauttama taskId ja kysy sen tilaa tai ota vastaan webhook-ilmoitus.

Ominaisuudet

OminaisuusTuetut arvot
Tulostarkkuus480p · 720p · 1080p
Tuloksen kesto4–30 sekuntia
Kuvasuhde16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
ViitekuvatEnintään 30 kuvaa
ViitevideotEnintään 10 videota
ViiteäänitiedostotEnintään 10 äänitiedostoa
Kaikki viitemateriaalit yhteensäYhteensä enintään 50 viitetiedostoa
Kokonaiskesto video-/ääniryhmää kohti30 sekuntia
seedEi tuettu
Hyväksyy myös arvon duration=-1 reference-to-video-tilassa; katso videon muokkaus ja hinnoittelu alta. image-to-video hyväksyy vain arvon adaptive; jätä tämä kenttä pois tai aseta sen arvoksi adaptive.

Hinnoittelu ja krediitit

Videoiden luominen veloitetaan krediitteinä sekuntiperusteisen laskutettavan keston mukaan. Jos videosisältöä ei käytetä syötteensä, laskutettava kesto on luodun videon pituus. Jos videosisältöä käytetään syötteenä, kesto sisältää myös viitevideon pituuden.

Luonnoksissa käytetään yllä mainittuja 480p-hintoja (mukaan lukien mahdollinen viitevideo). Valmisversioissa käytetään 1080p-perushintaa 30 krediittiä/sekunti; viitevideon syötteestä ei veloiteta uudelleen. Esimerkiksi 5 sekunnin luonnos ilman viitevideota maksaa 50 krediittiä ja 5 sekunnin valmisversio maksaa 150 krediittiä lisää.

Alla olevassa taulukossa näytetään sekuntikohtaiset krediittiveloitukset, ei tehtävän kokonaiskustannusta. Hinta määräytyy mallin, resoluution sekä sen mukaan, käytetäänkö viitevideoita (reference-to-video-tila). Taulukon alla olevista kaavoista ja esimerkeistä näet, miten kokonaiskustannus lasketaan.

TulostarkkuusIlman videosisääntuloaVideosisääntulon kanssa
480p10 saldoa/sekunti6 saldoa/sekunti
720p20 saldoa/sekunti12 saldoa/sekunti
1080p30 saldoa/sekunti20 saldoa/sekunti
  • Ilman videosisääntuloa: valmiin videon sekunnit × hinta ilman videota.
  • Videosisääntulon kanssa: (valmiin videon sekunnit + mitatun viitevideon sekunnit) × hinta videon kanssa. Palvelin mittaa viitevideon kokonaiskeston ja pyöristää sen ylöspäin täysiin sekunteihin ennen veloitusta.
  • Pelkkiä kuva- tai ääniviitteitä käytettäessä sovelletaan ilman videota -hintaa. Viitevideon laskutushintaa käytetään vain reference-to-video-tilassa silloin, kun pyynnössä toimitetaan videoviitteitä.

Laskutusesimerkit

5 sekunnin 720p tekstistä videoksi -luonti: 5 × 20 = 100 krediittiä.

5 sekunnin 720p-video 5 sekunnin viitevideolla: (5 + 5) × 12 = 120 krediittiä.

Tämä saldo veloitetaan etukäteen, kun tehtävä luodaan. Jos tehtävä onnistuu, tämä summa on lopullinen veloitus; veloitusta ei koroteta eikä siitä anneta osittaista palautusta todellisen tuotetun keston perusteella. Epäonnistuneet tai aikakatkaistut tehtävät siirtyvät hyvitysprosessiin.

Krediitit varataan pyynnön yhteydessä ja veloitetaan, kun luonti onnistuu. Epäonnistuneet tai aikakatkaistut tehtävät siirtyvät hyvityskiertoon. Laskutustila refund_failed tarkoittaa, ettei hyvitystä voitu viedä loppuun; tarkista API-logit tai ota yhteys tukeen.

Miten saldoa veloitetaan, kun duration=-1

Kun kestoksi on asetettu -1, lopullisen videon kesto ei ole kiinteä, vaan malli määrittää sen.

Suosittelemme asettamaan kestoksi todellisen tarvitsemasi videomitan arvon -1 sijaan. Käytä arvoa -1 vain videon muokkaukseen, älä muihin videon luontitilanteisiin.

LähdemateriaalitMiten veloitus lasketaanEsimerkki
Kun käytössä on viitevideoitaLaske kaikkien viitevideoiden kesto yhteen ja pyöristä summa seuraavaan kokonaiseen sekuntiin (tätä kutsutaan nimellä T). Veloitus on (T + T) × videollinen hinta: toinen T vastaa arvioitua tuotoksen kestoa ja toinen syötetyn videon kestoa.720p 5 sekunnin viitevideolla: (5 + 5) × 12 = 120 saldoa.
Ilman viitevideoita (vain kuvia tai audiota)Arvioituna tuotoksen kestona käytetään 30 sekuntia. Veloitus on 30 × videoton hinta.720p ilman viitevideoita: 30 × 20 = 600 saldoa.

Autentikointi

Luo API-avain hallintapaneelissa. Täydellinen avain näytetään vain kerran. Säilytä se turvallisesti palvelimellasi ja lähetä se Bearer-tokenina jokaisen pyynnön yhteydessä.

Perus-URL

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

Aseta SEEVIO_API_KEY-ympäristömuuttuja ennen näiden esimerkkien suorittamista. JavaScript-esimerkit ajetaan palvelimellasi Node.js-ympäristössä; Python-esimerkeissä käytetään requests-kirjastoa.

Pika-aloitus

Lähetä tämä minimipyyntö, tallenna palautettu taskId ja käytä alla olevaa tehtäväkyselyn esimerkkiä. Luontivastauksessa näkyvä krediittisumma on varattu enimmäismäärä.

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

Esimerkki tehtävän luonnin vastauksesta

Kun yllä oleva pyyntö on hyväksytty, API palauttaa tämän JSON-vastauksen. taskId on tehtävätunniste, jota käytetään myöhemmissä tilakyselyissä; credits tarkoittaa tälle tehtävälle varattujen hyvitysten määrää. Tämä vastaus vahvistaa vain tehtävän luomisen, ei sitä, että video on valmis. Sinun on seurattava tehtävän tilaa kyselyillä tai käytettävä webhookia saadaksesi valmiin videon tulokset.

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

Luo tehtävä

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

Lähetä JSON-objekti, joka sisältää mallin (model) ja syötteen (input) sekä valinnaisen callback_url-osoitteen. Määritä aina tällä sivulla näkyvä mallitunnus; jos mallia ei määritetä, käyttöön otetaan seedance-2-0.

Pyyntörunko

KenttäTyyppiPakollinenKuvaus ja rajoitukset
model
stringKyllä

Mallitunnus. Jos haluat käyttää mallia Seedance 2.5, määritä tämän kentän arvoksi seedance-2-5.

callback_url
stringEi

Julkinen HTTPS-päätepiste onnistuneille ja epäonnistuneille POST-kutsuille. Yksityisiä verkkoja tai localhost-osoitteita ei sallita.

Esimerkki: https://example.com/webhooks/seevio
input
objectKyllä

Luontiasetukset. Pitää sisältää prompt-tekstisyöte, joka ei ole tyhjä.

Syöteparametrit

image_urls on pakollinen image-to-video-tilassa. reference-to-video vaatii vähintään yhden viitemateriaalin (kuvat, videot tai äänet).
Kun käytät parametria draft_task_id, jätä pois kentät prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search ja omni_reference_task_type, vaikka niiden arvot vastaisivat luonnosta. Nämä asetukset peritään automaattisesti luonnoksesta. Älä käytä asetusta draft=true yhdessä draft_task_id-parametrin kanssa.

Anna parametrit image_urls, video_urls ja audio_urls URL-merkkijonojen taulukkoina (string[]). Jokaisen toimitetun URL-osoitteen on oltava julkisesti saatavilla HTTPS-yhteyden kautta, mukaan lukien valitun tilan sivuuttama media.

KenttäTyyppiPakollinenOletusKuvaus ja rajoitukset
input.draft
booleanEifalse

Luo 480p-luonnos. Vain Seedance 2.5 -mallille. Ei voi käyttää yhdessä draft_task_id-parametrin kanssa.

Tuetut arvot
true | false
input.draft_task_id
stringEi—

Luo 1080p-valmisversio omistamastasi, valmiista API-luonnoksesta, joka on luotu alle 7 päivää sitten. Anna luonnoksen taskId ja jätä pois periytyvät generointikentät.

Esimerkki: 3f2aK9mR7xQp4TnZ8bLc6YwH
input.output_format
stringEimp4

Videon tiedostomuoto (säiliö). Tukee arvoja mp4 ja mov sekä luonnos- että valmisversiopyynnöissä.

Tuetut arvot
mp4 | mov
input.prompt
stringEhdollinen—

Pakollinen tavallisessa videon generoinnissa ja luonnosta luotaessa. Älä lähetä tätä kenttää, kun luot valmisversiota draft_task_id-parametrin avulla; luonnoksen prompt peritään automaattisesti.

Esimerkki: A cat surfing at sunset
input.generation_type
stringEitext-to-video

text-to-video käyttää vain prompt-syötettä; image-to-video käyttää 1–2 kuvaa; reference-to-video käyttää kuva-, video- ja/tai ääniviitteitä.

Tuetut arvot
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Ehdollinen[]

image-to-video: 1 kuva ensimmäiseksi kehykseksi tai 2 järjestettyä kuvaa ensimmäiseksi ja viimeiseksi kehykseksi. reference-to-video: enintään 30 kuvaa. Ohitetaan text-to-video-tilassa.

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

Välitetään vain reference-to-video-tilassa; enintään 10 videota ja yhteensä 30 sekuntia. Ohitetaan muissa tiloissa.

Esimerkki: ["https://example.com/source.mp4"]
input.audio_urls
string[]Ehdollinen[]

Välitetään vain reference-to-video-tilassa; enintään 10 äänitiedostoa ja yhteensä 30 sekuntia. Ohitetaan muissa tiloissa.

Esimerkki: ["https://example.com/music.mp3"]
input.duration
integerEi5

Valmiin videon kesto: 4–30 sekuntia, oletusarvona 5. Kesto duration=-1 hyväksytään luonnoksille ja reference-to-video-tilassa. Jätä kesto pois valmisversiopyynnöstä; se peritään luonnoksesta.

Tuetut arvot
-1 | 4–30
Esimerkki: 5
input.aspect_ratio
stringEiadaptive

Valmiin videon kuvasuhde. Arvolla adaptive malli määrittää kuvasuhteen itse. image-to-video hyväksyy vain arvon adaptive; jätä tämä kenttä pois tai aseta sen arvoksi adaptive.

Tuetut arvot
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Esimerkki: adaptive
input.resolution
stringEi720p

Tavallisessa videon generoinnissa oletustarkkuus on 720p. Luonnokset (Drafts) tukevat vain 480p-tarkkuutta (luonnosten oletus). Valmisversiot tukevat vain 1080p-tarkkuutta (valmisversioiden oletus).

Tuetut arvot
480p | 720p | 1080p
Esimerkki: 720p
input.generate_audio
booleanEitrue

Pyydä synkronoidun äänen luomista videolle.

Tuetut arvot
true | false
Esimerkki: true
input.watermark
booleanEifalse

Pyydä tekoälyvesileiman lisäämistä luotavaan videoon.

Tuetut arvot
true | false
Esimerkki: false
input.web_search
booleanEifalse

Salli verkkohaku, jos malli tukee sitä.

Tuetut arvot
true | false
Esimerkki: false
input.return_last_frame
booleanEifalse

Pyydä viimeistä kehystä erillisenä tiedostona. Kyselyn tulos sisältää kentän data.last_frame_url, kun kehys on saatavilla; muutoin arvo on null.

Tuetut arvot
true | false
Esimerkki: true

Totuusarvojen (boolean) on oltava JSON-muodossa true tai false (ei merkkijonoina tai numeroina).

Luontivastaus

HTTP 200 palauttaa kentät taskId (merkkijono) ja credits (numero). Tämä vahvistaa tehtävän vastaanoton, ei sen valmistumista. Alla oleva summa vastaa 5 sekunnin 720p-pika-aloitusta.

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

Luonnos → 1080p-valmisversio

Seedance 2.5 tukee kaksivaiheista työnkulkua: luo ensin 480p-luonnos (Draft) tarkistaaksesi visuaalisen ilmeen ja liikkeen, ja käytä sitä sitten pohjana tarkemman 1080p-valmisversion luomiseen. Molemmat vaiheet käyttävät POST /v1/videos/generations -päätepistettä ja luovat erilliset, laskutettavat tehtävät.

Luonnostila voi vähentää kokeilukustannuksia. Sen sijaan, että loisit jokaisen kokeilun suoraan 1080p-tarkkuudella, voit luoda useita edullisempia 480p-luonnoksia, valita niistä parhaan ja luoda vasta siitä korkealaatuisen 1080p-valmisversion. Näin voit kokeilla eri vaihtoehtoja edullisesti ennen lopullisen version tilaamista korkealla resoluutiolla.

Voit käyttää valmista luonnosta valmisversion luomiseen 7 päivän sisällä sen luomisesta. Luonnoksen on kuuluttava samalle API-tilille. Käytä tämän API:n palauttamaa taskId-tunnistetta.

1. Luo 480p-luonnos (Draft)

Aseta input.draft=true ja anna tavalliseen tapaan tekstiprompti, viitteet ja generointiasetukset. Luonnostilassa resoluution oletusarvona on 480p; muut tarkkuudet hylätään. Voit ottaa käyttöön return_last_frame-asetuksen luonnokselle alla näytetyllä tavalla.

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. Odota luonnoksen valmistumista

Tallenna luontivastauksen taskId ja pollaa GET /v1/tasks/TASK_ID -päätepistettä, kunnes tilaksi vaihtuu completed. Kyselyn vastauksessa näkyy is_draft=true; voit esikatsella videon kentästä data.results. Pyydetty viimeinen kehys on saatavilla kentässä data.last_frame_url, jos se on käytettävissä.

Voit myös vastaanottaa webhook-ilmoituksen, kun luonnos valmistuu. Aseta callback_url luonnoksen luontipyynnön päätasolle. Kun luonnos valmistuu, kyseiseen URL-osoitteeseen lähetetään ilmoitus, jolloin sovelluksesi voi tallentaa tuloksen, päivittää tehtävän tilan tai käynnistää jatkokäsittelyn. Katso takaisinkutsun tietomuoto tämän sivun Webhook-osiosta.

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. Luo 1080p-valmisversio

Korvaa tämän esimerkin draft_task_id valmiin luonnoksesi taskId-tunnisteella. Valmisversio perii luonnoksen sisällön ja keston. Resoluution oletusarvona on 1080p, eikä muita resoluutioita hyväksytä. output_format-, watermark- ja return_last_frame-asetukset voidaan määrittää itsenäisesti jokaiselle valmisversiolle; callback_url asetetaan pyynnön päätasolla.

Kun käytät parametria draft_task_id, jätä pois kentät prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search ja omni_reference_task_type, vaikka niiden arvot vastaisivat luonnosta. Nämä asetukset peritään automaattisesti luonnoksesta. Älä käytä asetusta draft=true yhdessä draft_task_id-parametrin kanssa.
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
  }
}'

Vastaus sisältää uuden taskId-tunnisteen valmisversiota varten. Pollaa tätä uutta tunnusta tai odota sen webhook-ilmoitusta. Valmisversion kyselyvastauksessa is_draft on false ja draft_task_id vastaa alkuperäisen luonnoksen API-tehtävätunnusta. Alkuperäinen luonnos säilyy käytettävissä. Jokainen hyväksytty valmisversiopyyntö luo uuden, erikseen laskutettavan tehtävän.

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

Luonnosten ja valmisversioiden laskutus

Luonnoksissa käytetään yllä mainittuja 480p-hintoja (mukaan lukien mahdollinen viitevideo). Valmisversioissa käytetään 1080p-perushintaa 30 krediittiä/sekunti; viitevideon syötteestä ei veloiteta uudelleen. Esimerkiksi 5 sekunnin luonnos ilman viitevideota maksaa 50 krediittiä ja 5 sekunnin valmisversio maksaa 150 krediittiä lisää.

Kun kesto on duration=-1, sekä luonnos että valmisversio varaavat krediittejä enintään 30 sekunnin mukaan. Luonnoksessa otetaan huomioon myös mahdollinen viitevideo. Kun tehtävä valmistuu, veloitus korjataan vastaamaan todellista videon kestoa, jos se voidaan määrittää, ja käyttämättömät varatut krediitit palautetaan. Valmisversio voi varata enintään 900 krediittiä.

Keskeneräinen, vanhentunut tai saavuttamattomissa oleva lähde sekä lähde, joka ei ole luonnos, hylätään HTTP 400 (invalid_request) -virheellä. Myös virheellinen resoluutio, periytyvien kenttien lähettäminen tai ristiriitaiset luonnosparametrit aiheuttavat HTTP 400 -virheen. Krediittien puute aiheuttaa HTTP 402 -virheen.

Luontitilat ja esimerkit

Korvaa example.com-esimerkkiosoitteet omilla julkisilla HTTPS-tiedostoillasi. Esimerkki-URL-osoitteet on tarkoitettu havainnollistamaan pyynnön rakennetta, eivätkä ne ole ladattavia esimerkkiversioita.

Tekstistä videoksi

Luo video tekstikuvauksesta. Medialinkkejä ei välitetä tässä tilassa.

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

Ensimmäinen kehys

Toimita yksi kuva ensimmäiseksi kehykseksi ja kuvaile liikettä prompt-kentässä.

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

Ensimmäinen ja viimeinen kehys

Toimita kaksi kuvalinkkiä järjestyksessä: ensimmäinen kehys, sitten viimeinen kehys. Tämä esimerkki pyytää myös valmiin videon viimeistä kehystä.

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

Multimodaalinen viite

Yhdistä kuva-, video- ja ääniviitteitä. Tekstikuvaus (prompt) on edelleen pakollinen. Viitevideon käyttö muuttaa hinnoittelukaavaa.

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

Ääniviite

Käytä ääntä ainoana viitetyyppinä ja kuvaile haluttua videota pakollisella tekstikuvauksella.

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

Videon muokkaus

Seedance 2.5 -videoeditointia varten keston on oltava -1 ja kuvasuhteen adaptive. Molemmat asetukset ovat välttämättömiä, muuten luonti epäonnistuu.

Kuvaile muokkaus ja toimita lähdevideo. Aseta duration=-1 ja käytä mukautuvaa kuvasuhdetta (adaptive). Käytä vähintään 4 sekunnin pituista lähdeklippiä tässä työnkulussa. Erityinen laskutussääntö arvolle duration=-1 on esitetty yllä.

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

Videon jatkaminen

Seedance 2.5 -videolaajennusta käytettäessä kuvasuhteeksi (aspect_ratio) on asetettava adaptive, jotta luonti ei epäonnistu. Aseta kesto (duration) normaalisti halutun mittaiseksi tuetun aikarajan puitteissa; arvoa -1 ei tarvitse käyttää.

Kuvaile, miten lähdevideon pitäisi jatkua. Käytä mukautuvaa kuvasuhdetta (adaptive) ja aseta normaali kesto mallin sallimissa rajoissa.

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

Tehtävän kysely

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

Korvaa esimerkkitunnus luonnin yhteydessä palautetulla taskId-tunnuksella. Kyselyt palauttavat vain ne tehtävät, jotka kuuluvat kyseisen API-avaimen käyttäjälle; tuntemattomat tunnukset palauttavat virheen HTTP 404.

Tee kyselyitä aluksi 10–20 sekunnin välein, hidasta tahtia, jos saat virheen HTTP 429, ja lopeta kyselyt, kun tilaksi vaihtuu completed tai failed. Suosi webhookeja tuotantoympäristössä. Jokainen alla oleva koodiesimerkki tekee yhden kyselyn.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
TilaKuvaus ja rajoitukset
queuedHyväksytty ja odottaa käsittelyä jonossa.
generatingVideon luominen on käynnissä.
completedValmis (onnistunut). Lataa tulokset osoitteesta data.results ennen niiden vanhenemista.
failedValmis (epäonnistunut). Tarkista kentät failed_reason ja billing_status.
KenttäTyyppiKuvaus ja rajoitukset
idstring
Tehtävän tunniste. Vastaa luontivastauksen kenttää taskId.
created_atnumber
Tehtävän luontiaika Unix-aikana (sekunteina).
modelstring
Tässä tehtävässä käytetty julkinen mallitunnus.
is_draftboolean
Arvo on true 480p-luonnoksille; false valmisversioille tai tavallisille videoille.
draft_task_idstring | null
Valmisversion pohjana käytetyn luonnoksen API-tehtävätunnus; null luonnoksille ja tavallisille videoille.
billing_statusstring
reserved, charged, refunded tai refund_failed.
creditsnumber
Tehtävälle varatut krediitit. Tämä arvo säilyy hyvityksen jälkeen; tarkista lopullinen laskutustulos kentästä billing_status.
failed_reasonstring | null
Epäonnistumisen syy virheellisissä tehtävissä; muuten null. Epäonnistuneiden tehtävien kyselyvastauksista puuttuu data-kenttä.
dataobject
Mukana onnistuneissa tehtäväkyselyissä. Sisältää valmiin tiedoston tiedot ja käsittelytiedot.
data.resultsstring[]
Videolinkkien taulukko. Tyhjä, kunnes tehtävä valmistuu tai jos video on jo vanhentunut.
data.video_expires_atstring | null
Videon vanhenemisaika ISO 8601 -muodossa, tai null ennen kuin se on saatavilla. Tallenna valmis video ennen tätä ajankohtaa.
data.last_frame_urlstring | null
Viimeisen kehyksen URL-osoite, jos sitä on pyydetty ja se on saatavilla; muuten null.
data.processing_timenumber | null
Palveluntarjoajan käsittelyaika sekunteina, jos saatavilla; muuten null.

Valmis tehtävä: kyselyn vastaus videotuloksilla

Kun kysely palauttaa arvon status=completed, videon luonti on päättynyt. Löydät videoiden URL-osoitteet kohdasta data.results. Lataa videot ennen kohdassa data.video_expires_at ilmoitettua ajankohtaa. Tila billing_status=charged osoittaa, että varatut krediitit on veloitettu.

{
  "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
  }
}

Epäonnistunut tehtävä: kyselyn vastaus virhe- ja veloitustiedoilla

Kun kysely palauttaa arvon status=failed, luonti on epäonnistunut. Kohdasta failed_reason näet virheen syyn ja kohdasta billing_status hyvityksen tilanteen. Tässä esimerkissä tila refunded tarkoittaa, että krediitit on palautettu. credits-kentässä näkyy alkuperäinen varattu määrä, eikä vastaus sisällä data-kenttää.

{
  "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"
}

Webhookit

Aseta callback_url-osoite luontipyyntöön vastaanottaaksesi JSON-muotoisen POST-kutsun, kun tehtävä valmistuu tai epäonnistuu. Palauta 2xx-vastaus 15 sekunnin kuluessa. Epäonnistuneita lähetyksiä yritetään uudelleen; käsittele toistuvat kutsut idempotentisti tehtävätunnuksen (task ID) perusteella.

Takaisinkutsun päätepisteen on hyväksyttävä POST-pyyntöjä, joiden runko on JSON-muotoinen (Content-Type: application/json).

Luo tehtävä webhook-paluukutsulla

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

Tehtävä valmis: onnistuneen kutsun hyötykuorma

Kun luonti onnistuu, takaisinkutsu sisältää arvon status=completed. Tunnista tehtävä id-kentän avulla ja hae videon URL-osoitteet kohdasta data.results. Lataa ja tallenna tulokset ennen kohdassa data.video_expires_at ilmoitettua ajankohtaa.

created_at on tapahtuman luontiaika ja task_created_at tehtävän luontiaika Unix-sekunteina. Esimerkit näyttävät suositellut kentät; vastaukset voivat sisältää lisäkenttiä.

{
  "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
  }
}

Tehtävä epäonnistui: epäonnistuneen kutsun hyötykuorma

Jos luonti epäonnistuu, takaisinkutsu sisältää arvon status=failed. Tunnista tehtävä id-kentän avulla. Kohdasta failed_reason näet virheen syyn ja kohdasta credits_refunded palautettujen krediittien määrän.

{
  "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
}

Esimerkki vastaanottimesta

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 });
}

Tässä Next.js-esimerkissä luetaan JSON-muotoinen takaisinkutsun runko ja käsitellään onnistuneet sekä epäonnistuneet tehtävät suoraan. Lisää sovellukseesi tiedon säilytys ja tehtävätunnusten (task-ID) duplikaattien poisto. Aseta hitaat työt jonoon ennen takaisinkutsun kuittaamista.

Medialähdevaatimukset ja -rajoitukset

  • Kaikkien media- ja callback-osoitteiden on oltava julkisia HTTPS-osoitteita. Vältä localhost-osoitetta, yksityisiä IP-osoitteita ja tiedostoja, jotka vaativat evästeitä tai kirjautumista. Viitevideon/-äänen URL-osoitteiden on osoitettava suoraan luettavaan mediatiedostoon.
  • Reference-to-video-tilassa toimita vähintään yksi viite, enintään 30 kuvaa, 10 videota, 10 äänitiedostoa ja yhteensä enintään 50 materiaalia. Videoiden ja äänitiedostojen kokonaiskesto saa olla enintään 30 sekuntia per mediatyyppi.
  • text-to-video ohittaa kaikki mediaviitteet. image-to-video huomioi vain ensimmäisen/viimeisen kehyksen kuvat ja ohittaa video- sekä ääniviitteet. Käytä reference-to-video-tilaa, jos haluat yhdistää eri mediatyyppejä.
  • Kunkin viitevideon ja -äänitiedoston on oltava kestoltaan 2–30 sekuntia. Käytä videon muokkausesimerkeissä vähintään 4 sekunnin pituisia lähdeklippejä.

Kuvan vaatimukset

  • Kunkin kuvan koon on oltava alle 30 kt.
  • Tuetut tiedostomuodot: jpeg, png, webp, bmp, tiff, gif.
  • Kuvasuhde (leveys ÷ korkeus): 0,4–2,5 (raja-arvot mukaan lukien).
  • Sekä leveyden että korkeuden on oltava 300–6 000 pikseliä (raja-arvot mukaan lukien).

Videon vaatimukset

  • Tuetut tiedostomuodot: mp4, mov.
  • Yksittäinen video saa olla enintään 100 kt.
  • Kuvanopeus: 24–60 kuvaa sekunnissa (FPS, raja-arvot mukaan lukien).
  • Kuvasuhde (leveys ÷ korkeus): 0,4–2,5 (raja-arvot mukaan lukien).
  • Pikseleiden kokonaismäärä (leveys × korkeus): 407 696–8 295 044 (raja-arvot mukaan lukien). Esimerkiksi 614 × 664 = 407 696 ja 3 326 × 2 494 = 8 295 044. Nämä ovat esimerkkejä pikselimääristä, eivät kiinteitä leveys- tai korkeusvaatimuksia.

Äänen vaatimukset

  • Tuetut tiedostomuodot: wav, mp3.
  • Yksittäinen äänitiedosto saa olla enintään 15 kt.

Virheet

HTTP-virheiden yhteydessä palautetaan error-objekti, jossa on kentät code ja message. Onnistuneesti vastaanotettu tehtävä voi silti epäonnistua myöhemmin; tee tehtäväkysely tai käsittele epäonnistumisesta tuleva webhook-kutsu.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPKenttäToimenpide
400invalid_request
Korjaa JSON-rakenne, puuttuva prompt-syöte, parametrien arvot tai median URL-osoite ennen uutta yritystä.
401invalid_api_key
Tarkista Bearer-token ja varmista, että API-avain on aktiivinen.
402insufficient_credits
Lisää krediittejä tai pienennä tehtävän kulua. Vastaus voi sisältää tiedon vaaditusta ja käytettävissä olevasta krediittimäärästä.
403forbidden
Tarkista virheilmoituksessa mainittu tilitasoinen rajoitus.
404not_found
Tarkista tehtävätunnus (task ID) ja varmista, että API-avain kuuluu tehtävän luoneelle käyttäjälle.
429rate_limited
Odota Retry-After-otsikossa määritetty aika ennen kuin yrität uudelleen.
500internal_error
Tarkista virheilmoitus ja API-logit. Yritä uudelleen harkiten; uuden luontipyynnön lähettäminen voi luoda uuden veloitettavan tehtävän.

Käyttörajat

Tehtävien luonti: kukin API-avain sallii oletusarvoisesti enintään 100 pyyntöä minuutissa. Mukautettuja pyyntörajoituksia ei ole tällä hetkellä saatavilla.

Tehtävien kyselyt: kukin API-avain sallii oletusarvoisesti enintään 120 pyyntöä minuutissa. Kyselypyynnöt ja tehtävien luontipyynnöt lasketaan erikseen.

Virhe HTTP 429 sisältää otsikon Retry-After: 60 luontipyynnöille ja Retry-After: 5 kyselyille. Käytä viivästettyjä uusintayrityksiä (backoff) ja vältä tarpeettoman tiheitä kyselyitä.