Direkt zur Dokumentation
Auf dieser Seite

Kling 4.0

Generieren Sie Videos mit Kling 4.0 mithilfe von Text, ersten und letzten Frames oder multimodalen Referenzen. Diese Seite beschreibt den gesamten Workflow von der Anfrage bis zum Ergebnis für dieses Modell.

API-Modell-ID: kling-4-0

Die Generierung erfolgt asynchron. Speichern Sie die beim Erstellen des Tasks zurückgegebene taskId, um den Status abzufragen oder einen Webhook zu empfangen.

Funktionen

FeatureUnterstützte Werte
Ausgabeauflösung720p · 1080p
Ausgabedauer3–30 s
Seitenverhältnisauto, 16:9, 9:16, 1:1, 21:9
ReferenzbilderBis zu 10 Bilder
ReferenzvideosBis zu 5 Videos
ReferenzaudiodateienBis zu 3 Audiodateien
Alle Referenzen kombiniertInsgesamt bis zu 15 Referenzdateien
Referenzvideos (Σ)30 Sekunden
seedNicht unterstützt

Preise & Credits

Die Videogenerierung wird in Credits auf Basis der abrechenbaren Dauer in Sekunden abgerechnet. Ohne Video-Input entspricht die abrechenbare Dauer der Ausgabedauer; mit Video-Input umfasst sie zusätzlich die Dauer des Referenzvideos.

In der folgenden Tabelle sind die berechneten Credits pro Sekunde aufgeführt, nicht die Gesamtkosten eines Auftrags. Die Rate hängt vom Modell, der Ausgabeauflösung und der Frage ab, ob im Referenz-zu-Video-Modus Referenzvideos bereitgestellt werden. Die Formeln und Beispiele unter der Tabelle zeigen, wie sich die Gesamtkosten berechnen.

AusgabeauflösungOhne Video-InputMit Video-Input
720p13 Credits/Sekunde8 Credits/Sekunde
1080p20 Credits/Sekunde13 Credits/Sekunde
  • Ohne Video-Input: Ausgabesekunden × Tarif ohne Video.
  • Bei Videoeingabe ist T die vom Server gemessene Gesamtdauer der Referenzvideos in Sekunden. Erst die endgültigen Credits werden aufgerundet. ceil((duration + max(duration, T)) × rate)
  • Reine Bild- oder Audioreferenzen nutzen den Tarif ohne Video. Der Tarif für Referenzvideos gilt nur im Reference-to-Video-Modus, wenn tatsächlich Videoreferenzen übergeben werden.

Abrechnungsbeispiele

5 Sekunden 720p Text-to-Video: 5 × 13 = 65 Credits.

5 Sekunden 720p Ausgabe mit einem 5-sekündigen Referenzvideo: (5 + 5) × 8 = 80 Credits.

Credits werden bei der Übermittlung reserviert und bei Erfolg abgebucht. Fehlgeschlagene Tasks oder Timeouts gehen in den Rückerstattungsprozess. Der Abrechnungsstatus refund_failed bedeutet, dass die Rückerstattung nicht abgeschlossen werden konnte; prüfen Sie die API-Protokolle oder kontaktieren Sie den Support.

Authentifizierung

Erstellen Sie einen API-Key im Dashboard. Der vollständige Key wird nur einmal angezeigt. Speichern Sie ihn auf Ihrem Server und senden Sie ihn bei jeder Anfrage als Bearer-Token mit.

Basis-URL

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

Setzen Sie die Umgebungsvariable SEEVIO_API_KEY, bevor Sie diese Beispiele ausführen. JavaScript-Beispiele laufen mit Node.js auf Ihrem Server; Python-Beispiele nutzen das requests-Paket.

Schnellstart

Senden Sie diese minimale Anfrage, speichern Sie die zurückgegebene taskId und nutzen Sie das untenstehende Beispiel zur Task-Abfrage. Der Credits-Wert in der Erstellungsantwort entspricht dem reservierten Betrag.

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

Beispiel für die Antwort beim Erstellen eines Tasks

Nach der Annahme der oben genannten Anfrage gibt die API diese JSON-Antwort zurück. taskId ist die Aufgabenkennung für nachfolgende Statusabfragen; credits ist die Anzahl der für diese Aufgabe reservierten Credits. Diese Antwort bestätigt lediglich die Erstellung der Aufgabe, nicht die Fertigstellung des Videos. Sie müssen den Status der Aufgabe abfragen (Polling) oder einen Webhook verwenden, um die Videoergebnisse zu erhalten.

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

Task erstellen

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

Senden Sie ein JSON-Objekt, das model und input sowie optional eine Callback-URL (callback_url) enthält. Geben Sie immer die auf dieser Seite angezeigte Modell-ID an. Wird kein Modell angegeben, wird standardmäßig seedance-2-0 ausgewählt.

Request-Body

FeldTypErforderlichBeschreibung & Einschränkungen
model
stringJa

