aiiqq.com Docs
VideosMiniMax Video

MiniMax Generic Video Format

Call H3, Max, and Max Turbo through /v1/videos or /v1/video/generations, with field mapping and query response differences.

Use the generic format to share a aiiqq.com video client across models. Generation uses lowercase minimax-h3, minimax-h3-max, or minimax-h3-max-turbo; the server already maps H3 to its upstream name. Use the dedicated native endpoints for minimax-h3-context-ir and minimax-h3-regeneration rather than generic video generation.

Field mapping

Generic fieldField sent to the video model
modelCorresponding model name; H3 maps to MiniMax-H3
promptText item in content
images, or imagereference_image items in content
metadata.video_urlA reference_video item
metadata.audio_urlA reference_audio item
sizeresolution; H3 uses 768P / 2K, Max uses 480P / 768P
seconds or durationInteger duration, with seconds taking precedence; avoid conflicting values
metadata.ratio or metadata.aspect_ratioratio, with the first field taking precedence
metadata.contentComplete media array; when nonempty, it takes precedence over generated text and media items
metadata.extraPlatform extra, such as Max prompt-expansion options
metadata.callback_url, metadata.aigc_watermarkCorresponding optional native fields; explicit false is preserved

Use media shortcuts only when the selected model supports that media. To specify first/last frames or explicit media roles, supply complete metadata.content, including its text item.

The generic endpoints require a non-empty top-level prompt, including when metadata.content is supplied. Native /v2 requests put the text item inside content instead.

H3: 768P, four seconds

curl --max-time 300 "$MODELSELL_BASE_URL/v1/videos" \
  -H "Authorization: Bearer $MODELSELL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "minimax-h3",
    "prompt": "A red ceramic teapot rests on a wooden table in morning sunlight. The camera slowly moves closer.",
    "seconds": "4",
    "size": "768P",
    "metadata": {"ratio": "16:9", "aigc_watermark": false}
  }'

Max: 480P, five seconds

{
  "model": "minimax-h3-max",
  "prompt": "A product film of a red ceramic teapot in morning sunlight.",
  "seconds": "5",
  "size": "480P",
  "metadata": {
    "ratio": "16:9",
    "extra": {"prompt_expansion_mode": "balanced"}
  }
}

For Max Turbo, change model to minimax-h3-max-turbo, retain the minimal 480P / five-second request, and omit unconfirmed metadata.extra options.

Explicit first and last frames

{
  "model": "minimax-h3",
  "prompt": "A flower bud gradually blooms in morning sunlight.",
  "seconds": "4",
  "size": "768P",
  "metadata": {
    "ratio": "adaptive",
    "content": [
      {"type": "text", "text": "A flower bud gradually blooms in morning sunlight."},
      {"type": "image_url", "image_url": {"url": "https://example.com/first.png"}, "role": "first_frame"},
      {"type": "image_url", "image_url": {"url": "https://example.com/last.png"}, "role": "last_frame"}
    ]
  }
}

Once complete metadata.content takes effect, prompt, images, and video/audio shortcuts are not merged into it. See Request Parameters for role constraints.

Creation and query responses

Both POST /v1/videos and POST /v1/video/generations return a generic video creation object. Save id:

{"id": "task_example_h3_generation", "task_id": "task_example_h3_generation", "object": "video", "model": "minimax-h3", "status": "queued", "progress": 0, "created_at": 1793145600}

Prefer GET /v1/videos/{task_id}, retaining the API Key used for creation. Example success response:

{
  "id": "task_example_h3_generation",
  "object": "video",
  "model": "minimax-h3",
  "status": "completed",
  "video_url": "https://example.com/result.mp4",
  "metadata": {
    "url": "https://example.com/result.mp4",
    "resolution": "768P",
    "usage": {"total_seconds": 4, "output_seconds": 4, "input_seconds": 0, "input_image_count": 0}
  }
}

The generic query also returns this video object for platform Max / Turbo tasks. metadata.outputs retains the source URL list, and metadata.usage contains final metering such as seconds.

GET /v1/video/generations/{task_id} uses a different task envelope: read data.status (for example SUCCESS) and data.result_url; data.data contains the upstream snapshot. Use the creation id / task_id or outer data.task_id as the public ID, not an upstream ID in the raw snapshot. Do not parse this response using the root-level status / video_url above. Use /v1/videos/{task_id} for normalized statuses and metadata; native cancellation maps to failed in that object.

Generic queries identify the original task channel. This does not make a platform task eligible as native regeneration source_task_id. See the overview for native creation formats and matching native query paths.

On this page