# Video models

> The video models, the resolutions, durations and frame inputs each one accepts, and why video always needs an explicit model id.

Video runs on `POST /video/generate`, and `model` is required. There is no
`auto` for video.

| Model                  | Id                             | Resolutions           | Duration (s)    | Frame inputs            |
| ---------------------- | ------------------------------ | --------------------- | --------------- | ----------------------- |
| Seedance 2.0 Mini      | `bytedance/seedance-2.0-mini`  | 480p, **720p**        | 4–15, default 5 | first frame, last frame |
| Gemini Omni Flash 1.1  | `google/gemini-omni-flash-1.1` | **720p**, 1080p, 4k   | 3–10, default 8 | first frame, last frame |
| P-Video                | `prunaai/p-video`              | **720p**, 1080p       | 1–10, default 5 | first frame             |
| Grok Imagine Video 1.5 | `xai/grok-imagine-video-1.5`   | **480p**, 720p, 1080p | 1–15, default 8 | first frame             |

Bold marks the default resolution. Every model does text-to-video and
image-to-video, and generates audio by default. Image-to-video needs exactly
one `first_frame`. A `last_frame` is optional where the model takes one. No
video model accepts a `reference` input today.

This table is a snapshot. The SDK exports the same data as
`AVAILABLE_VIDEO_MODELS`, and `modes` and `pricing.perSecond` on
`GET https://api.mynth.io/models` are the live source for inputs and
resolution tiers.

> **Warning**
>
> `resolution`, `duration`, `audio`, and `inputs` are checked against the model when the task is
> created. A value the model does not serve answers `400 VALIDATION_ERROR`, and nothing is queued.

## Price

Video is priced per second at the requested resolution, so the same prompt
costs different amounts on different models and tiers. Video estimates are
always exact, because the model is always explicit.

```bash
curl https://api.mynth.io/video/generate/estimate \
  -H "Authorization: Bearer $MYNTH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"bytedance/seedance-2.0-mini","prompt":"A lighthouse beam sweeping over waves","duration":5}'
```

## Next steps

- [Generate video](https://mynth.io/docs/guides/generate-video.md): the full request and how to collect the file.
- [The model field](https://mynth.io/docs/models.md): input rules, and the `first_frame` and `last_frame` kinds.
- [Pricing](https://mynth.io/docs/pricing.md#video-price): the per-second formula.
