Kling I2V Frames V2.5 — Start-End Frame to Video
curl --request POST \
--url https://api.muvi.video/v1/jobs/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"image_url": "<string>",
"end_image_url": "<string>",
"quality": "<string>",
"duration": "<string>",
"aspect_ratio": "<string>",
"seed": 123
}
}
'import requests
url = "https://api.muvi.video/v1/jobs/submit"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"image_url": "<string>",
"end_image_url": "<string>",
"quality": "<string>",
"duration": "<string>",
"aspect_ratio": "<string>",
"seed": 123
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {
prompt: '<string>',
image_url: '<string>',
end_image_url: '<string>',
quality: '<string>',
duration: '<string>',
aspect_ratio: '<string>',
seed: 123
}
})
};
fetch('https://api.muvi.video/v1/jobs/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"jobId": "<string>",
"status": "<string>",
"estimatedCompletionTime": "<string>",
"costMicroCents": 123
}Kling 2.5
Kling I2V Frames V2.5 — Start-End Frame to Video
Generate videos that interpolate between a start and end frame using Kling I2V Frames V2.5
POST
/
v1
/
jobs
/
submit
Kling I2V Frames V2.5 — Start-End Frame to Video
curl --request POST \
--url https://api.muvi.video/v1/jobs/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"image_url": "<string>",
"end_image_url": "<string>",
"quality": "<string>",
"duration": "<string>",
"aspect_ratio": "<string>",
"seed": 123
}
}
'import requests
url = "https://api.muvi.video/v1/jobs/submit"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"image_url": "<string>",
"end_image_url": "<string>",
"quality": "<string>",
"duration": "<string>",
"aspect_ratio": "<string>",
"seed": 123
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
input: {
prompt: '<string>',
image_url: '<string>',
end_image_url: '<string>',
quality: '<string>',
duration: '<string>',
aspect_ratio: '<string>',
seed: 123
}
})
};
fetch('https://api.muvi.video/v1/jobs/submit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"jobId": "<string>",
"status": "<string>",
"estimatedCompletionTime": "<string>",
"costMicroCents": 123
}Generate a smooth video that transitions from a start frame to an end frame with Kling I2V Frames V2.5. Ideal for controlled keyframe animation, morphing transitions, and product shots.
| Property | Value |
|---|---|
| Provider | Kling |
| Model | Kling I2V Frames V2.5 |
| Capability | Start-End Frame to Video |
| Base Cost | 50,000 micro-cents/second ($0.05/sec) |
| Processing Time | ~240 seconds |
Request Body
string
required
Model slug. Use
kling/kling-i2v-frames-v25/start-end-frame-to-video.object
required
Input parameters for start-end frame video generation.
Hide properties
Hide properties
string
Text description guiding the transition (max 2500 characters).
string
required
URL of the start frame image.
string
required
URL of the end frame image.
string
Generation quality. Default:
std. Options: std, pro.string
Video duration in seconds. Default:
5. Options: 5, 10.string
Video aspect ratio. Default:
16:9. Options: 16:9, 9:16, 1:1.integer
Optional random seed for reproducible results.
string
HTTPS URL to receive a webhook notification when the job completes or fails.
Pricing
Base cost: 50,000 micro-cents per second ($0.05/sec)finalCost = baseCost × quality × duration
| Factor | Option | Multiplier |
|---|---|---|
| Quality | std | 1x |
pro | 1.5x | |
| Duration | 5 | 5x |
10 | 10x |
Default cost: std quality, 5 seconds = 50,000 × 1 × 5 = 250,000 micro-cents ($0.25)
Response
string
Unique identifier for the submitted job.
string
Initial job status. Always
"pending" on successful submission.string
ISO 8601 timestamp of the estimated completion time.
number
The cost of the job in micro-cents.
Code Examples
curl -X POST https://api.muvi.video/v1/jobs/submit \
-H "Authorization: Bearer $PIXELBYTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling/kling-i2v-frames-v25/start-end-frame-to-video",
"input": {
"prompt": "A flower blooms from bud to full blossom",
"image_url": "https://example.com/image.jpg",
"end_image_url": "https://example.com/image.jpg",
"quality": "std",
"duration": "5",
"aspect_ratio": "16:9"
}
}'
import requests
response = requests.post(
"https://api.muvi.video/v1/jobs/submit",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "kling/kling-i2v-frames-v25/start-end-frame-to-video",
"input": {
"prompt": "A flower blooms from bud to full blossom",
"image_url": "https://example.com/image.jpg",
"end_image_url": "https://example.com/image.jpg",
"quality": "std",
"duration": "5",
"aspect_ratio": "16:9"
}
}
)
data = response.json()
print(data)
const response = await fetch("https://api.muvi.video/v1/jobs/submit", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling/kling-i2v-frames-v25/start-end-frame-to-video",
input: {
prompt: "A flower blooms from bud to full blossom",
image_url: "https://example.com/image.jpg",
end_image_url: "https://example.com/image.jpg",
quality: "std",
duration: "5",
aspect_ratio: "16:9"
}
})
});
const data = await response.json();
console.log(data);
