Seedance API

Integroi videon luonti osaksi tuotettasi Seedance 2.5- tai Seedance 2.0 -malleilla. Tukee asynkronisia tehtäviä, webhookeja ja saldopohjaista laskutusta.

Perus-URL (Base URL)
https://api.seevio.ai
Tällä sivulla

Johdanto

Rajapinnan avulla voit lähettää Seedance 2.5- ja Seedance 2.0 -videonluontitehtäviä ohjelmallisesti. Suositeltu malli on Seedance 2.5, joka tukee tekstistä videoksi -luontia, kuvasta videoksi -luontia (ensimmäisen ruudun tai ensimmäisen ja viimeisen ruudun perusteella) sekä monimuotoista viitteistä videoksi -luontia. Luonti tapahtuu asynkronisesti: luot tehtävän, saat heti tehtävätunnuksen (task ID) ja noudat valmiin videon joko kyselemällä tehtävän tilaa päätepisteestä tai vastaanottamalla webhook-ilmoituksen.

Asynkroniset tehtävät

Tilan kysely (polling) sopii hyvin kehitystyöhön ja yksinkertaisiin integraatioihin.

Webhook-valmis

Webhookien käyttö on suositeltavaa tuotantoympäristössä, sillä se välttää toistuvan kyselyn kuormituksen ja ilmoittaa palvelullesi heti, kun tehtävä saavuttaa päätetilan.

Saldotietoinen

Saldot varataan tehtävän lähetyksen yhteydessä. Onnistuneet tehtävät veloitetaan varauksesta; epäonnistuneet tai aikakatkaistut tehtävät palautetaan automaattisesti.

Autentikointi

Luo API-avain hallintapaneelissa ja lähetä se jokaisen pyynnön mukana Bearer-tunnisteena (token). Koko avain näytetään vain kerran sen luonnin yhteydessä.

Authorization: Bearer sk_live_xxxxxxxx
sk_live_

Käytä sk_live_ -alkuisia avaimia tuotantoliikenteessä.

sk_test_

Käytä sk_test_ -alkuisia avaimia integraatiotestaamiseen hiekkalaatikossa saman API-sopimuksen mukaisesti.

401

Puuttuvat, virheelliset tai mitätöidyt avaimet palauttavat virheen invalid_api_key ja HTTP-tilakoodin 401.

Pikaopas

Lähetä ensin tehtävä. Kun tehtävä on vastaanotettu, valitse toinen tuloksen toimitustavoista: kysy tehtävän tilaa päätepisteestä tai vastaanota lopullinen tulos webhookin kautta.

1. Lähetä tehtävä

Luo asynkroninen videotehtävä ja vastaanota tehtävätunnus (task ID) välittömästi.

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": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false
    }
  }'
Tuloksen noutotapa: Kysely

Hae tietoa tehtävän tilan päätepisteestä, jos integraatiosi suosii suoraa kyselyä.

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"
Tuloksen noutotapa: Webhook

Määritä callback_url tehtävää lähetettäessä, jolloin saat kutsun tehtävän valmistuessa tai epäonnistuessa ja voit päivittää oman järjestelmäsi tiedot.

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

Luo videotehtävä

Luo videotehtävä tekemällä POST-pyyntö osoitteeseen /v1/videos/generations. Pyynnön runko (body) sisältää päätason model-kentän, valinnaisen callback_url-osoitteen sekä input-objektin, joka sisältää prompt-syötteen ja luontiasetukset.

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": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false
    }
  }'

Luontitilat

generation_type määrittää, mitä mediatyyppejä pyynnössä hyväksytään ja miten malli tulkitsee niitä.

Seedance 2.5 -ominaisuudet
seedance-2-5

Aseta malliksi seedance-2-5 luodaksesi 480p- tai 720p-laatuista videota, jonka pituus on 4–30 sekuntia.

  • Tekstistä videoksi mukautuvalla (adaptive) tai kiinteällä kuvasuhteella (16:9, 9:16, 1:1, 4:3, 3:4 tai 21:9)
  • Kuvasta videoksi yhdellä aloitusruudun kuvalla tai kahdella aloitus- ja lopetusruudun kuvalla; kuvasuhteen on oltava adaptive
  • Viitteistä videoksi enintään 30 kuvalla, 10 videolla ja 10 äänitiedostolla (enintään 50 materiaalia yhteensä)
  • Jokaisen video- tai ääniviitteen pituuden on oltava 2–30 sekuntia; videoiden yhteiskeston ja äänitiedostojen yhteiskeston on oltava enintään 30 sekuntia
  • Pelkän ääniviitteen käyttö sekä return_last_frame ovat tuettuja; seed-parametria ei tueta
