Naar documentatie springen
Op deze pagina

Kling 4.0

Genereer video's met Kling 4.0 op basis van tekst, eerste en laatste frames of multimodale referenties. Deze pagina beschrijft de volledige workflow van request tot resultaat voor dit model.

API-model-ID: kling-4-0

Generatie verloopt asynchroon. Sla de taskId op die wordt geretourneerd bij het aanmaken van een taak, en vraag vervolgens de status op of ontvang een webhook.

Mogelijkheden

FunctieOndersteunde waarden
Outputresolutie720p · 1080p
Outputduur3–30 s
Beeldverhoudingauto, 16:9, 9:16, 1:1, 21:9
ReferentieafbeeldingenMaxinaal 10 afbeeldingen
Referentievideo'sMaximaal 5 video's
Referentie-audiobestandenMaximaal 3 audiobestanden
Alle referenties gecombineerdMaximaal 15 referentiebestanden in totaal
Referentievideo's (Σ)30 seconden
seedNiet ondersteund

Tarieven & credits

Voor het genereren van video's worden credits in rekening gebracht op basis van de factureerbare duur in seconden. Zonder video-invoer is de factureerbare duur gelijk aan de uitvoerduur. Met video-invoer is dit inclusief de duur van de referentievideo.

De onderstaande tabel toont het aantal credits dat per seconde in rekening wordt gebracht, niet de totale kosten van een taak. Het tarief is afhankelijk van het model, de uitvoerresolutie en of er referentievideo's worden meegeleverd in de referentie-naar-video-modus. Zie de formules en voorbeelden onder de tabel om de totale kosten te berekenen.

OutputresolutieZonder video-inputMet video-input
720p13 credits/seconde8 credits/seconde
1080p20 credits/seconde13 credits/seconde
  • Zonder video-input: output in seconden × tarief zonder video.
  • Bij video-invoer is T de totale duur van de referentievideo’s in seconden, gemeten door de server. Rond het uiteindelijke aantal credits naar boven af. ceil((duration + max(duration, T)) × rate)
  • Bij gebruik van alleen afbeelding- of audioreferenties geldt het tarief zonder video. Het tarief voor referentievideo's is alleen van toepassing in de referentie-naar-video-modus wanneer er daadwerkelijk videoreferenties worden meegeleverd.

Voorbeelden van kostenberekening

5 seconden 720p tekst-naar-video: 5 × 13 = 65 credits.

5 seconden 720p output met een referentievideo of 5 seconden: (5 + 5) × 8 = 80 credits.

Credits worden gereserveerd bij indiening en afgeschreven bij succes. Mislukte of getimede taken gaan naar de terugbetalingsprocedure. Een facturatiestatus refund_failed betekent dat de terugbetaling niet is voltooid; controleer de API-logs of neem contact op met support.

Authenticatie

Maak een API-sleutel aan in het dashboard. De volledige sleutel wordt slechts eenmalig getoond. Bewaar deze op je server en stuur hem mee als Bearer-token bij elk request.

Basis-URL

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

Stel de omgevingsvariabele SEEVIO_API_KEY in voordat je deze voorbeelden uitvoert. De JavaScript-voorbeelden draaien op je server met Node.js; de Python-voorbeelden gebruiken het requests-pakket.

Snelstart

Dien dit minimale request in, sla de geretourneerde taskId op en gebruik vervolgens het onderstaande voorbeeld om de taak op te vragen. De creditwaarde in de response bij aanmaken is het gereserveerde aantal.

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

Voorbeeldrespons taak aanmaken

Nadat het bovenstaande verzoek is geaccepteerd, retourneert de API deze JSON-respons. De taskId is de taak-id die wordt gebruikt voor volgende statusopvragingen; credits is het aantal credits dat voor deze taak is gereserveerd. Deze respons bevestigt dat de taak is aangemaakt, niet dat de video al klaar is. Je moet de status van de taak pollen of een webhook gebruiken om de videoresultaten te ontvangen.

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

Taak maken

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

Verzend een JSON-object met het model en de input, plus een optionele callback_url. Geef altijd het model-ID op dat op deze pagina wordt getoond; als er geen model wordt opgegeven, wordt automatisch gekozen voor seedance-2-0.

Request body

VeldTypeVereistBeschrijving & beperkingen
model
stringJa

Model-id. Stel dit veld in op kling-4-0 om Kling 4.0 te gebruiken.

