
Kling Video O3 Pro Reference-to-Video API by Kuaishou
Kling Omni Video O3 Reference-to-Video generates creative videos using character, prop, or scene references. Professional quality with up to 7 reference images and optional video input.
INPUT
OUTPUT
IdleYour request will cost $0.095 per run. For $10 you can run this model approximately 105 times.
Here's what you can do next:
Code Example
import requests
import time
# Step 1: Start video generation
generate_url = "https://api.atlascloud.ai/api/v1/model/generateVideo"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer $ATLASCLOUD_API_KEY"
}
data = {
"model": "kwaivgi/kling-video-o3-pro/reference-to-video",
"prompt": "A beautiful sunset over the ocean with gentle waves",
"width": 512,
"height": 512,
"duration": 3,
"fps": 24,
}
generate_response = requests.post(generate_url, headers=headers, json=data)
generate_result = generate_response.json()
prediction_id = generate_result["data"]["id"]
# Step 2: Poll for result
poll_url = f"https://api.atlascloud.ai/api/v1/model/prediction/{prediction_id}"
def check_status():
while True:
response = requests.get(poll_url, headers={"Authorization": "Bearer $ATLASCLOUD_API_KEY"})
result = response.json()
if result["data"]["status"] in ["completed", "succeeded"]:
print("Generated video:", result["data"]["outputs"][0])
return result["data"]["outputs"][0]
elif result["data"]["status"] == "failed":
raise Exception(result["data"]["error"] or "Generation failed")
else:
# Still processing, wait 2 seconds
time.sleep(2)
video_url = check_status()Install
Install the required package for your language.
pip install requestsAuthentication
All API requests require authentication via an API key. You can get your API key from the Atlas Cloud dashboard.
export ATLASCLOUD_API_KEY="your-api-key-here"HTTP Headers
import os
API_KEY = os.environ.get("ATLASCLOUD_API_KEY")
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"
}Never expose your API key in client-side code or public repositories. Use environment variables or a backend proxy instead.
Submit a request
import requests
url = "https://api.atlascloud.ai/api/v1/model/generateVideo"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer $ATLASCLOUD_API_KEY"
}
data = {
"model": "your-model",
"prompt": "A beautiful landscape"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())Submit a Request
Submit an asynchronous generation request. The API returns a prediction ID that you can use to check the status and retrieve the result.
/api/v1/model/generateVideoRequest Body
import requests
url = "https://api.atlascloud.ai/api/v1/model/generateVideo"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer $ATLASCLOUD_API_KEY"
}
data = {
"model": "kwaivgi/kling-video-o3-pro/reference-to-video",
"input": {
"prompt": "A beautiful sunset over the ocean with gentle waves"
}
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(f"Prediction ID: {result['id']}")
print(f"Status: {result['status']}")Response
{
"id": "pred_abc123",
"status": "processing",
"model": "model-name",
"created_at": "2025-01-01T00:00:00Z"
}Check Status
Poll the prediction endpoint to check the current status of your request.
/api/v1/model/prediction/{prediction_id}Polling Example
import requests
import time
prediction_id = "pred_abc123"
url = f"https://api.atlascloud.ai/api/v1/model/prediction/{prediction_id}"
headers = { "Authorization": "Bearer $ATLASCLOUD_API_KEY" }
while True:
response = requests.get(url, headers=headers)
result = response.json()
status = result["data"]["status"]
print(f"Status: {status}")
if status in ["completed", "succeeded"]:
output_url = result["data"]["outputs"][0]
print(f"Output URL: {output_url}")
break
elif status == "failed":
print(f"Error: {result['data'].get('error', 'Unknown')}")
break
time.sleep(3)Status Values
processingThe request is still being processed.completedGeneration is complete. Outputs are available.succeededGeneration succeeded. Outputs are available.failedGeneration failed. Check the error field.Completed Response
{
"data": {
"id": "pred_abc123",
"status": "completed",
"outputs": [
"https://storage.atlascloud.ai/outputs/result.mp4"
],
"metrics": {
"predict_time": 45.2
},
"created_at": "2025-01-01T00:00:00Z",
"completed_at": "2025-01-01T00:00:10Z"
}
}Upload Files
Upload files to Atlas Cloud storage and get a URL you can use in your API requests. Use multipart/form-data to upload.
/api/v1/model/uploadMediaUpload Example
import requests
url = "https://api.atlascloud.ai/api/v1/model/uploadMedia"
headers = { "Authorization": "Bearer $ATLASCLOUD_API_KEY" }
with open("image.png", "rb") as f:
files = {"file": ("image.png", f, "image/png")}
response = requests.post(url, headers=headers, files=files)
result = response.json()
download_url = result["data"]["download_url"]
print(f"File URL: {download_url}")Response
{
"data": {
"download_url": "https://storage.atlascloud.ai/uploads/abc123/image.png",
"file_name": "image.png",
"content_type": "image/png",
"size": 1024000
}
}Input Schema
The following parameters are accepted in the request body.
No parameters available.
Example Request Body
{
"model": "kwaivgi/kling-video-o3-pro/reference-to-video"
}Output Schema
The API returns a prediction response with the generated output URLs.
Example Response
{
"id": "pred_abc123",
"status": "completed",
"model": "model-name",
"outputs": [
"https://storage.atlascloud.ai/outputs/result.mp4"
],
"metrics": {
"predict_time": 45.2
},
"created_at": "2025-01-01T00:00:00Z",
"completed_at": "2025-01-01T00:00:10Z"
}Atlas Cloud Skills
Atlas Cloud Skills integrates 300+ AI models directly into your AI coding assistant. One command to install, then use natural language to generate images, videos, and chat with LLMs.
Supported Clients
Install
npx skills add AtlasCloudAI/atlas-cloud-skillsSetup API Key
Get your API key from the Atlas Cloud dashboard and set it as an environment variable.
export ATLASCLOUD_API_KEY="your-api-key-here"Capabilities
Once installed, you can use natural language in your AI assistant to access all Atlas Cloud models.
MCP Server
Atlas Cloud MCP Server connects your IDE with 300+ AI models via the Model Context Protocol. Works with any MCP-compatible client.
Supported Clients
Install
npx -y atlascloud-mcpConfiguration
Add the following configuration to your IDE's MCP settings file.
{
"mcpServers": {
"atlascloud": {
"command": "npx",
"args": [
"-y",
"atlascloud-mcp"
],
"env": {
"ATLASCLOUD_API_KEY": "your-api-key-here"
}
}
}
}Available Tools
API Schema
Schema not availableNo examples available
Please log in to view request history
You need to be logged in to access your model request history.
Log InKling Video O3 Pro Reference-to-Video
Kling Video O3 Pro Reference-to-Video generates premium video from reference images with optional video guidance. Upload reference images to establish character identity and appearance, optionally provide a reference video for motion guidance, and describe the scene — the model produces top-tier cinematic video with identity consistency.
Why Choose This?
O3 Pro quality The highest visual fidelity and motion realism in the Kling family.
Multi-reference images Upload up to 7 reference images (or up to 4 with a reference video).
Video-guided generation Optional reference video for motion and scene guidance.
Keep original sound Preserve the audio from the reference video in the output.
Sound generation Optional AI-generated sound effects when no reference video is provided.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text description of the video scene and motion |
| video | No | Reference video for motion guidance |
| images | No | Reference images: up to 4 with video, up to 7 without (click "+ Add Item") |
| keep_original_sound | No | Keep audio from the reference video (default: enabled) |
| sound | No | Generate AI audio (only when no reference video, default: disabled) |
| aspect_ratio | No | Output ratio: 16:9 (default), 9:16, 1:1 |
| duration | No | Video length: 3-15 seconds (default: 5) |
How to Use
- Run — submit and download your video.
- Set duration — choose any length from 3 to 15 seconds.
- Select aspect ratio — match your target platform.
- Configure audio — keep original sound from video, or enable AI sound generation.
- Upload reference images — add character or scene references.
- Upload reference video (optional) — provide a video for motion guidance.
- Write your prompt — describe the scene, characters, and action.
Best Use Cases
- Long-Form Scenes — Up to 15 seconds for extended scene development.
- Storytelling — Produce narrative scenes with consistent character appearance.
- Marketing & Ads — Create promotional videos featuring specific people or products.
- Video Remixing — Use reference video for motion guidance with new characters.
- Character Consistency — Generate videos with identity-consistent characters.
Pro Tips
- Match aspect ratio to your platform: 16:9 for YouTube, 9:16 for TikTok/Reels, 1:1 for Instagram.
- Use shorter durations (3-5s) for testing, longer (10-15s) for final production.
- Sound generation is only available when no reference video is provided.
- Enable keep_original_sound to preserve audio from your reference video.
- When using a reference video, the image limit is 4; without a video, you can use up to 7.
- Use multiple reference images from different angles for better identity preservation.
Notes
- Ensure uploaded image and video URLs are publicly accessible.
- When a reference video is provided, sound generation is replaced by keep_original_sound.
- Reference images limit: up to 4 with video, up to 7 without.
- Duration supports any value from 3 to 15 seconds.
- Only prompt is required; other parameters are optional.
Related Models
- Kling V3.0 Pro Text-to-Video — Pro quality text-to-video.
- Kling V3.0 Pro Image-to-Video — V3.0 Pro quality at lower cost.
- Kling Video O3 Pro Image-to-Video — O3 Pro quality single image to video.






