# Kling | v3 | Pro | Motion Control Applies motion from a reference video to any character image in a cost-efficient mode, ideal for portraits and simple animated movements. ## API Information - **Model Slug:** kling-v3-pro-motion-control - **Branded URL:** https://www.eachlabs.ai/kling/kling-v3/kling-v3-pro-motion-control - **Provider:** Kling - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** $0.168 per second of generated video. - **Estimated Processing Time:** 360 seconds - **Last Updated:** 2026-07-06 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/kling-v3-pro-motion-control ## 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 | No | - | - | - | | image_url | string | Yes | - | - | Reference image URL. The characters, backgrounds, and other elements in the generated video are based on this reference image. Characters should have clear body proportions, avoid occlusion, and occupy more than 5% of the image area. | | video_url | string | Yes | - | - | Reference video URL. The character actions in the generated video will be consistent with this reference video. Should contain a realistic style character with entire body or upper body visible, including head, without obstruction. Duration limit depends on character_orientation: 10s max for 'image', 30s max for 'video'. | | keep_original_sound | boolean | No | true | - | Whether to keep the original sound from the reference video. | | character_orientation | string | Yes | video | image,video | Controls whether the output character's orientation matches the reference image or video. 'video': orientation matches reference video - better for complex motions (max 30s). 'image': orientation matches reference image - better for following camera movements (max 10s). | | elements | array | No | - | 0–1 | Optional element for facial consistency binding. Upload a facial element to enhance identity preservation in the generated video. Only 1 element is supported. Reference in prompt as @Element1. Element binding is only supported when character_orientation is 'video'. | ## 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-v3-pro-motion-control", "input": { "character_orientation": "image", "video_url": "https://storage.googleapis.com/magicpoint/inputs/kling-v3-pro-motion-control-input-video.mp4", "image_url": "https://storage.googleapis.com/magicpoint/inputs/kling-v3-pro-motion-control-input-image.png" } }' ``` ## 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 | v3 | Pro | Motion Control transforms static images into dynamic videos with precise motion guidance, solving the challenge of creating controlled, realistic animations from visual inputs. Developed by Kling as part of the kling-v3 family, this image-to-video model excels in motion control, allowing users to dictate camera movements, object trajectories, and scene dynamics via specialized parameters. Available through the Kling | v3 | Pro | Motion Control API on each::labs (eachlabs.ai), it stands out for its pro-level accuracy in following motion brushes and directives, producing high-fidelity outputs up to 1080p resolution. Ideal for creators needing exact control over video generation, this model leverages advanced diffusion techniques to ensure smooth, coherent motion that aligns with user intent. Whether animating product shots or storytelling visuals, Kling | v3 | Pro | Motion Control delivers professional results faster than traditional editing workflows. Access it seamlessly via each::labs for scalable Kling image-to-video generation. ## 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.