callback_url
stringNee

Openbaar HTTPS-eindpunt voor POST-callbacks bij voltooiing en fouten. Privénetwerken en localhost zijn niet toegestaan.

Voorbeeld: https://example.com/webhooks/seevio
input
objectJa

Input-parameters

Input-parameters

VeldTypeStandaardBeschrijving & beperkingen
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—Maximaal 8000 tekens. Alleen optioneel bij genereren vanuit een afbeelding. Nummer verwijzingen per type in de volgorde van de lijst vanaf @Image1, @Video1 en @Audio1.
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostringAfhankelijk van modus
Ondersteunde waardenauto16:99:161:121:9

Een vaste verhouding bepaalt het uitvoerformaat. Bij weglaten of auto gebruikt de tekstmodus 16:9 en volgt de beeldmodus het eerste beeld. De referentiemodus bepaalt de verhouding aan de hand van de referentiebeelden of -video’s.

input.image_urlsstring[][]Geef bij genereren vanuit een afbeelding het eerste beeld op, eventueel gevolgd door het laatste. De referentiemodus ondersteunt maximaal 10 afbeeldingen.
input.keyframe_urlsstring[][]Tussenbeelden in afspeelvolgorde voor genereren vanuit een afbeelding. Maximaal 9 zonder eindbeeld of 8 met eindbeeld.
input.video_urlsstring[][]Alleen voor de referentiemodus. Geef HTTPS-URL’s van video’s die als voorbeeld voor actie of camerabeweging dienen. Maximaal 5 clips van elk 2 tot 30 seconden, samen maximaal 30 seconden.
input.audio_urlsstring[][]Alleen voor de referentiemodus. Geef HTTPS-URL’s van audioclips die als voorbeeld voor de stem of het geluid dienen. Maximaal 3 clips van elk 5 tot 30 seconden.
input.keep_original_soundbooleanfalseAls video_urls een referentievideo bevat, behoudt true het oorspronkelijke geluid en genereert false (standaard) nieuw geluid. Zonder referentievideo wordt deze instelling genegeerd.

Response bij aanmaken

HTTP 200 retourneert taskId (string) en credits (getal). Dit bevestigt het aanmaken van de taak, niet de voltooiing. De onderstaande waarde komt overeen met de snelstart van 5 seconden in 720p.

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

Generatiemodi & voorbeelden

Vervang de voorbeeld-URL's van example.com door je eigen openbaar toegankelijke HTTPS-bestanden. De voorbeeld-URL's dienen om de structuur van het request te tonen en zijn geen downloadbare voorbeeldbestanden.

Tekst naar video

Genereer op basis van een tekstprompt. Media-URL's worden in deze modus niet doorgestuurd.

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

Eerste frame

Geef één afbeelding op als het eerste frame en beschrijf de beweging in je 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"
    ]
  }
}'

Eerste en laatste frame

Geef bij genereren vanuit een afbeelding het eerste beeld op, eventueel gevolgd door het laatste. De referentiemodus ondersteunt maximaal 10 afbeeldingen.

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

Voorbeeld met sleutelframes: een roos in bloei

Maak een timelapse van 8 seconden met vier foto’s vanuit dezelfde hoek. Zet in image_urls de gesloten knop en de volledig geopende roos als begin- en eindbeeld. Zet in keyframe_urls eerst de ontluikende bloemblaadjes en daarna de halfopen bloem. De video gaat van de knop via die twee tussenstadia naar de volle bloei. De lijst bepaalt de volgorde en het model kiest de timing.

Vervang de voorbeeld-URL's van example.com door je eigen openbaar toegankelijke HTTPS-bestanden. De voorbeeld-URL's dienen om de structuur van het request te tonen en zijn geen downloadbare voorbeeldbestanden.

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

Multimodale referentie

Combineer afbeelding-, video- en audioreferenties. De prompt blijft vereist. Input van een referentievideo verandert de formule voor de facturering.

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

Taak opvragen

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

Vervang de voorbeeld-ID door de taskId die is geretourneerd bij het aanmaken. Queries retourneren alleen taken die eigendom zijn van de gebruiker van de API-sleutel; niet-toegankelijke of onbekende ID's retourneren HTTP 404.