TilaPakollinen mediaValinnainen mediaHuomautukset
text-to-videopromptduration, aspect_ratio, resolution, seedVain tekstikuvaus. image_urls, video_urls ja audio_urls -kenttiä ei tarvita.
image-to-videoprompt + image_urls-taulukko (1–2 kuva-URL:ää)duration, aspect_ratio, resolution, seedimage_urls-kentän on oltava taulukko. Anna 1 kuva-URL ensimmäistä ruutua varten tai 2 kuva-URL-osoitetta ensimmäistä ja viimeistä ruutua varten. Videot ja äänet jätetään huomiotta.
reference-to-videoprompt + vähintään yksi kuva-, video- tai ääniviitekuvat, videot ja äänet materiaalirajoitusten puitteissaSeedance 2.5 tukee pelkkiä ääniviitteitä. Jos käytät Seedance 2.0 -mallia, lisää vähintään yksi kuva tai video, kun käytät ääntä.
text-to-video

Käytä tekstistä videoksi -tilaa, kun sanallinen kuvaus (prompt) on ainoa luova syöte.

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": "720p",
      "generate_audio": true,
      "watermark": false,
      "web_search": false,
      "return_last_frame": false
    }
  }'
image-to-video

Käytä kuvasta videoksi -tilaa, kun input.image_urls on taulukko, jossa on 1–2 kuva-URL-osoitetta: yksi URL määrittää ensimmäisen ruudun ja kaksi URL-osoitetta määrittävät ensimmäisen ja viimeisen ruudun. Tässä tilassa video- ja ääniviitteet jätetään huomiotta.

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

Käytä viitteistä videoksi -tilaa tarkempaan ohjaukseen viitekuvien, -videoiden ja -äänien avulla. Seedance 2.5 hyväksyy pelkän äänen viitteeksi; Seedance 2.0 vaatii vähintään yhden kuvan tai videon, jos ääntä käytetään.

Materiaalien rajoitukset

  • Seedance 2.5: enintään 30 viitekuvaa
  • Seedance 2.5: enintään 10 viitevideota, kukin 2–30 sekuntia ja yhteiskesto <= 30 sekuntia
  • Seedance 2.5: enintään 10 viiteääntä, kukin 2–30 sekuntia ja yhteiskesto <= 30 sekuntia
  • Seedance 2.5: enintään 50 materiaalia yhteensä kaikissa tyypeissä
  • Seedance 2.0 -versioissa säilyvät entiset rajoitukset: 9 kuvaa, 3 videota, 3 ääntä ja 15 sekuntia per video-/ääniryhmä

Tuetut syöyteyhdistelmät

Teksti + kuva
Teksti + video
Teksti + ääni (Seedance 2.5)
Teksti + kuva + video
Teksti + kuva + ääni
Teksti + video + ääni
Teksti + kuva + video + ääni
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"
    }
  }'

Kyselyn parametrit

Parametrien nimet, enum-arvot, päätepisteiden polut ja esimerkit ovat osa API-sopimusta. Alla olevat kuvaukset selittävät kunkin kentän toiminnan.

Otsakkeet

OtsakePakollinenKuvausEsimerkki
AuthorizationKylläBearer API-avain, jota käytetään pyynnön todennukseen.Bearer sk_live_xxx
Content-TypeKylläKaikki kirjoituspyynnöt käyttävät JSON-muotoa.application/json

Päätason kentät

KenttäTyyppiPakollinenOletusAlue / EnumTilatEsimerkki
model

Luontiin käytettävä malliversio. Käytä arvoa seedance-2-5 (Seedance 2.5), seedance-2-0 (Seedance 2.0), seedance-2-0-fast (Seedance 2.0 Fast) tai seedance-2-0-mini (Seedance 2.0 Mini).

stringKyllä-seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-minikaikkiseedance-2-5
callback_url

HTTPS-päätepiste, johon lähetetään takaisinkutsut tehtävän valmistumisesta tai epäonnistumisesta.

stringEi-HTTPS-osoite, ei yksityisiä verkkojakaikkihttps://your-domain.com/hook
input

Luontiasetukset ja mediatiedostojen viitteet.

objectKyllä--kaikki-

input.* kentät

KenttäTyyppiPakollinenOletusAlue / EnumTilatEsimerkki
input.prompt

Tekstikuvaus luotavasta videosta.

stringKyllä-ei-tyhjä tekstikaikkia cat surfing
input.generation_type

Luontitila. Oletusarvo on text-to-video.

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

