Sari la documentație
Pe această pagină

Kling 4.0

Generează videoclipuri cu Kling 4.0 folosind text, primul și ultimul cadru sau referințe multimodale. Această pagină acoperă întregul flux, de la solicitare până la rezultat.

ID model API: kling-4-0

Generarea este asincronă. Salvează parametrul taskId returnat la crearea sarcinii, apoi interoghează statusul acesteia sau primește un webhook.

Funcționalități

FuncțieValori acceptate
Rezoluție de ieșire720p · 1080p
Durată de ieșire3–30 s
Raport de aspectauto, 16:9, 9:16, 1:1, 21:9
Imagini de referințăMaxim 10 imagini
Videoclipuri de referințăMaxim 5 videoclipuri
Fișiere audio de referințăMaxim 3 fișiere audio
Toate referințele combinateMaxim 15 fișiere de referință în total
Videoclipuri de referință (Σ)30 secunde
seedNeacceptat

Tarife și credite

Generarea video este tarifată în credite, în funcție de durata facturabilă exprimată în secunde. În absența unui videoclip de intrare, durata facturabilă este egală cu durata videoclipului generat; în cazul utilizării unui videoclip de intrare, durata facturabilă include și durata videoclipului de referință.

Tabelul de mai jos prezintă creditele tarifate pe secundă, nu costul total al unei sarcini. Tariful depinde de model, de rezoluția de redare și de utilizarea videoclipurilor de referință în modul de conversie referință-video. Consultați formulele și exemplele de sub tabel pentru calculul costului total.

Rezoluție de ieșireFără intrare videoCu intrare video
720p13 credite/secundă8 credite/secundă
1080p20 credite/secundă13 credite/secundă
  • Fără intrare video: secunde de ieșire × tariful fără video.
  • Cu intrare video, T este durata totală în secunde a videoclipurilor de referință, măsurată de server. Totalul final de credite se rotunjește în sus. ceil((duration + max(duration, T)) × rate)
  • Referințele de tip imagine sau exclusiv audio folosesc tariful fără video. Tariful de facturare cu video de referință se aplică doar în modul referință-la-video, atunci când sunt furnizate referințe video.

Exemple de calcul al costurilor

Generare text-la-video de 5 secunde la 720p: 5 × 13 = 65 credite.

Generare de 5 secunde la 720p cu un videoclip de referință de 5 secunde: (5 + 5) × 8 = 80 credite.

Creditele sunt rezervate la trimiterea solicitării și sunt încasate doar în caz de succes. Sarcinile eșuate sau care au expirat intră în fluxul de rambursare. Statusul de facturare refund_failed înseamnă că rambursarea nu s-a putut finaliza; verifică jurnalele API sau contactează echipa de asistență.

Autentificare

Creează o cheie API în panoul de control. Cheia completă este afișată o singură dată. Păstreaz-o în siguranță pe serverul tău și trimite-o ca token Bearer la fiecare solicitare.

URL de bază

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

Setează variabila de mediu SEEVIO_API_KEY înainte de a rula aceste exemple. Exemplele în JavaScript rulează pe serverul tău cu Node.js; exemplele în Python utilizează pachetul requests.

Ghid rapid

Trimite această solicitare minimă, salvează valoarea taskId returnată, apoi folosește exemplul de interogare a sarcinii de mai jos. Valoarea creditelor din răspunsul de creare reprezintă suma rezervată.

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

Exemplu de răspuns pentru crearea sarcinii

După acceptarea cererii de mai sus, API-ul returnează acest răspuns JSON. Valoarea taskId este identificatorul de sarcină utilizat pentru interogările ulterioare de stare, iar credits reprezintă numărul de credite rezervate pentru această sarcină. Acest răspuns confirmă crearea sarcinii, nu și faptul că videoclipul este gata. Trebuie să interogați periodic starea sarcinii (polling) sau să folosiți un Webhook pentru a primi rezultatele video.

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

Creează o sarcină

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

Trimite un obiect JSON care să conțină model și input, plus un parametru opțional callback_url. Specifică întotdeauna ID-ul modelului afișat pe această pagină; dacă omiți model, se va selecta automat seedance-2-0.

Corp solicitare

CâmpTipObligatoriuDescriere și constrângeri
model
stringDa

ID model. Pentru a utiliza Kling 4.0, setează acest câmp la kling-4-0.

callback_url
stringNu