Modell-ID. Um Kling 4.0 zu verwenden, setzen Sie dieses Feld auf kling-4-0.

callback_url
stringNein

Öffentlicher HTTPS-Endpunkt für POST-Callbacks bei Fertigstellung oder Fehlern. Private Netzwerke und localhost sind nicht erlaubt.

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

Eingabeparameter

Eingabeparameter

FeldTypStandardBeschreibung & Einschränkungen
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—Bis zu 8000 Zeichen. Nur bei Bild-zu-Video optional. Referenzen je Typ in Array-Reihenfolge ab @Image1, @Video1 und @Audio1 nummerieren.
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostringJe nach Modus
Unterstützte Werteauto16:99:161:121:9

Ein festes Format bestimmt das Seitenverhältnis der Ausgabe. Ohne Angabe oder bei auto nutzt der Textmodus 16:9 und der Bildmodus das Format des ersten Frames. Im Referenzmodus richtet sich das Format nach den Referenzbildern oder -videos.

input.image_urlsstring[][]Bei Bild-zu-Video zuerst das Startbild, optional danach das Endbild angeben. Im Referenzmodus sind bis zu 10 Bilder erlaubt.
input.keyframe_urlsstring[][]Zwischenbilder für Bild-zu-Video in Abspielreihenfolge. Bis zu 9 ohne Endbild oder 8 mit Endbild.
input.video_urlsstring[][]Nur im Referenzmodus. Gib HTTPS-URLs von Videos an, die als Vorlage für Bewegungen oder Kamerafahrten dienen. Bis zu 5 Clips mit jeweils 2 bis 30 Sekunden und insgesamt höchstens 30 Sekunden.
input.audio_urlsstring[][]Nur im Referenzmodus. Gib HTTPS-URLs von Audioclips als Vorlage für Stimmen oder Geräusche an. Bis zu 3 Clips mit jeweils 5 bis 30 Sekunden.
input.keep_original_soundbooleanfalseEnthält video_urls ein Referenzvideo, behält true dessen Originalton bei. false (Standard) erzeugt neuen Ton. Ohne Referenzvideo wird diese Einstellung ignoriert.

Antwort bei Erstellung

HTTP 200 gibt die taskId (String) und credits (Zahl) zurück. Dies bestätigt die Erstellung des Tasks, nicht dessen Fertigstellung. Der unten stehende Betrag entspricht dem 5-sekündigen 720p-Schnellstart.

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

Generierungsmodi & Beispiele

Ersetzen Sie die Medien-URLs von example.com durch Ihre eigenen, öffentlich zugänglichen HTTPS-Dateien. Die Beispiel-URLs dienen nur zur Veranschaulichung der Request-Struktur und sind keine herunterladbaren Beispieldateien.

Text-to-Video

Aus einem Text-Prompt generieren. Medien-URLs werden in diesem Modus nicht weitergeleitet.

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

Erster Frame

Geben Sie ein Bild als ersten Frame an und beschreiben Sie die Bewegung in Ihrem 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"
    ]
  }
}'

Erster und letzter Frame

Bei Bild-zu-Video zuerst das Startbild, optional danach das Endbild angeben. Im Referenzmodus sind bis zu 10 Bilder erlaubt.

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

Beispiel mit Schlüsselbildern: Eine Rose blüht auf

Erstelle aus vier Fotos aus demselben Blickwinkel einen achtsekündigen Zeitraffer. In image_urls stehen die geschlossene Knospe und die voll erblühte Rose als Start- und Endbild. In keyframe_urls folgen die ersten sich öffnenden Blütenblätter und die halb geöffnete Blüte. So führt der Ablauf von der Knospe über diese beiden Zwischenstadien zur vollen Blüte. Das Array legt die Reihenfolge fest, das Modell die Zeitpunkte.

Ersetzen Sie die Medien-URLs von example.com durch Ihre eigenen, öffentlich zugänglichen HTTPS-Dateien. Die Beispiel-URLs dienen nur zur Veranschaulichung der Request-Struktur und sind keine herunterladbaren Beispieldateien.

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 Referenz

Kombinieren Sie Bild-, Video- und Audioreferenzen. Der Prompt ist weiterhin erforderlich. Die Übergabe eines Referenzvideos ändert die Abrechnungsformel.

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

Task abfragen

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

Ersetzen Sie die Beispiel-ID durch die bei der Erstellung zurückgegebene taskId. Abfragen liefern nur Tasks zurück, die dem User des API-Keys gehören; bei unzugänglichen oder unbekannten IDs wird HTTP 404 zurückgegeben.

