ApiframeApiframe Docs
Video GenerationKling

Kling 3.0 Omni

Kling 3.0 Omni — unified text/image/reference-to-video model with video editing, native audio, and multi-shot timelines.

POST /v2/videos/generatemodel: "kling-3.0-omni"

Kling 3.0 Omni is the unified Kling model. On top of everything Kling 3.0 offers (flexible 3–15s duration, standard/pro/4K modes, audio, end-frame control, multi-shot timelines), it adds reference images for subject/style guidance and a reference video for style transfer or full video editing.

See Video Generation overview for common request fields, response format, and error codes.

Model-specific parameters

ParameterTypeDefaultDescription
klingParams.durationinteger5Video duration in seconds (3–15)
klingParams.aspect_ratiostringAspect ratio: "16:9", "9:16", or "1:1"
klingParams.modestring"pro"Generation mode: "standard" (720p), "pro" (1080p), or "4k" (2160p)
klingParams.start_imagestringURL of an image to use as the first frame
klingParams.end_imagestringURL of an image to use as the last frame
klingParams.negative_promptstringThings to avoid in the video (max 2,500 chars)
klingParams.generate_audiobooleantrueWhether to generate native audio. Cannot be combined with reference_video.
klingParams.reference_imagesstring[]Up to 7 reference-image URLs (max 4 when a reference_video is set). Refer to them in the prompt as <<<image_1>>>, <<<image_2>>>, …
klingParams.reference_videostringURL of a 3–10s clip used for style transfer or video editing.
klingParams.video_reference_typestringRequired when reference_video is set: "feature" (style/camera reference) or "base" (edit/restyle this video).
klingParams.keep_original_soundbooleanfalseKeep the reference video's original audio track.
klingParams.multi_promptarrayJSON array of { "prompt": string, "duration": integer } shots (max 6) for timeline control.

generate_audio and reference_video are mutually exclusive — a request that sets both is rejected. When a reference_video is supplied, video_reference_type is required and reference_images is capped at 4.

Reference images

Attach up to 7 reference images and address them positionally in your prompt with the <<<image_N>>> token (1-indexed). For example:

{
  "prompt": "<<<image_1>>> walks through <<<image_2>>> at golden hour",
  "reference_images": [
    "https://example.com/character.png",
    "https://example.com/location.png"
  ]
}

Credit cost

Pricing is per second of output. The total credit cost is credits-per-second × duration. The variant key combines mode and generate_audio; duration is applied as a multiplier.

VariantCredits / sec
standard29
standard-audio43
pro39
pro-audio58
4k72
4k-audio72

Examples: a 5-second pro clip with audio costs 58 × 5 = 290 credits; a 10-second standard clip without audio costs 29 × 10 = 290 credits; a 15-second pro clip with audio costs 58 × 15 = 870 credits.

4k renders at 3840×2160 and takes noticeably longer than lower modes. Audio does not change the per-second rate at 4k (both 4k and 4k-audio bill 72 credits/sec).

Example result

Once the job is COMPLETED, the result object on GET /v2/jobs/:id looks like:

{
  "videoUrl": "https://cdn2.apiframe.ai/videos/b2c3d4e5-f6a7-8901-bcde-f23456789012.mp4"
}

See Result format for field details.

Code examples

curl -X POST https://api.apiframe.ai/v2/videos/generate \
  -H "X-API-Key: afk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "<<<image_1>>> explores a neon-lit market at night",
    "model": "kling-3.0-omni",
    "klingParams": {
      "duration": 10,
      "mode": "pro",
      "aspect_ratio": "16:9",
      "generate_audio": true,
      "reference_images": ["https://example.com/character.png"]
    }
  }'
import requests

response = requests.post(
    "https://api.apiframe.ai/v2/videos/generate",
    headers={
        "X-API-Key": "afk_your_api_key_here",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "<<<image_1>>> explores a neon-lit market at night",
        "model": "kling-3.0-omni",
        "klingParams": {
            "duration": 10,
            "mode": "pro",
            "aspect_ratio": "16:9",
            "generate_audio": True,
            "reference_images": ["https://example.com/character.png"],
        },
    },
)
print(response.json())
const response = await fetch("https://api.apiframe.ai/v2/videos/generate", {
  method: "POST",
  headers: {
    "X-API-Key": "afk_your_api_key_here",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    prompt: "<<<image_1>>> explores a neon-lit market at night",
    model: "kling-3.0-omni",
    klingParams: {
      duration: 10,
      mode: "pro",
      aspect_ratio: "16:9",
      generate_audio: true,
      reference_images: ["https://example.com/character.png"],
    },
  }),
});
console.log(await response.json());

Try it

POST/v2/videos/generateTry it

On this page