Siirry dokumentaatioon
Tällä sivulla

Kling 4.0

Luo videoita Kling 4.0 -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: kling-4-0

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

Ominaisuudet

OminaisuusTuetut arvot
Tulostarkkuus720p · 1080p
Tuloksen kesto3–30 s
Kuvasuhdeauto, 16:9, 9:16, 1:1, 21:9
ViitekuvatEnintään 10 kuvaa
ViitevideotEnintään 5 videota
ViiteäänitiedostotEnintään 3 äänitiedostoa
Kaikki viitemateriaalit yhteensäYhteensä enintään 15 viitetiedostoa
Viitevideot (Σ)30 sekuntia
seedEi tuettu

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.

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
720p13 saldoa/sekunti8 saldoa/sekunti
1080p20 saldoa/sekunti13 saldoa/sekunti
  • Ilman videosisääntuloa: valmiin videon sekunnit × hinta ilman videota.
  • Kun syötteessä on video, T on palvelimen mittaama viitevideoiden yhteiskesto sekunteina. Lopullinen krediittimäärä pyöristetään ylöspäin. ceil((duration + max(duration, T)) × rate)
  • 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 × 13 = 65 krediittiä.

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

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.

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": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

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": 65
}

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 takaisinkutsuosoitteen (callback_url). Määritä aina tällä sivulla näkyvä mallitunnus (model ID). 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 Kling 4.0, määritä tämän kentän arvoksi kling-4-0.

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ä

Syöteparametrit

Syöteparametrit

KenttäTyyppiOletusKuvaus ja rajoitukset
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—Enintään 8000 merkkiä. Valinnainen vain luotaessa videota kuvasta. Numeroi viitteet tyypeittäin taulukon järjestyksessä alkaen tunnisteista @Image1, @Video1 ja @Audio1.
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostringRiippuu tilasta
Tuetut arvotauto16:99:161:121:9

Kiinteä kuvasuhde määrää lopputuloksen muodon. Jos kenttä jätetään pois tai arvoksi annetaan auto, tekstitila käyttää suhdetta 16:9 ja kuvatila ensimmäisen ruudun kuvasuhdetta. Viitetilassa suhde määräytyy viitekuvien tai -videoiden perusteella.

input.image_urlsstring[][]Anna kuvasta luotaessa ensin aloituskuva ja halutessasi loppukuva. Viitetila hyväksyy enintään 10 kuvaa.
input.keyframe_urlsstring[][]Väliruudut toistojärjestyksessä kuvasta luotavalle videolle. Enintään 9 ilman loppukuvaa tai 8 loppukuvan kanssa.
input.video_urlsstring[][]Vain viitetilassa. Anna HTTPS-osoitteet videoille, joita käytetään liikkeen tai kameratyön mallina. Enintään 5 leikettä, kukin 2–30 sekuntia ja yhteensä enintään 30 sekuntia.
input.audio_urlsstring[][]Vain viitetilassa. Anna HTTPS-osoitteet äänileikkeille, joita käytetään puheen tai äänen mallina. Enintään 3 leikettä, kukin 5–30 sekuntia.
input.keep_original_soundbooleanfalseKun video_urls sisältää viitevideon, true säilyttää alkuperäisen äänen ja false (oletus) luo uuden äänen. Ilman viitevideota asetus ohitetaan.

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": 65
}

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": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

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": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg"
    ]
  }
}'

Ensimmäinen ja viimeinen kehys

Anna kuvasta luotaessa ensin aloituskuva ja halutessasi loppukuva. Viitetila hyväksyy enintään 10 kuvaa.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg",
      "https://example.com/last.jpg"
    ]
  }
}'

Avainruutuesimerkki: ruusun puhkeaminen kukkaan

Tee neljästä samasta kulmasta otetusta kuvasta kahdeksan sekunnin nopeutettu video. Anna image_urls-kentässä alku- ja loppukuviksi suljettu nuppu ja täysin avautunut ruusu. Anna keyframe_urls-kentässä ensin kuva avautuvista terälehdistä ja sitten puoliksi avautuneesta kukasta. Video etenee nupusta näiden kahden vaiheen kautta täyteen kukintaan. Taulukko määrää järjestyksen ja malli ajoituksen.

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

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A time-lapse of a rose opening. Keep the camera still and the light soft as the petals unfold.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/rose-bud.jpg",
      "https://example.com/rose-full-bloom.jpg"
    ],
    "keyframe_urls": [
      "https://example.com/rose-opening.jpg",
      "https://example.com/rose-half-open.jpg"
    ]
  }
}'

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": "kling-4-0",
  "input": {
    "prompt": "Animate @Image1 with the movement of @Video1 and ambience from @Audio1.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/motion.mp4"
    ],
    "audio_urls": [
      "https://example.com/surf.mp3"
    ],
    "keep_original_sound": false
  }
}'

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.
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
Tehtävän käsittelyaika sekunteina, jos se on saatavilla, muussa tapauksessa 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": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 65,
  "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": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 65,
  "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": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  },
  "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": "kling-4-0",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 65,
  "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": "kling-4-0",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed",
  "credits_refunded": 65
}

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.
  • Yksittäinen video saa olla enintään 100 kt.
  • Yksittäinen äänitiedosto saa olla enintään 15 kt.
  • Yhteensä enintään 15 viitetiedostoa