---
title: "Kling 3.0 Omni API: Multimodal Video Generation"
description: "Kling 3.0 Omni on Genflo combines a text prompt with up to 7 reference images and 7 reference videos, first/last frames and native audio in one request."
---

> Documentation Index
> Fetch the complete documentation index at: https://www.genflo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling 3.0 Omni API: Multimodal Video Generation

**67 credits / second**

## Complete request

This copy-ready shape includes every input field published for this model.

```bash
curl -X POST 'https://api.genflo.io/api/saas' \
  -H 'Content-Type: application/json' \
  -H 'x-apikey: sk-your-api-key' \
  -d '{
    "model": "kling-3.0-omni",
    "input": {
      "prompt": "The camera slowly moves forward while the subject turns toward the light",
      "negative_prompt": "blur, distortion, artifacts",
      "enhance_prompt": true,
      "images": [
        "https://cdn.example.com/reference-image.jpg"
      ],
      "videos": [
        "https://cdn.example.com/reference-video.mp4"
      ],
      "first_frame": "https://cdn.example.com/first-frame.jpg",
      "last_frame": "https://cdn.example.com/last-frame.jpg",
      "duration": 3,
      "resolution": "720P",
      "aspect_ratio": "16:9",
      "generate_audio": true,
      "seed": 123456789
    }
  }'
```

Optional fields may be removed. The complete example demonstrates the JSON wire format; the upstream model may reject incompatible mode combinations, such as mixing frame animation with unrelated reference media.

## How media fields are transmitted

Send media as public URL strings inside the JSON body—not as multipart uploads. A plural field such as `videos` is an array, for example `["https://cdn.example.com/reference.mp4"]`.

- **images** → Image / Reference
- **videos** → Video / Reference
- **audios** → Audio / Reference
- **first_frame** → Image / FirstFrame

## Input parameters

12 fields are published for this model. Omitted optional fields are not sent upstream and have no gateway-defined default.

| Field | Required | JSON type | Description and constraints | Example |
| --- | --- | --- | --- | --- |
| `prompt` | Optional | `string` | The main instruction describing the output to generate. | `"The camera slowly moves forward while the subject turns toward the light"` |
| `negative_prompt` | Optional | `string` | Content and visual qualities the model should avoid. | `"blur, distortion, artifacts"` |
| `enhance_prompt` | Optional | `boolean` | Ask the upstream model to expand and optimize the prompt before generation. | `true` |
| `images` | Optional | `string[]` | Publicly reachable reference or source image URLs. Items: 0 to 7 · Formats: jpg, jpeg, png, webp | `["https://cdn.example.com/reference-image.jpg"]` |
| `videos` | Optional | `string[]` | Publicly reachable reference video URLs. These are inputs, not previously generated task IDs. Items: 0 to 7 · Formats: mp4, mov | `["https://cdn.example.com/reference-video.mp4"]` |
| `first_frame` | Optional | `string` | A public image URL used as the first frame of the generated video. Formats: jpg, jpeg, png, webp | `"https://cdn.example.com/first-frame.jpg"` |
| `last_frame` | Conditional | `string` | A public image URL used as the final frame. Use it together with first_frame. Formats: jpg, jpeg, png, webp · Maximum size: 5 MB | `"https://cdn.example.com/last-frame.jpg"` |
| `duration` | Required | `integer` | Requested video duration in seconds. It is also used to calculate the task charge. Range: 3 to 15 | `3` |
| `resolution` | Optional | `string enum` | Requested output resolution. Values are model-specific and case-sensitive at this API boundary. Allowed: 720P, 1080P, 2K, 4K | `"720P"` |
| `aspect_ratio` | Optional | `string enum` | Requested output width-to-height ratio. Allowed: 16:9, 9:16, 1:1 | `"16:9"` |
| `generate_audio` | Optional | `boolean` | Whether the upstream model should generate an audio track with the video. | `true` |
| `seed` | Optional | `integer` | Integer random seed. Reusing a seed can improve reproducibility, but identical output is not guaranteed. | `123456789` |

> Video requests require `input.duration`. The final charge is the per-second rate multiplied by duration.

Source: https://www.genflo.io/docs/models/kling-3-0-omni/index.mdx
