Skip to content
Immersive AI

Kling 3.0 — turn a campaign still into a product film

Video Kling 3.0 · 5 s by Henri Huotari · Oct 28, 2026

A five-second image-to-video study of the pink headphone concept. The original still, exact motion prompt and returned video are included. The original file is 1928 × 1072 at 24 fps.

This file couldn't be loaded. The link may have expired.
This file couldn't be loaded. The link may have expired.
Input images
This file couldn't be loaded. The link may have expired.
Output result.mp4

Run it yourself

Set IMMERSIVE_API_KEY to an API key from your account. Create a free account to get one.

curl -X POST 'https://ai.im.inc/api/v1/video/generate' \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "image": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/inputs/7f97a2c6-2054-4a38-9ac2-f78bd5e3ca0d/input_image.png",
  "model": "kling-3.0",
  "prompt": "A five-second premium headphone product commercial, one uninterrupted photoreal shot. Preserve exactly the pink Immersive headphones, small white wave mark, circular pale stone plinth, charcoal studio and sculpted material details from the starting image. The camera slowly trucks to the right through a shallow 15-degree arc with a subtle push-in, creating real parallax around the ear cups and plinth. A controlled soft highlight moves across the pink metal yoke while the diagonal white light on the back wall gradually shifts a little. The headphones remain firmly resting on the plinth, absolutely stable geometry and logo. Calm, confident luxury product cinematography, physically believable materials, smooth motion from first frame to last, beautiful contrast and restrained pink bounce. Keep the whole product in frame. No cuts, no text overlays, no morphing, no deformation, no duplicated parts, no hands, no added objects.",
  "duration": 5,
  "resolution": "1080p",
  "aspect_ratio": "16:9",
  "generate_audio": false
}'

# Set JOB_ID to the response's "id", then poll every few seconds until the job has finished:
curl "https://ai.im.inc/api/v1/video/$JOB_ID" \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY"

# The finished response has the result at url.
const headers = { Authorization: `Bearer ${process.env.IMMERSIVE_API_KEY}` };

const response = await fetch("https://ai.im.inc/api/v1/video/generate", {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    "image": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/inputs/7f97a2c6-2054-4a38-9ac2-f78bd5e3ca0d/input_image.png",
    "model": "kling-3.0",
    "prompt": "A five-second premium headphone product commercial, one uninterrupted photoreal shot. Preserve exactly the pink Immersive headphones, small white wave mark, circular pale stone plinth, charcoal studio and sculpted material details from the starting image. The camera slowly trucks to the right through a shallow 15-degree arc with a subtle push-in, creating real parallax around the ear cups and plinth. A controlled soft highlight moves across the pink metal yoke while the diagonal white light on the back wall gradually shifts a little. The headphones remain firmly resting on the plinth, absolutely stable geometry and logo. Calm, confident luxury product cinematography, physically believable materials, smooth motion from first frame to last, beautiful contrast and restrained pink bounce. Keep the whole product in frame. No cuts, no text overlays, no morphing, no deformation, no duplicated parts, no hands, no added objects.",
    "duration": 5,
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "generate_audio": false
  }),
});
const job = await response.json();

// Poll every few seconds while the job is still running.
const running = ["pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"];
let result;
do {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  result = await (await fetch(`https://ai.im.inc/api/v1/video/${job.id}`, { headers })).json();
} while (running.includes(String(result.status).toLowerCase()));

console.log(result.url);
import os
import time

import requests

headers = {"Authorization": f"Bearer {os.environ['IMMERSIVE_API_KEY']}"}

job = requests.post(
    "https://ai.im.inc/api/v1/video/generate",
    headers=headers,
    json={
        "image": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/inputs/7f97a2c6-2054-4a38-9ac2-f78bd5e3ca0d/input_image.png",
        "model": "kling-3.0",
        "prompt": "A five-second premium headphone product commercial, one uninterrupted photoreal shot. Preserve exactly the pink Immersive headphones, small white wave mark, circular pale stone plinth, charcoal studio and sculpted material details from the starting image. The camera slowly trucks to the right through a shallow 15-degree arc with a subtle push-in, creating real parallax around the ear cups and plinth. A controlled soft highlight moves across the pink metal yoke while the diagonal white light on the back wall gradually shifts a little. The headphones remain firmly resting on the plinth, absolutely stable geometry and logo. Calm, confident luxury product cinematography, physically believable materials, smooth motion from first frame to last, beautiful contrast and restrained pink bounce. Keep the whole product in frame. No cuts, no text overlays, no morphing, no deformation, no duplicated parts, no hands, no added objects.",
        "duration": 5,
        "resolution": "1080p",
        "aspect_ratio": "16:9",
        "generate_audio": False,
    },
    timeout=300,
).json()

# Poll every few seconds while the job is still running.
running = {"pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"}
while True:
    time.sleep(5)
    result = requests.get(f"https://ai.im.inc/api/v1/video/{job['id']}", headers=headers, timeout=60).json()
    if str(result.get("status", "")).lower() not in running:
        break

print(result["url"])
{
    "id": "e8e15827602621ed3db01fe250583f0e",
    "url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/7f97a2c6-2054-4a38-9ac2-f78bd5e3ca0d/result.mp4",
    "status": "succeeded",
    "duration": "5.00",
    "model_name": "kling-3.0"
}

Your browser blocked the clipboard. Select the text and copy it by hand.

How the job runs

  1. POST returns the job's id and status right away.
  2. Poll GET /api/v1/video/{id} every few seconds while the job is running.
  3. When status is succeeded, download url. Failed jobs are refunded automatically.
Endpoint
POST /api/v1/video/generate
Model
kling-3.0
Output
Video · MP4