Julkisesti saatavilla olevat kuvien URL-osoitteet. Kuvasta videoksi -tilassa lähetä 1 kuva ensimmäistä ruutua varten tai 2 kuvaa ensimmäistä ja viimeistä ruutua varten. Viitteestä videoksi -tilassa Seedance 2.5 hyväksyy enintään 30 kuvaa ja Seedance 2.0 enintään 9 kuvaa.

string[]Ehdollinen[]Kuvasta videoksi: 1 tai 2 kuvaa. Viitteestä videoksi: enintään 30 (Seedance 2.5) tai enintään 9 (Seedance 2.0).image-to-video / reference-to-video["https://.../a.jpg"]
input.video_urls

Julkisesti saatavilla olevat viitevideot, vain viitteestä videoksi -tilassa. Seedance 2.5 hyväksyy enintään 10 videota, kukin 2–30 sekuntia ja yhteiskesto <= 30 sekuntia. Seedance 2.0 hyväksyy enintään 3 videota, joiden yhteiskesto on <= 15 sekuntia.

string[]Ei[]Seedance 2.5: enintään 10 videota, kukin 2–30 sekuntia, yhteiskesto <= 30 sekuntia. Seedance 2.0: enintään 3 videota, yhteiskesto <= 15 sekuntia.reference-to-video[]
input.audio_urls

Julkisesti saatavilla olevat viiteäänitiedostot, vain viitteestä videoksi -tilassa. Seedance 2.5 hyväksyy enintään 10 äänitiedostoa, kukin 2–30 sekuntia ja yhteiskesto <= 30 sekuntia (sallii myös pelkät ääniviitteet). Seedance 2.0 hyväksyy enintään 3 tiedostoa, joiden yhteiskesto on <= 15 sekuntia.

string[]Ei[]Seedance 2.5: enintään 10 äänitiedostoa, kukin 2–30 sekuntia, yhteiskesto <= 30 sekuntia. Seedance 2.0: enintään 3 äänitiedostoa, yhteiskesto <= 15 sekuntia.reference-to-video[]
input.duration

Luotavan videon pituus sekunteina.

intEi5Seedance 2.5: 4–30 sekuntia. Seedance 2.0: 4–15 sekuntia.kaikki5
input.aspect_ratio

Luotavan videon kuvasuhde. adaptive antaa palvelun päätellä parhaan kuvasuhteen. Seedance 2.5 -mallin kuvasta videoksi -tila tukee vain adaptive-arvoa.

stringEiadaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptivekaikki16:9
input.resolution

Luotavan videon resoluutio.

stringEi720pSeedance 2.5: 480p | 720p. Seedance 2.0: 480p | 720p | 1080p | 4k (riippuen malliversiosta).kaikki720p
input.generate_audio

Määrittää, luoko malli äänen, jos se on tuettu.

booleanEitruetrue | falsekaikkitrue
input.watermark

Määrittää, lisätäänkö videoon vesileima.

booleanEifalsetrue | falsekaikkifalse
input.web_search

Määrittää, sallitaanko verkkohakujen hyödyntäminen tiedonhaussa, jos se on tuettu.

booleanEifalsetrue | falsekaikkifalse
input.return_last_frame

Määrittää, palautetaanko viimeisen ruudun kuvan URL-osoite, jos se on saatavilla.

booleanEifalsetrue | falsekaikkifalse
input.seed

Deterministinen siemenluku Seedance 2.0 -versioille. Seedance 2.5 ei tue tätä kenttää; jätä se pois.

intEi-1-1 tai 0–4294967295kaikki-1

Kuluvat saldot vaihtelevat resoluution, keston, mallin sekä sen mukaan, sisältääkö viitevideon luonti videoviitteitä. Luontipyynnön vastauksessa palautettava credits-arvo on tälle tehtävälle todellisuudessa varattu saldomäärä.

Katso hinnoittelu

Vastaus

Tämä on onnistunut vastaus POST /v1/videos/generations -pyyntöön. Se tarkoittaa, että tehtävä on vastaanotettu ja saldot on varattu. Käytä palautettua taskId-tunnusta kyselyyn GET /v1/tasks/:id tai yhdistääksesi sen valmistumis- tai virheilmoituksen callback-kutsuun.

POST /v1/videos/generations -pyynnön onnistunut vastaus

{
  "taskId": "3f2aK9mR...",
  "credits": 100
}

Hae tehtävän tila

Hae tehtävän nykyinen tila osoitteesta GET /v1/tasks/:id. Tee kyselyjä enintään kerran 10 sekunnissa. Tuotantojärjestelmissä suositellaan webhookien käyttöä.

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"

Valmiin tehtävän vastaus

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