Endpoint HTTPS public pentru callback-urile de tip POST în caz de finalizare sau eșec. Rețelele private și localhost nu sunt permise.

Exemplu: https://example.com/webhooks/seevio
input
objectDa

Parametri de intrare

Parametri de intrare

CâmpTipValoare implicităDescriere și constrângeri
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—Cel mult 8000 de caractere. Opțional doar la generarea din imagini. Numerotează referințele după tip și ordinea din listă, începând cu @Image1, @Video1 și @Audio1.
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostringDepinde de mod
Valori acceptateauto16:99:161:121:9

Un raport fix stabilește formatul rezultatului. Dacă omiți câmpul sau alegi auto, modul text folosește 16:9, iar modul imagine urmează primul cadru. Modul cu referințe determină raportul pe baza imaginilor sau a videoclipurilor de referință.

input.image_urlsstring[][]La generarea din imagini, trimite primul cadru, urmat opțional de ultimul. Modul cu referințe acceptă până la 10 imagini.
input.keyframe_urlsstring[][]Cadre intermediare în ordinea redării pentru generarea din imagini. Cel mult 9 fără cadru final sau 8 cu acesta.
input.video_urlsstring[][]Doar pentru modul cu referințe. Trimite adresele HTTPS ale videoclipurilor care vor ghida acțiunea sau mișcarea camerei. Cel mult 5 clipuri de 2–30 de secunde fiecare și maximum 30 de secunde în total.
input.audio_urlsstring[][]Doar pentru modul cu referințe. Trimite adresele HTTPS ale clipurilor audio care vor ghida vocea sau sunetul generat. Cel mult 3 clipuri de 5–30 de secunde fiecare.
input.keep_original_soundbooleanfalseDacă video_urls conține un videoclip de referință, true păstrează sunetul original, iar false (implicit) generează sunet nou. În lipsa unui videoclip de referință, parametrul este ignorat.

Răspuns creare

Codul HTTP 200 returnează taskId (string) și credits (număr). Acest lucru confirmă crearea sarcinii, nu și finalizarea ei. Suma de mai jos corespunde ghidului rapid pentru un clip de 5 secunde la 720p.

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

Moduri de generare și exemple

Înlocuiește URL-urile media de tip example.com cu propriile tale fișiere accesibile public prin HTTPS. URL-urile din exemplu au scop demonstrativ pentru structura solicitării și nu reprezintă resurse descărcabile.

Text în video

Generează pornind de la un prompt text. URL-urile media nu sunt transmise în acest mod.

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

Primul cadru

Furnizează o imagine ca prim cadru, apoi descrie mișcarea dorită în 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": "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"
    ]
  }
}'

Primul și ultimul cadru

La generarea din imagini, trimite primul cadru, urmat opțional de ultimul. Modul cu referințe acceptă până la 10 imagini.

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

Exemplu cu cadre-cheie: un trandafir înflorește

Creează o secvență accelerată de 8 secunde din patru fotografii făcute din același unghi. În image_urls pune bobocul închis și trandafirul înflorit ca prim și ultim cadru. În keyframe_urls pune mai întâi petalele care încep să se deschidă, apoi floarea întredeschisă. Videoclipul trece de la boboc prin cele două etape până la înflorirea completă. Lista stabilește ordinea, iar modelul alege momentul fiecărei etape.

Înlocuiește URL-urile media de tip example.com cu propriile tale fișiere accesibile public prin HTTPS. URL-urile din exemplu au scop demonstrativ pentru structura solicitării și nu reprezintă resurse descărcabile.

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

Referință multimodală

Combină referințe de tip imagine, video și audio. Promptul text rămâne obligatoriu. Introducerea unui videoclip de referință modifică formula de facturare.

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

Interoghează o sarcină

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

Înlocuiește ID-ul din exemplu cu valoarea taskId returnată la crearea sarcinii. Interogările returnează doar sarcinile asociate utilizatorului cheii API; ID-urile inaccesibile sau necunoscute returnează HTTP 404.