Doe als uitgangspunt elke 10-20 seconden een poll, verminder de frequentie bij HTTP 429 en stop wanneer de status completed of failed is. Gebruik bij voorkeur webhooks voor productieomgevingen. Elk codevoorbeeld hieronder voert één query uit.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusBeschrijving & beperkingen
queuedGeaccepteerd en wachtend op verwerking.
generatingGeneratie is in uitvoering.
completedSuccesvol voltooid. Download data.results voordat deze verlopen.
failedDefinitief mislukt. Controleer failed_reason en billing_status.
VeldTypeBeschrijving & beperkingen
idstring
Taak-ID. Dit is de taskId uit de response bij het aanmaken.
created_atnumber
Tijdstip van aanmaken van de taak in Unix-seconden.
modelstring
De openbare model-ID die voor deze taak is gebruikt.
billing_statusstring
reserved, charged, refunded of refund_failed.
creditsnumber
Credits gereserveerd voor deze taak. Deze waarde blijft behouden na een terugbetaling; controleer billing_status om het uiteindelijke factureringsresultaat te bepalen.
failed_reasonstring | null
Reden van mislukken bij mislukte taken; anders null. Mislukte query-responses bevatten geen data.
dataobject
Aanwezig bij succesvol opgevraagde taken. Bevat details over de output en de verwerking.
data.resultsstring[]
Array van video-URL's. Leeg tot de voltooiing of nadat de video is verlopen.
data.video_expires_atstring | null
Vervaltijd van de video als ISO 8601-timestamp, of null voordat deze beschikbaar is. Sla het resultaat vóór dit tijdstip op.
data.last_frame_urlstring | null
URL van het laatste frame indien aangevraagd en beschikbaar, anders null.
data.processing_timenumber | null
Verwerkingstijd van de taak in seconden indien beschikbaar, anders null.

Voltooide taak: opvraagrespons met video-resultaten

Wanneer de opvraging status=completed retourneert, is het genereren van de video voltooid. Lees de video-URL's uit via data.results en download deze vóór data.video_expires_at. De status billing_status=charged geeft aan dat de gereserveerde credits in rekening zijn gebracht.

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

Mislukte taak: opvraagrespons met fout- en factureringsdetails

Wanneer de opvraging status=failed retourneert, is het genereren mislukt. Zie failed_reason voor de oorzaak en billing_status voor het resultaat van de terugbetaling. In dit voorbeeld betekent refunded dat de credits zijn teruggestort. Bij credits blijft het oorspronkelijk gereserveerde aantal staan en de respons bevat geen 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"
}

Webhooks

Stel callback_url in het aanmaak-request in om een JSON POST te ontvangen wanneer de taak is voltooid of mislukt. Retourneer binnen 15 seconden een 2xx-response. Mislukte leveringen worden opnieuw geprobeerd; verwerk herhaalde leveringen idempotent op basis van de taak-ID.

Je callback-endpoint moet POST-verzoeken met een JSON-body accepteren (Content-Type: application/json).

Maak een taak met een 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"
}'

Taak voltooid: payload voor succesvolle callback

Als het genereren is geslaagd, bevat de callback status=completed. Gebruik id om de taak te identificeren en data.results om de video-URL's op te halen. Download en bewaar de resultaten vóór data.video_expires_at.

created_at is de aanmaaktijd van de gebeurtenis; task_created_at die van de taak, in Unix-seconden. Voorbeelden tonen de aanbevolen velden; antwoorden kunnen extra velden bevatten.

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

Taak mislukt: payload voor mislukte callback

Als het genereren mislukt, bevat de callback status=failed. Gebruik id om de taak te identificeren, failed_reason voor de reden van de fout en credits_refunded voor het aantal teruggestorte credits.

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

Voorbeeld van een ontvanger

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

Dit Next.js-voorbeeld leest de JSON-callback-body en verwerkt voltooide en mislukte taken direct. Voeg persistentie en taak-ID-deduplicatie toe voor je eigen applicatie; zet traag werk in de wachtrij voordat je de callback bevestigt.

Mediavereisten & beperkingen

  • Alle media- en callback-URL's moeten openbare HTTPS-URL's zijn. Vermijd localhost, privé-IP-adressen en bestanden die cookies of een login vereisen. Referentievideo-/-audio-URL's moeten rechtstreeks naar leesbare media verwijzen.
  • Elke video mag maximaal 100 MB groot zijn.
  • Elk audiobestand mag maximaal 15 MB groot zijn.
  • Maximaal 15 referentiebestanden in totaal