MiniMax Video
| Method | Path | Use |
|---|---|---|
POST | /minimax/v2/video_generation | Create a video generation task |
GET | /minimax/v2/video_generation/{task_id} | Poll task status and result |
DELETE | /minimax/v2/video_generation/{task_id} | Cancel an unfinished task and release its preauthorization |
This is MiniMax video generation V2 as an inbound protocol, aimed mainly at the MiniMax-H3 family. Like the Ark lane it runs on the platform-managed async pipeline — the request body is MiniMax's own shape, and the responses are rendered in MiniMax's shape too, so a client written against MiniMax's own documentation can decode this surface directly.
The task lives on the platform, so per-dimension metering, artifact delivery, and preauthorize/settle all apply as usual.
Create a task
curl https://api.modelgo.ai/minimax/v2/video_generation \
-H "Authorization: Bearer $MODELGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<model>",
"content": [
{ "type": "text", "text": "a boy playing basketball by the sea" },
{ "type": "image_url", "image_url": { "url": "https://example.com/first.jpg" }, "role": "first_frame" }
],
"resolution": "2K",
"duration": 5,
"ratio": "16:9"
}'Create answers the bare task handle from MiniMax's documentation:
{ "task_id": "424010985738629" }Request fields
content[] is a multimodal array; type and role together decide what each part is:
type | Valid role | Meaning |
|---|---|---|
text | — | Prompt |
image_url | first_frame / last_frame | First / last frame image |
image_url | reference_image | Reference image |
video_url | reference_video | Reference video |
audio_url | reference_audio | Reference audio |
- Frames and references cannot be mixed: a request carrying
first_frame/last_framemay not resolution,duration, andratioare flat siblings ofcontent, for example
also carry any reference_* part, and vice versa — they map to two different upstream jobs.
resolution: "2K", duration: 5, and ratio: "16:9". Omitting one applies the upstream default — and bills at that default tier. The accepted ranges depend on the logical model behind model and on MiniMax's official documentation.
Poll a task
curl https://api.modelgo.ai/minimax/v2/video_generation/424010985738629 \
-H "Authorization: Bearer $MODELGO_API_KEY"Poll answers a task envelope — a different shape from create:
{
"task": {
"id": "424010985738629",
"model": "<model>",
"status": "succeeded",
"created_at": 1756600000,
"updated_at": 1756600120,
"content": { "url": "https://.../video.mp4" },
"resolution": "2K",
"duration": 5,
"ratio": "16:9",
"usage": {
"total_seconds": 5,
"input_seconds": 0,
"output_seconds": 5,
"input_image_count": 1
},
"task_type": "generation",
"modality": "video"
}
}statusis one ofqueued/running/succeeded/failed.- On success the artifact URL is in
task.content.url. usageis denominated in seconds (H3 is quoted per second of output), not tokens; it is- On failure a
task.error(code/message) is added. That field is not part of MiniMax's
omitted when the upstream reports only token counts and no seconds.
documented success schema — it is included so a failure reason is visible at all, and a client decoding the documented struct simply ignores it.
Cancel a task
curl -X DELETE https://api.modelgo.ai/minimax/v2/video_generation/424010985738629 \
-H "Authorization: Bearer $MODELGO_API_KEY"Cancelling voids the preauthorization. Note that this lane never reports MiniMax's documented cancelled status — a cancelled task is surfaced as failed, which is what makes its preauthorization be released rather than settled.
Key conventions
id/task_idare the gateway task id, not the upstream one; polling and cancelling only- The lane does not pin an upstream family; the logical model behind
modeldecides who serves the - The only content endpoint is the OpenAI-compatible one (
GET /v1/videos/{task_id}/content); there
accept that id.
request, and the URL spelling plays no part in it.
is no equivalent under the MiniMax paths.
For the most standardized experience, use OpenAI-Compatible Video Flow.