Kling 3.0 Turbo Standard image-to-video via Fal.AI. Animates a first-frame image into 720p video with native audio โ quick, affordable image-driven motion with optional multi-shot storyboards, 3-15 seconds.
Test this model instantly in the Console Playground โ no code required
Copy usage instructions for Claude, ChatGPT, or other AI
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "fal-ai/kling-video/v3/turbo/standard/image-to-video",
"input": {
"prompt": "He sways gently into the note, cheeks pressing, sweat glistening, smoke drifting through the warm light. The camera eases in slowly. Photorealistic, soulful, moody.",
"image_url": "https://v3b.fal.media/files/b/0a9ea079/Y8Pn9lNLLpGQtECV5LgX3_d6533d99ec5f45d88923f8e2bc41ad8d.png",
"duration": "5"
}
}'| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | No | - | Optional text prompt describing the motion (keep under 2500 characters). Mutually exclusive with multi_prompt |
image_url | string | Yes | - | First-frame image. jpg/jpeg/png, max 50MB, min 300px per side, aspect ratio 1:2.5 to 2.5:1 |
duration | string | No | 5 | Video length in seconds (3-15). Billed per second. Ignored when multi_prompt is used 3456789101112131415 |
multi_prompt | array | No | - | Multi-shot storyboard: 1-6 shots of {prompt, duration}, totaling at most 15s. Mutually exclusive with prompt. Billed at the 15-second maximum regardless of the shot total |
enable_safety_checker | boolean | No | true | Enable the safety checker |
There are 3 ways to provide files for the image_url parameter:
Pass a publicly accessible URL directly. With the Storage API (POST /v1/files/upload-url) the file uploads straight to S3 (50MB per file) and you pass the returned file_url.
{
"model": "fal-ai/kling-video/v3/turbo/standard/image-to-video",
"input": {
"prompt": "your prompt here",
"image_url": "https://example.com/image.jpg"
}
}Attach files directly to POST /v1/predictions/upload. No separate upload step, but the bytes pass through the API server so the whole request is capped at 10MB.
curl -X POST "https://api.core.today/v1/predictions/upload" \
-H "X-API-Key: cdt_your_api_key" \
-F "model=fal-ai/kling-video/v3/turbo/standard/image-to-video" \
-F 'input={"prompt":"your prompt here"}' \
-F "file:image_url=@your_file.png"Common parameters used when calling POST /v1/predictions.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | Yes | - | Model identifier |
input | object | Yes | - | Object containing the model-specific parameters from the table above |
output_folder | string | No | - | Folder path for output files (max 256 chars, '..' not allowed) |
webhook_url | string | No | - | Webhook URL to call on completion |
is_public | boolean | No | false | If true, output files are also available via permanent public URLs |
One prompt, 5-second clip
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "fal-ai/kling-video/v3/turbo/standard/image-to-video",
"input": {
"prompt": "He sways gently into the note, cheeks pressing, sweat glistening, smoke drifting through the warm light. The camera eases in slowly. Photorealistic, soulful, moody.",
"image_url": "https://v3b.fal.media/files/b/0a9ea079/Y8Pn9lNLLpGQtECV5LgX3_d6533d99ec5f45d88923f8e2bc41ad8d.png",
"duration": "5"
}
}'Several shots with their own prompts (billed at 15s)
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "fal-ai/kling-video/v3/turbo/standard/image-to-video",
"input": {
"image_url": "https://example.com/keyframe.png",
"multi_prompt": [
{
"prompt": "Wide shot: she steps out of the cafe into the morning street",
"duration": "5"
},
{
"prompt": "Close-up: she smiles and raises her coffee cup to the camera",
"duration": "5"
}
]
}
}'POST /v1/predictions