Ca punct de pornire, interoghează la fiecare 10–20 secunde, redu frecvența în caz de HTTP 429 și oprește interogarea când statusul devine completed sau failed. Pentru mediile de producție, recomandăm utilizarea webhookurilor. Fiecare exemplu de cod de mai jos efectuează o singură interogare.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusDescriere și constrângeri
queuedAcceptat și în așteptare pentru procesare.
generatingGenerarea este în curs de desfășurare.
completedSucces. Descarcă elementele din data.results înainte de expirare.
failedEșec definitiv. Inspectează failed_reason și billing_status.
CâmpTipDescriere și constrângeri
idstring
Identificatorul sarcinii. Acesta reprezintă valoarea taskId din răspunsul de creare.
created_atnumber
Data creării sarcinii, exprimată în secunde Unix.
modelstring
ID-ul public al modelului utilizat pentru această sarcină.
billing_statusstring
statusul facturării: reserved, charged, refunded sau refund_failed.
creditsnumber
Credite rezervate pentru această sarcină. Această valoare este păstrată după o rambursare; inspectează billing_status pentru a determina rezultatul final al facturării.
failed_reasonstring | null
Motivul eșecului pentru sarcinile eșuate; în caz contrar, are valoarea null. Răspunsurile de interogare eșuate nu conțin obiectul data.
dataobject
Prezent în interogările sarcinilor care nu au eșuat. Conține detalii despre rezultat și procesare.
data.resultsstring[]
Array cu URL-urile videoclipurilor generate. Rămâne gol până la finalizare sau după ce videoclipul a expirat.
data.video_expires_atstring | null
Expirarea videoclipului ca timestamp ISO 8601 sau null înainte ca acesta să fie disponibil. Salvează rezultatul înainte de acest termen.
data.last_frame_urlstring | null
URL-ul ultimului cadru când este solicitat și disponibil, în caz contrar null.
data.processing_timenumber | null
Durata de procesare a sarcinii în secunde, dacă este disponibilă; în caz contrar, null.

Sarcină finalizată: răspuns la interogare cu rezultatele video

Atunci când interogarea returnează status=completed, generarea videoclipului s-a încheiat. Citiți URL-urile videoclipurilor din data.results și descărcați-le înainte de data.video_expires_at. billing_status=charged indică faptul că au fost debitate creditele rezervate.

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

Sarcină eșuată: răspuns la interogare cu detalii despre eroare și facturare

Atunci când interogarea returnează status=failed, procesul de generare s-a încheiat fără succes. Consultați failed_reason pentru a afla cauza și billing_status pentru rezultatul rambursării. În acest exemplu, refunded înseamnă că toate creditele au fost returnate. Parametrul credits păstrează valoarea inițială rezervată, iar răspunsul nu include obiectul data.

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

Webhookuri

Setează parametrul callback_url în solicitarea de creare pentru a primi un POST JSON atunci când sarcina se finalizează sau eșuează. Returnează un răspuns de tip 2xx în decurs de 15 secunde. Livrările eșuate vor fi reîncercate; procesează livrările repetate în mod idempotent pe baza ID-ului sarcinii.

Endpoint-ul dumneavoastră de callback trebuie să accepte solicitări de tip POST cu un corp de solicitare JSON (Content-Type: application/json).

Creează o sarcină cu 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": "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"
}'

Sarcină finalizată: payload de callback reușit

Atunci când generarea reușește, callback-ul conține status=completed. Utilizați id pentru a identifica sarcina și data.results pentru a prelua URL-urile videoclipurilor. Descărcați și salvați rezultatele înainte de data.video_expires_at.

created_at este momentul creării evenimentului; task_created_at este momentul creării sarcinii, în secunde Unix. Exemplele arată câmpurile recomandate; răspunsurile pot conține câmpuri suplimentare.

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

Sarcină eșuată: payload de callback eșuat

Atunci când generarea eșuează, callback-ul conține status=failed. Utilizați id pentru a identifica sarcina, failed_reason pentru motivul eșecului și credits_refunded pentru numărul de credite returnate.

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

Exemplu de receptor

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

Acest exemplu de Next.js citește corpul JSON al callback-ului și gestionează direct sarcinile finalizate și cele eșuate. Adăugați persistență și deduplicare a ID-urilor de sarcini pentru aplicația dumneavoastră; puneți în coadă procesele lente înainte de a confirma callback-ul.

Cerințe și limitări media

  • Toate URL-urile pentru fișierele media și cele de callback trebuie să fie adrese HTTPS publice. Evită localhost, IP-urile private și fișierele care necesită cookie-uri sau autentificare. URL-urile pentru videoclipurile/fișierele audio de referință trebuie să returneze direct fluxul media.
  • Fiecare videoclip nu trebuie să depășească 100 MB.
  • Fiecare fișier audio nu trebuie să depășească 15 MB.
  • Maxim 15 fișiere de referință în total