Fragen Sie anfangs alle 10–20 Sekunden ab, drosseln Sie die Frequenz bei HTTP 429 und stoppen Sie, sobald der Status completed oder failed lautet. Nutzen Sie für die Produktion bevorzugt Webhooks. Jedes Codebeispiel unten führt eine einzelne Abfrage aus.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusBeschreibung & Einschränkungen
queuedAkzeptiert und wartet auf die Verarbeitung.
generatingGenerierung läuft.
completedErfolgreich abgeschlossen. Laden Sie data.results vor dem Ablaufdatum herunter.
failedFehlgeschlagen. Prüfen Sie failed_reason und billing_status.
FeldTypBeschreibung & Einschränkungen
idstring
Task-ID. Entspricht der taskId aus der Erstellungsantwort.
created_atnumber
Erstellungszeitpunkt des Tasks als Unix-Zeitstempel (Sekunden).
modelstring
Die für diesen Task verwendete öffentliche Modell-ID.
billing_statusstring
reserved, charged, refunded oder refund_failed.
creditsnumber
Für diesen Task reservierte Credits. Dieser Wert bleibt auch nach einer Rückerstattung erhalten; prüfen Sie billing_status, um das genaue Abrechnungsergebnis zu sehen.
failed_reasonstring | null
Fehlerursache bei fehlgeschlagenen Tasks; andernfalls null. Fehlgeschlagene Abfrage-Antworten enthalten keine data.
dataobject
Vorhanden bei erfolgreich abgeschlossenen oder laufenden Tasks. Enthält die Ausgabe und Verarbeitungsdetails.
data.resultsstring[]
Array mit Video-URLs. Leer bis zur Fertigstellung oder nach Ablauf des Videos.
data.video_expires_atstring | null
Ablaufdatum des Videos als ISO 8601-Zeitstempel, oder null, solange es noch nicht verfügbar ist. Speichern Sie das Ergebnis vor diesem Zeitpunkt.
data.last_frame_urlstring | null
URL des letzten Frames, sofern angefordert und verfügbar, andernfalls null.
data.processing_timenumber | null
Dauer der Aufgabenverarbeitung in Sekunden, falls verfügbar, andernfalls null.

Abgeschlossener Task: Abfrage-Antwort mit Video-Ergebnissen

Wenn die Abfrage status=completed zurückgibt, ist die Videogenerierung abgeschlossen. Rufen Sie die Video-URLs aus data.results ab und laden Sie diese vor data.video_expires_at herunter. billing_status=charged zeigt an, dass die reservierten Credits abgebucht wurden.

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

Fehlgeschlagener Task: Abfrage-Antwort mit Fehler- und Abrechnungsdetails

Wenn die Abfrage status=failed zurückgibt, wurde die Generierung erfolglos beendet. Unter failed_reason finden Sie die Ursache und unter billing_status das Erstattungsergebnis. In diesem Beispiel bedeutet refunded, dass die Credits zurückerstattet wurden. credits behält den ursprünglich reservierten Betrag bei, und die Antwort enthält keine 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

Setzen Sie callback_url in der Erstellungsanfrage, um einen JSON-POST zu erhalten, sobald der Task abgeschlossen ist oder fehlschlägt. Antworten Sie innerhalb von 15 Sekunden mit einem 2xx-Statuscode. Fehlgeschlagene Zustellungen werden wiederholt; verarbeiten Sie doppelte Zustellungen idempotent anhand der Task-ID.

Ihr Callback-Endpunkt muss POST-Anfragen mit einem JSON-Body (Content-Type: application/json) akzeptieren.

Task mit Callback erstellen

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

Task abgeschlossen: Payload für erfolgreichen Callback

Wenn die Generierung erfolgreich war, enthält der Callback status=completed. Verwenden Sie id zur Identifizierung des Tasks und data.results, um die Video-URLs abzurufen. Laden Sie die Ergebnisse vor data.video_expires_at herunter und speichern Sie diese.

created_at ist die Ereigniszeit, task_created_at die Erstellungszeit der Aufgabe, jeweils in Unix-Sekunden. Die Beispiele zeigen empfohlene Felder; Antworten können weitere Felder enthalten.

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

Task fehlgeschlagen: Payload für fehlgeschlagenen Callback

Wenn die Generierung fehlschlägt, enthält der Callback status=failed. Verwenden Sie id zur Identifizierung des Tasks, failed_reason für die Fehlerursache und credits_refunded für die Anzahl der erstatteten 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
}

Empfänger-Beispiel

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

Dieses Next.js-Beispiel liest den JSON-Callback-Body aus und verarbeitet erfolgreiche sowie fehlgeschlagene Tasks direkt. Fügen Sie für Ihre eigene Anwendung Datenpersistenz und Task-ID-Deduplizierung hinzu. Stellen Sie zeitaufwendige Prozesse in eine Warteschlange, bevor Sie den Callback bestätigen.

Medienanforderungen & Einschränkungen

  • Alle Medien- und Callback-URLs müssen öffentliche HTTPS-URLs sein. Vermeiden Sie localhost, private IPs und Dateien, die Cookies oder Logins erfordern. Referenz-URLs für Video/Audio müssen direkt lesbare Mediendateien ausgeben.
  • Die Dateigröße pro Video darf 100 MB nicht überschreiten.
  • Die Dateigröße pro Audiodatei darf maximal 15 MB betragen.
  • Insgesamt bis zu 15 Referenzdateien