Epäonnistuneen tehtävän vastaus

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}
ArvoMerkitys
status=queuedHyväksytty ja odottaa lähetystä tai käsittelyä.
status=generatingPalveluntarjoaja käsittelee videon luontia.
status=completedVideo on valmis ja data.results sisältää tuloksen URL-osoitteen.
status=failedLuonti epäonnistui tai aikakatkaistiin.
billing_status=reservedSaldot on varattu tehtävän ollessa käynnissä.
billing_status=chargedTehtävä onnistui ja varattu saldo veloitettiin.
billing_status=refundedTehtävä epäonnistui tai aikakatkaistiin, ja varattu saldo palautettiin.
billing_status=refund_failedSaldon palautustapahtuma epäonnistui ja vaatii manuaalista käsittelyä.

Ajankohdan video_expires_at jälkeen data.results on tyhjä. Lataa ja tallenna tiedosto ennen voimassaoloajan päättymistä.

Webhookit

Kun callback_url on määritetty, Seedance kutsuu päätepistettäsi tehtävän valmistuessa tai epäonnistuessa ja lähettää lopullisen tuloksen JSON-muodossa. Jos päätepisteesi palauttaa muun kuin 2xx-vastauksen tai ei vastaa 15 sekunnin kuluessa, lähetystä yritetään uudelleen enintään 5 kertaa. Uudelleenyritykset käyttävät samaa task id -tunnusta, joten poista kaksoiskappaleet tunnuksen perusteella. Palauta 200-vastaus heti, kun olet tallentanut callback-tiedot onnistuneesti.

Tehtävän valmistumisen takaisinkutsu (callback)

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

Tehtävän epäonnistumisen takaisinkutsu (callback)

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

Vahvista callback-tietojen rakenne, poista kaksoiskappaleet tunnuksen (id) perusteella, päivitä oma tehtäväluettelosi ja vastaa nopeasti.

callback_url-osoitteen on käytettävä HTTPS-yhteyttä, eikä se saa osoittaa yksityisiin, loopback- tai link-local-verkko-osoitteisiin.

Virheet

POST /v1/videos/generations ja GET /v1/tasks/:id palauttavat tämän virherakenteen, kun itse API-pyyntö epäonnistuu esimerkiksi virheellisten parametrien, virheellisen API-avaimen, riittämättömän saldon, käyttörajojen ylittymisen tai puuttuvan tehtävän vuoksi. Jotkin virheet sisältävät lisäkenttiä, kuten required, available tai retry_after tilanteesta riippuen.

{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this task.",
    "required": 100,
    "available": 12
  }
}
KoodiHTTPMerkitysYritetäänkö uudelleen?
invalid_request400Puuttuvia tai virheellisiä parametreja.Ei, korjaa pyyntö.
invalid_api_key401API-avain puuttuu, on virheellinen tai mitätöity.Ei, käytä toimivaa avainta.
insufficient_credits402Saldosi ei riitä. Tehtävää ei vastaanoteta eikä saldoa varata.Saldon lataamisen jälkeen.
forbidden403API-avaimelta puuttuvat tarvittavat oikeudet.Ei.
not_found404Tehtävää ei löydy tai se ei kuulu avaimen omistajalle.Ei.
rate_limited429Pyyntöjen määräraja ylittyi.Kyllä, noudata Retry-After-otsaketta.
internal_error500Palvelinvirhe.Kyllä, yritä myöhemmin uudelleen.

Käyttörajat

Käyttörajat sovelletaan API-avainkohtaisesti liukuvalla aikaikkunalla. Videon luontipyynnöissä oletusraja on 100 pyyntöä minuutissa; tilakyselyissä rajat ovat joustavammat. HTTP 429 -vastaukset sisältävät Retry-After-otsakkeen.

Videon luonti

100/min

Tilakyselyt

Sallivampi

429-otsake

Retry-After

Laskutus & saldot

API käyttää mallia, jossa saldo varataan lähetettäessä, veloitetaan onnistuessa ja palautetaan virhetilanteessa. Hallintapaneelin käyttösivuilta näet API-saldohistorian, tehtävälokit sekä ajanjaksoittaiset käyttötilastot.

Varattu

Saldot tarkistetaan ja varataan, kun tehtävä otetaan vastaan.

Veloitettu

Onnistuneet tehtävät vahvistavat olemassa olevan varauksen.

Palautettu

Epäonnistuneet tai aikakatkaistut tehtävät palauttavat varatut saldot automaattisesti.

Tarkastele käyttöä hallintapaneelissa

Katso API-lokeja, tehtävien aikajanoja, saldohistoriaa sekä ajanjaksoittaisia käyttömittareita.

API-lokit