> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling V4 Videogenerierung

> Text-zu-Video, Bild-zu-Video, referenzbasierte Generierung, Videobearbeitung und Verlängerung. 3–30 Sekunden in 720p / 1080p, immer mit Stereoton.

> [!NOTE]
>
> Dieser Endpunkt arbeitet asynchron. Verwenden Sie nach dem Absenden die zurückgegebene `task_id` mit `GET /v1/videos/generations/{task_id}`, um Status und Ergebnis abzufragen.

```bash cURL theme={null}
curl --request POST \
  --url https://api.apimart.ai/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "kling-v4",
    "prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  }'
```

```python Python theme={null}
import requests

response = requests.post(
    "https://api.apimart.ai/v1/videos/generations",
    headers={"Authorization": "Bearer <token>"},
    json={
        "model": "kling-v4",
        "prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "9:16"
    }
)
response.raise_for_status()
print(response.json())
```

```javascript JavaScript theme={null}
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
  method: "POST",
  headers: {
    Authorization: "Bearer <token>",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "kling-v4",
    prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
    duration: 5,
    resolution: "720p",
    aspect_ratio: "9:16"
  })
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

## Modusauswahl

Alle fünf Modi verwenden denselben Modellnamen `kling-v4`. Der Modus wird anhand der übergebenen Medien und von `omni_reference_task_type` ausgewählt.

| Modus | Eingabe |
| - | - |
| Text-zu-Video | Keine Bilder, Videos oder Audiodateien übergeben |
| Bild-zu-Video | Ein Startbild, optional ein Endbild und bis zu 8 Zwischenbilder |
| Referenzbasierte Generierung | `video_urls`, `audio_urls` oder `reference_image` in `image_with_roles` übergeben; alternativ explizit `omni_reference_task_type: "reference"` setzen |
| Videobearbeitung | `omni_reference_task_type: "edit"` setzen und ein Eingabevideo übergeben |
| Videoverlängerung | `omni_reference_task_type: "extend"` setzen und ein Eingabevideo übergeben |

`omni_reference_task_type` ist standardmäßig `auto`, gleichbedeutend mit dem Weglassen des Feldes. Bei explizitem `reference` werden Bilder in `image_urls` als Referenzbilder behandelt.

> [!WARNING]
>
> Wird nur `video_url` ohne `edit` oder `extend` übergeben, liefert die Anfrage HTTP 400. Verwenden Sie `video_urls`, um ein Video als Referenz zu übergeben.

## Anfrage-Header

**Authorization** `string` *required*

Bearer-Authentifizierung: `Bearer <token>`, wobei `<token>` Ihr APIMart API Key ist.

## Anfrageparameter

**model** `string` *required*

Muss `kling-v4` sein.

**prompt** `string`

Beschreibung des zu generierenden oder zu bearbeitenden Inhalts. Für Bild-zu-Video optional, für alle anderen Modi erforderlich.

Bei referenzbasierter Generierung verweisen `@Image1`, `@Video1` und `@Audio1` auf die Medien, jeweils ab 1 in der Reihenfolge des entsprechenden Arrays. Bei der Videobearbeitung ist das Eingabevideo `@Video1`; Referenzbilder sind `@Image1`, `@Image2` usw.

**duration** `integer`

Generierte Dauer in Sekunden: `3`–`30`, Standardwert `5`.

* Videobearbeitung: Ohne Angabe folgt die Ausgabedauer dem Eingabevideo.
* Videoverlängerung: Dauer des neuen Abschnitts. Zurückgegeben wird das vollständige Video aus Original und neuem Abschnitt.

**resolution** `string` (default: 720p)

Ausgabeauflösung: `720p` oder `1080p`. Verwenden Sie dieses Feld zur Auswahl der Auflösung; V4 unterstützt `mode` nicht.

**aspect\_ratio** `string`

Unterstützt `16:9`, `9:16`, `1:1` und `21:9`; referenzbasierte Generierung unterstützt zusätzlich `auto`.

| Modus | Standardverhalten |
| - | - |
| Text-zu-Video | `16:9` |
| Bild-zu-Video | Folgt dem Startbild |
| Referenzbasierte Generierung | `auto` |
| Videobearbeitung | Folgt dem Eingabevideo |
| Videoverlängerung | Dieses Feld wird nicht unterstützt; das ursprüngliche Seitenverhältnis bleibt erhalten |

**image\_urls** `string[]`

Liste von Bild-URLs; die Bedeutung hängt vom Modus ab:

* Bild-zu-Video: Das erste Bild ist das Startbild, das zweite das Endbild; maximal 2 Bilder.
* Referenzbasierte Generierung und Videobearbeitung: bis zu 10 Referenzbilder. Bei Generierung nur mit Referenzbildern explizit `omni_reference_task_type: "reference"` setzen.

Medien-URLs müssen öffentlich erreichbar sein.

**image\_with\_roles** `object[]`

Bilderliste mit Rollen. Jeder Eintrag enthält `url` und `role`.

| `role` | Verwendung |
| - | - |
| `first_frame` | Startbild für Bild-zu-Video; genau 1 erforderlich |
| `last_frame` | Endbild für Bild-zu-Video oder Ziel-Endbild bei Verlängerung |
| `keyframe` | Zwischenbild für Bild-zu-Video; auch `middle_frame` wird akzeptiert. Verwendung in Array-Reihenfolge, maximal 8 Bilder |
| `reference_image` | Referenzbild für referenzbasierte Generierung |

Bei Bild-zu-Video dürfen Startbild, Endbild und Zwischenbilder zusammen maximal 10 Bilder ergeben.

**first\_frame\_image** `string`

URL des Startbilds für Bild-zu-Video. Auch als `first_frame` in `image_with_roles` oder als erstes Bild in `image_urls` übergebbar.

**last\_frame\_image** `string`

URL des Endbilds für Bild-zu-Video oder des Ziel-Endbilds bei Verlängerung.

**video\_urls** `string[]`

Referenzvideos für referenzbasierte Generierung: maximal 5 Clips; insgesamt werden höchstens 30 Sekunden verwendet.

Für Videobearbeitung oder Verlängerung kann alternativ genau 1 Video-URL anstelle von `video_url` übergeben werden, mit `omni_reference_task_type: "edit"` oder `"extend"`.

**video\_url** `string`

URL des Eingabevideos für Bearbeitung oder Verlängerung. Erfordert `omni_reference_task_type: "edit"` oder `"extend"`.

Für die Bearbeitung muss das Eingabevideo mindestens 3 Sekunden lang sein; kürzere Videos führen zu HTTP 400. Bei mehr als 30 Sekunden werden die ersten 30 Sekunden verwendet.

**audio\_urls** `string[]`

Referenzaudio für referenzbasierte Generierung: maximal 3 Clips mit jeweils 5–30 Sekunden.

Referenzbilder, Referenzvideos und Referenzaudios dürfen bei referenzbasierter Generierung zusammen maximal 15 Medien ergeben.

**omni\_reference\_task\_type** `string` (default: auto)

Unterstützt `auto`, `reference`, `edit` und `extend`.

* `auto`: Wählt anhand der Medien Text-zu-Video, Bild-zu-Video oder referenzbasierte Generierung; entspricht dem Weglassen des Feldes.
* `reference`: Referenzbasierte Generierung; Bilder in `image_urls` werden als Referenzen behandelt.
* `edit`: Videobearbeitung; erfordert ein Eingabevideo.
* `extend`: Videoverlängerung; erfordert ein Eingabevideo.

**audio\_setting** `string`

Unterstützt `origin` (Originalton des Eingabevideos beibehalten) und `auto` (neuen Ton generieren). Nur für Videobearbeitung oder referenzbasierte Generierung mit Referenzvideos.

* Videobearbeitung: Behält standardmäßig den Originalton bei; `auto` generiert neuen Ton.
* Referenzbasierte Generierung mit Referenzvideos: Generiert standardmäßig neuen Ton; `origin` behält den Ton des Referenzvideos bei.
* Videoverlängerung: Dieses Feld wird nicht unterstützt. Der Originalton bleibt erhalten; für den neuen Abschnitt wird automatisch Ton generiert.

V4 gibt immer Videos mit Stereoton aus; Ton und Bild werden gemeinsam generiert.

## Anfragebeispiele

Die folgenden Medien-URLs sind Platzhalter. Ersetzen Sie diese durch echte, öffentlich erreichbare URLs.

### Bild-zu-Video: Start- und Endbild

```json theme={null}
{
  "model": "kling-v4",
  "prompt": "The camera slowly moves closer",
  "image_urls": ["https://example.com/start.png", "https://example.com/end.png"]
}
```

Das erste Bild ist das Startbild, das zweite das Endbild. `prompt` ist bei Bild-zu-Video optional.

### Bild-zu-Video: Start-, Zwischen- und Endbilder

```json theme={null}
{
  "model": "kling-v4",
  "prompt": "A girl walks from the window to the door, then looks back and smiles",
  "image_with_roles": [
    {"url": "https://example.com/1.png", "role": "first_frame"},
    {"url": "https://example.com/2.png", "role": "keyframe"},
    {"url": "https://example.com/3.png", "role": "keyframe"},
    {"url": "https://example.com/4.png", "role": "last_frame"}
  ],
  "duration": 10
}
```

Zwischenbilder werden in Array-Reihenfolge verwendet. Genau 1 Startbild ist erforderlich; Startbild, Endbild und Zwischenbilder dürfen zusammen maximal 10 Bilder ergeben.

### Referenzbasierte Generierung

```json theme={null}
{
  "model": "kling-v4",
  "prompt": "The girl in @Image1 runs along the beach with the camera movement from @Video1 and background music from @Audio1",
  "image_with_roles": [
    {"url": "https://example.com/girl.png", "role": "reference_image"}
  ],
  "video_urls": ["https://example.com/camera.mp4"],
  "audio_urls": ["https://example.com/bgm.mp3"],
  "aspect_ratio": "auto",
  "duration": 5
}
```

Maximal 10 Referenzbilder, 5 Referenzvideos und 3 Referenzaudioclips, insgesamt höchstens 15 Medien. Referenzvideos werden mit insgesamt maximal 30 Sekunden verwendet; jeder Audioclip muss 5–30 Sekunden lang sein.

### Videobearbeitung

```json theme={null}
{
  "model": "kling-v4",
  "prompt": "Change the scene to a snowy winter night",
  "omni_reference_task_type": "edit",
  "video_url": "https://example.com/in.mp4",
  "image_urls": ["https://example.com/style.png"]
}
```

Das Eingabevideo muss mindestens 3 Sekunden lang sein; bei mehr als 30 Sekunden werden die ersten 30 Sekunden verwendet. Ohne `duration` und `aspect_ratio` folgen Ausgabedauer und Seitenverhältnis dem Eingabevideo. Der Originalton bleibt standardmäßig erhalten; `audio_setting: "auto"` generiert neuen Ton.

### Videoverlängerung

```json theme={null}
{
  "model": "kling-v4",
  "prompt": "The camera continues moving forward as the sky grows darker",
  "omni_reference_task_type": "extend",
  "video_url": "https://example.com/in.mp4",
  "duration": 5
}
```

Die Verlängerung beginnt beim letzten Bild des Eingabevideos. Das Ergebnis enthält das Original und den neuen Abschnitt; abgerechnet wird nur die Dauer des neuen Abschnitts.

Ein Ziel-Endbild kann mit `last_frame_image` oder `last_frame` in `image_with_roles` übergeben werden. Verlängerung unterstützt weder `aspect_ratio` noch `audio_setting`.

## Aufgabe abfragen

Ersetzen Sie die Aufgaben-ID in der folgenden Anfrage durch die beim Absenden zurückgegebene ID:

```bash theme={null}
curl --request GET \
  --url 'https://api.apimart.ai/v1/videos/generations/<task_id>' \
  --header 'Authorization: Bearer <token>'
