Videos · Concepts
Tasks and inputs
The task field says what kind of input conditions the video. It also decides which pool of GPUs runs the job.
The three tasks
| task | Required | Optional | What it does |
|---|---|---|---|
t2va | prompt | — | Text to video and audio. |
fl2va | conditions with 1 or 2 frames | prompt | Start from a first frame, end on a last frame, or both. |
ref2va | conditions with references | prompt | Condition on reference images, video, or audio. |
Requests are checked before a job is queued, so an invalid combination is rejected immediately with invalid_request_error instead of failing after it has used GPU time.
Text to video: t2va
{
"model": "minimax/h3",
"task": "t2va",
"prompt": "a paper boat drifting down a rain-slicked street at night, neon reflections",
"seconds": 5
}First and last frame: fl2va
Pass one or two entries in conditions, each a first_frame or last_frame with an image_url.
{
"model": "minimax/h3",
"task": "fl2va",
"prompt": "the boat drifts further down the street",
"conditions": [{ "type": "first_frame", "image_url": "https://example.com/boat_start.png" }],
"seconds": 5,
"quality": "turbo"
}References: ref2va
Pass references in conditions, each with a type of image, video, or audio and a url.
{
"model": "minimax/h3",
"task": "ref2va",
"prompt": "the same character walks into a rainy market",
"conditions": [
{ "type": "image", "url": "https://example.com/character.png" },
{ "type": "audio", "url": "https://example.com/voice.wav" }
],
"seconds": 8
}Inputs are URLs, not uploads
- Images, video, and audio are passed as URLs we fetch. There is no raw-file upload in the request.
- We fetch and validate each input (size cap, content-type allowlist, moderation) before the job is queued, so a bad input fails fast. The exact size limits and allowed types are not final.
- URLs must be reachable from our servers. A signed URL with a short expiry is fine as long as it is still valid when we fetch it.
Clips longer than 15 seconds
One job produces 4 to 15 seconds. To go longer today, chain jobs yourself: generate a clip, take its last frame, use it as the first_frame of an fl2va job, and concatenate the results (for example with ffmpeg). Inspect the joins before you ship. Built-in chaining is not part of the API.
Why tasks route differently
t2va and fl2va run on one checkpoint pool, and ref2va on another. A busy pool queues only its own tasks, so a rush of reference jobs does not delay text-to-video jobs.