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ție | Valori acceptate |
|---|---|
| Rezoluție de ieșire | 720p · 1080p |
| Durată de ieșire | 3–30 s |
| Raport de aspect | auto, 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 combinate | Maxim 15 fișiere de referință în total |
| Videoclipuri de referință (Σ) | 30 secunde |
| seed | Neacceptat |
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șire | Fără intrare video | Cu intrare video |
|---|---|---|
720p | 13 credite/secundă | 8 credite/secundă |
1080p | 20 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.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonSetează 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/generationsTrimite 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âmp | Tip | Obligatoriu | Descriere și constrângeri |
|---|---|---|---|
model | string | Da | ID model. Pentru a utiliza Kling 4.0, setează acest câmp la kling-4-0. |
callback_url | string | Nu | 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 | object | Da | Parametri de intrare |
Parametri de intrare
| Câmp | Tip | Valoare implicită | Descriere și constrângeri |
|---|---|---|---|
input.generation_type | string | text-to-video | text-to-video | image-to-video | reference-to-video |
input.prompt | string | — | 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.duration | integer | 5 | 3–30 s |
input.resolution | string | 720p | 720p | 1080p |
input.aspect_ratio | string | Depinde de mod | Valori acceptate auto16:99:161:121:9Un 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_urls | string[] | [] | La generarea din imagini, trimite primul cadru, urmat opțional de ultimul. Modul cu referințe acceptă până la 10 imagini. |
input.keyframe_urls | string[] | [] | Cadre intermediare în ordinea redării pentru generarea din imagini. Cel mult 9 fără cadru final sau 8 cu acesta. |
input.video_urls | string[] | [] | 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_urls | string[] | [] | 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_sound | boolean | false | Dacă 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
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"| Status | Descriere și constrângeri |
|---|---|
queued | Acceptat și în așteptare pentru procesare. |
generating | Generarea este în curs de desfășurare. |
completed | Succes. Descarcă elementele din data.results înainte de expirare. |
failed | Eșec definitiv. Inspectează failed_reason și billing_status. |
| Câmp | Tip | Descriere și constrângeri |
|---|---|---|
id | string | Identificatorul sarcinii. Acesta reprezintă valoarea taskId din răspunsul de creare. |
created_at | number | Data creării sarcinii, exprimată în secunde Unix. |
model | string | ID-ul public al modelului utilizat pentru această sarcină. |
billing_status | string | statusul facturării: reserved, charged, refunded sau refund_failed. |
credits | number | 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_reason | string | 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. |
data | object | Prezent în interogările sarcinilor care nu au eșuat. Conține detalii despre rezultat și procesare. |
data.results | string[] | Array cu URL-urile videoclipurilor generate. Rămâne gol până la finalizare sau după ce videoclipul a expirat. |
data.video_expires_at | string | null | Expirarea videoclipului ca timestamp ISO 8601 sau null înainte ca acesta să fie disponibil. Salvează rezultatul înainte de acest termen. |
data.last_frame_url | string | null | URL-ul ultimului cadru când este solicitat și disponibil, în caz contrar null. |
data.processing_time | number | 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