# Video Frame Interpolation API on MLMux

> Adds frames to an existing video for smoother motion.

- Model page: https://www.mlmux.com/mlmux/video-fps-increase
- API model ID: `mlmux/video-fps-increase`
- Provider: MLMux
- Generation modes: Source video
- Endpoint: `POST https://api.mlmux.com/v1/videos/generations`
- Reference images: not available yet
- Resolution: one standard output size, no resolution parameter
- Input: a source video as `video_url`; the output is as long as the source, and no prompt is needed

## Pricing

Pay as you go in credits; 1 credit = 1 US dollar, with no subscription. `official-cheap` is the default route.

- Any resolution: $0.015 on `official`, $0.014 on `official-cheap` per second of the source video

## Request

Send your API key as `Authorization: Bearer $MLMUX_API_KEY`. Create keys at https://www.mlmux.com/console/api-keys.

```bash
curl https://api.mlmux.com/v1/videos/generations \
  -H "Authorization: Bearer $MLMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "mlmux/video-fps-increase",
  "route_mode": "official-cheap",
  "video_url": "https://your-cdn.example/source.mp4"
}'

# The response is a task. Poll it until "status" is "succeeded", then read "video".
curl https://api.mlmux.com/v1/videos/generations/TASK_ID \
  -H "Authorization: Bearer $MLMUX_API_KEY"
```

```python
import os
import time
import requests

headers = {"Authorization": f"Bearer {os.environ['MLMUX_API_KEY']}"}
response = requests.post(
    "https://api.mlmux.com/v1/videos/generations",
    headers=headers,
    json={
      "model": "mlmux/video-fps-increase",
      "route_mode": "official-cheap",
      "video_url": "https://your-cdn.example/source.mp4"
    },
    timeout=300,
)
response.raise_for_status()
task = response.json()

while task["status"] not in ("succeeded", "failed", "expired", "canceled"):
    time.sleep(5)
    task = requests.get("https://api.mlmux.com" + task["poll_url"], headers=headers, timeout=30).json()

print(task["status"], task.get("video"))
```

The response is a task. Poll its `poll_url` every few seconds until `status` is `succeeded`, then read the video URL, or receive a webhook when it finishes.

## Frequently asked questions

### What is Video Frame Interpolation?

Video Frame Interpolation is a video tool on MLMux. You can run it in the browser or call it through the same API as the video models. Adds frames to an existing video for smoother motion.

### How do I use the Video Frame Interpolation API?

Create an API key in the MLMux Console, then send a POST request to https://api.mlmux.com/v1/videos/generations with the key in the Authorization header and model set to mlmux/video-fps-increase. The request returns a task: poll it, or receive a webhook when the video is ready.

### What can Video Frame Interpolation do?

Video Frame Interpolation processes a source video you pass as video_url, with no prompt, and the output is as long as the source.

### How much does Video Frame Interpolation cost?

MLMux is pay as you go, with no subscription or monthly fee, and 1 credit equals 1 US dollar. Video Frame Interpolation charges for each second of the video it returns, which is as long as the source: $0.014 per second on the default official-cheap route and $0.015 on the official route, at any resolution. Rates for every resolution are listed in the pricing section of this page.

### Can I try Video Frame Interpolation without writing code?

Yes. Sign in and use the playground at the top of this page to run Video Frame Interpolation with the same settings as the API. The playground's code views show the matching request for your settings, and the quick start below has copy-paste examples in cURL, Python, and JavaScript.

## More

- Video API guide: https://www.mlmux.com/docs/videos
- Pricing for every model: https://www.mlmux.com/pricing
- All models: https://www.mlmux.com/llms.txt
