# kwaivgi/kling-o1/image-to-video > Kling Video O1 transforms static images into cinematic videos with natural physics and seamless dynamics while maintaining high subject consistency; it synthesizes content by animating the transition between a start and an end frame, strictly adhering to the style and scene guidance defined by the instructions. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `kwaivgi/kling-o1/image-to-video` - **Category**: image-to-video - **Kind**: inference ## Pricing The billing rate for Standard mode video is $0.075 per second, while Pro mode is $0.1 per request. 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: "std", "pro" - **`action`** (`string`, _required_): Control task actions - Default: `frame` - Options: "frame", "refer" - **`prompt`** (`string`, _required_): Text prompts, include positive and negative descriptions - Examples: "An action shot of a black lab swimming..." - **`duration`** (`string`, _optional_): Video Length, unit: s (seconds). Action is 'frame' and images just have one frame, duration should be 5 or 10 - Default: `5` - Range: `3` to `10` - **`images`** (`list`, _required_): Images for video generation. For 'frame', only the first and last frames are applied (only the first two values take effect). For 'refer', multiple reference images are supported - **`elements`** (`list`, _optional_): Elements for video generation. The number of images in images + elements must not exceed 7 - **`frontal_image_url`** (`string`, _required_): The frontal image of the element (main view) - **`reference_image_urls`** (`list`, _optional_): Additional reference images from different angles - **`aspect_ratio`** (`string`, _optional_): The aspect ratio of the generated video frame (width:height). Only valid for 'refer' action - Default: `16:9` - Options: "16:9", "9:16", "1:1" ### 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-o1/image-to-video", "args": { "mode": "pro", "action": "refer", "prompt": "[@element1] wears theoutft from [@image1] and the hat from [@image2],strolling slowly with hands in pockets on thestreets of Kyoto.", "images": ["https://file.shortapi.ai/assets/examples/kwaivgi/kling-o1/image-to-video-image_1.webp","https://file.shortapi.ai/assets/examples/kwaivgi/kling-o1/image-to-video-image_2.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-o1/image-to-video", "args": { "mode": "pro", "action": "refer", "prompt": "[@element1] wears theoutft from [@image1] and the hat from [@image2],strolling slowly with hands in pockets on thestreets of Kyoto.", "images": ["https://file.shortapi.ai/assets/examples/kwaivgi/kling-o1/image-to-video-image_1.webp","https://file.shortapi.ai/assets/examples/kwaivgi/kling-o1/image-to-video-image_2.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-o1/image-to-video", "args": { "mode": "pro", "action": "refer", "prompt": "[@element1] wears theoutft from [@image1] and the hat from [@image2],strolling slowly with hands in pockets on thestreets of Kyoto.", "images": ["https://file.shortapi.ai/assets/examples/kwaivgi/kling-o1/image-to-video-image_1.webp","https://file.shortapi.ai/assets/examples/kwaivgi/kling-o1/image-to-video-image_2.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()) ```