# Kling | o3 | Pro | Video to Video | Reference Generates videos using a reference clip as a visual anchor Kling O3 Pro locks character identity, motion style, and scene details from your input to produce consistent, high-quality output. ## API Information - **Model Slug:** kling-o3-pro-video-to-video-reference - **Branded URL:** https://www.eachlabs.ai/kling/kling-o3/kling-o3-pro-video-to-video-reference - **Provider:** Kling - **Category:** Video to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.168 per second of generated video. - **Estimated Processing Time:** 300 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/kling-o3-pro-video-to-video-reference ## Pricing - **Charge Type:** dynamic - **Pricing Details:** $0.168 per second of generated video. ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | $0.168 per second of generated video. | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt for video generation. Use @Element1, @Element2 to reference elements, @Image1, @Image2 for style images, @Video1 for the reference video. | | video_url | string | Yes | - | - | URL of the reference video (.mp4/.mov, 3-10s, 720-2160px, max 200MB). | | image_urls | array | No | - | - | Up to 4 style/appearance reference images. | | elements | array | No | - | - | Character/object elements. Each element has a frontal image and optional reference images from different angles. Reference in prompt as @Element1, @Element2. | | keep_audio | boolean | No | false | - | Whether to keep the original audio from the reference video. | | aspect_ratio | string | No | - | 16:9, 9:16, 1:1, auto | Video aspect ratio. If not specified, inferred automatically. | | duration | string | No | 5 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | Video duration in seconds (3-15s). | | shot_type | string | No | customize | customize | The type of multi-shot video generation. | | element_list | array | No | - | - | Pre-created Kling element IDs to reuse. Reference in prompt as @Element1, @Element2. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kling-o3-pro-video-to-video-reference", "input": { "prompt": "Replace the main character with @Element1. The entire scene should match the painterly oil painting style of @Image1.", "video_url": "https://cdn-us.eachlabs.ai/defaults/90e2baf13c3021cad6a22d82758507b663fb4414d75b4b8d1f0bcca3dba1388c.mp4" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview Kling | o3 | Standard | Video to Video | Reference, part of Kling's O3 family from provider Kling, excels at generating new video shots from reference videos or images, preserving cinematic motion, camera style, and scene continuity for seamless extensions. This video-to-video model leverages the unified multimodal Omni architecture to transform reference inputs into consistent, high-quality outputs, solving the challenge of maintaining character identity and environmental details across shots. Unlike traditional text-only generators, it prioritizes reference-driven consistency, making it ideal for creators needing precise control over multi-subject scenes and transitions. Available via each::labs (eachlabs.ai), this Kling video-to-video tool supports professional workflows with up to 10+ references simultaneously, enabling complex productions without losing stylistic fidelity. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.