# kwaivgi/kling-3.0/image-to-video > Kling 3.0 delivers top-tier image-to-video generation with smooth motion, cinematic visuals, and accurate prompt adherence, featuring native audio for ready-to-share clips. It offers best performance at affordable pricing. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `kwaivgi/kling-3.0/image-to-video` - **Category**: image-to-video - **Kind**: inference ## Pricing When the mode is set to Standard, the cost is $0.143 per second for generated video with audio off and $0.214 per second with audio on. When the mode is set to Pro, the cost is $0.190 per second for generated video with audio off and $0.286 per second with audio on. For more details, please check our pricing page. ## API Information This model can be used via our HTTP API or more conveniently via our client libraries. See the input and output schema below, as well as the usage examples. ### Input Schema The API accepts the following input parameters: - **`mode`** (`string`, _required_): Video generation mode - Default: `pro` - Options: "pro", "std" - **`duration`** (`string`, _required_): Total Video Length, unit: s (seconds) - Default: `5` - Range: `3` to `15` - **`multi_shot`** (`bool`, _required_): Whether to generate multi_shots - Default: `false` - Options: "true", "false" - **`shot_type`** (`string`, _optional_): Shot breakdown method: User-specified or Intelligent split - Default: `intelligence` - Options: "customize", "intelligence" - **`prompt`** (`string`, _optional_): Text prompts. Cannot be empty when multi_shot is false or shot_type is 'intelligence' - Examples: "An action shot of a black lab swimming..." - **`negative_prompt`** (`string`, _optional_): Negative text prompt - **`multi_prompt`** (`list`, _optional_): Enabled when shot_type is 'customize'. Number of shots: 1-6. The sum of shot durations must equal the task duration - **`duration`** (`int`, _required_): Shot duration. Must be greater than or equal to 1 and less than or equal to the total video duration - Range: `1` to `15` - **`prompt`** (`string`, _required_): Shot prompt - Examples: "An action shot of a black lab swimming..." - **`image`** (`string`, _required_): Reference Image - **`image_tail`** (`string`, _optional_): Reference Image - End frame control. Disabled when multi_shot is true - **`elements`** (`list`, _optional_): Elements for video generation. Maximum of 3 - **`frontal_image_url`** (`string`, _required_): The frontal image of the element (main view) - **`reference_image_urls`** (`list`, _optional_): Additional reference images from different angles, up to 3 images - **`generate_audio`** (`bool`, _optional_): Whether to generate original audio for the video - Default: `false` - Options: "true", "false" ### Output Schema The API returns a JSON response with a `job_id` for tracking the request status. **Create Job Response:** ```json { "code": 0, "data": { "amount": "0.02", "job_id": "" } } ``` **Query Job Result (when status is 2, meaning succeeded):** ```json { "code": 0, "data": { "status": 2, "result": { "images": [{ "url": "https://..." }] } } } ``` ## Use Example To use this model, make an HTTP POST request to the API endpoint, then poll for results using the returned `job_id`. ### Bash (cURL) ```bash # Step 1: Create a job response=$(curl --request POST \ --url https://api.shortapi.ai/api/v1/job/create \ --header "Authorization: Bearer $SHORTAPI_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "kwaivgi/kling-3.0/image-to-video", "args": { "mode": "pro", "duration": "5", "multi_shot": false, "image": "https://file.shortapi.ai/assets/examples/kwaivgi/kling-3.0/image-to-video-image.webp" }, "callback_url": "CALLBACK_URL" }') JOB_ID=$(echo "$response" | grep -o '"job_id": *"[^"]*"' | sed 's/"job_id": *//; s/"//g') # Step 2: Poll for results curl --request GET \ --url "https://api.shortapi.ai/api/v1/job/query?id=$JOB_ID" \ --header "Authorization: Bearer $SHORTAPI_KEY" ``` ### JavaScript (Fetch API) ```javascript // Step 1: Create a job const response = await fetch(`https://api.shortapi.ai/api/v1/job/create`, { method: "POST", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "model": "kwaivgi/kling-3.0/image-to-video", "args": { "mode": "pro", "duration": "5", "multi_shot": false, "image": "https://file.shortapi.ai/assets/examples/kwaivgi/kling-3.0/image-to-video-image.webp" }, "callback_url": "CALLBACK_URL" }) }); const data = await response.json(); const JOB_ID = data.job_id; // Step 2: Poll for results const result = await fetch(`https://api.shortapi.ai/api/v1/job/query?id=${JOB_ID}`, { method: "GET", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}` } }); const resultData = await result.json(); console.log(resultData); ``` ### Python (Requests) ```python import requests # Step 1: Create a job url = "https://api.shortapi.ai/api/v1/job/create" payload = { "model": "kwaivgi/kling-3.0/image-to-video", "args": { "mode": "pro", "duration": "5", "multi_shot": False, "image": "https://file.shortapi.ai/assets/examples/kwaivgi/kling-3.0/image-to-video-image.webp" }, "callback_url": "CALLBACK_URL" } headers = { "Authorization": f"Bearer {SHORTAPI_KEY}", "Content-Type": "application/json" } response = requests.post(url, headers=headers, json=payload) data = response.json() JOB_ID = data.get("job_id") # Step 2: Poll for results result_url = f"https://api.shortapi.ai/api/v1/job/query?id={JOB_ID}" result = requests.get(result_url, headers={"Authorization": f"Bearer {SHORTAPI_KEY}"}) print(result.json()) ```