```

Ungefähre Generierungszeit: 3 Minuten für ein 3-sekündiges Video in 720p und 3,5 Minuten für ein 15-sekündiges Video.

## Abrechnung

Abrechnung pro Sekunde. Preise finden Sie unter [Modellpreise](https://apimart.ai/pricing). `720p` und `1080p` haben separate Preise.

Für Videobearbeitung und referenzbasierte Generierung mit Referenzvideos gilt der Tarif für Videoeingaben. Für die übrigen Modi gilt der reguläre Generierungstarif.

| Modus | Abgerechnete Sekunden |
| - | - |
| Text-zu-Video, Bild-zu-Video, referenzbasierte Generierung nur mit Bildern oder Audio | Ausgabesekunden |
| Videoverlängerung | Sekunden des neuen Abschnitts |
| Videobearbeitung, referenzbasierte Generierung mit Referenzvideos | Ausgabesekunden + max(Ausgabesekunden, Eingabevideosekunden) |

Die Eingabevideosekunden ergeben sich aus der Summe aller Clipdauern, auf ganze Sekunden aufgerundet und auf 30 Sekunden begrenzt. Beispiel: Die Bearbeitung eines 3,04-sekündigen Videos ohne `duration` ergibt 4 Sekunden Ausgabe; abgerechnet werden 4 + 4 = 8 Sekunden.

Bei Bearbeitung und referenzbasierter Generierung mit Referenzvideos wird die Eingabevideodauer beim Absenden ermittelt. Schlägt dies fehl, wird HTTP 400 ohne Berechnung zurückgegeben. Fehlgeschlagene Generierungen werden vollständig erstattet.

## Nicht unterstützte Parameter

Die folgenden Parameter oder Werte führen zu HTTP 400:

* `mode`: V4 hat keine Stufen `std`, `pro` oder `4k`. Verwenden Sie `resolution`.
* `negative_prompt`, `watermark: true`, `audio: false`.
* `multi_shot`, `multi_prompt`, `element_list`, `video_list`.
* `camera_control`, `voice_list`.

## Häufige Fehler

| Fehler | Maßnahme |
| - | - |
| `video_url needs omni_reference_task_type edit ... or extend` | Bei `video_url` explizit `edit` oder `extend` angeben; für Referenzvideos `video_urls` verwenden |
| `image-to-video requires exactly 1 first frame` | Genau 1 Startbild übergeben; nur End- oder Zwischenbilder reichen nicht aus |
| `first frame, last frame and keyframes together are at most 10 images` | Start-, End- und Zwischenbilder auf insgesamt maximal 10 reduzieren |
| `reference images, videos and audios together are at most 15 files` | Referenzmedien auf insgesamt maximal 15 reduzieren |
| `video edit requires an input video of at least 3 seconds` | Ein Eingabevideo mit mindestens 3 Sekunden verwenden |
| `Failed to probe the input video duration` | Prüfen, ob die URL erreichbar ist und auf eine gültige Videodatei verweist |
| `has no std/pro/4k mode` | `mode` entfernen und `resolution` verwenden |
| `Could not download the input from ... (HTTP 403)` | Eine öffentlich erreichbare Medien-URL ohne Hotlink-Schutz verwenden |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.