MaasUnionMaasUnion
API Reference
AI Model APIVideoH3

MiniMax H3 Video Gateway

Gateway Base URL: https://maasunion.com/minimax
Official reference: MiniMax Video Generation API

This page is for callers using the MaasUnion aggregation platform: how to submit a video generation task, poll the result, and troubleshoot errors.

Product Overview

MiniMax H3 is MiniMax's flagship long-form, multimodal video generation model. It supports:

  • Text-to-video / Image-to-video: 4–15 seconds per generation
  • Multimodal references: first/last frame, image reference, video reference, audio reference
  • H3-Context-IR: expand short prompts into structured, semantically richer prompts (does not consume video quota)
  • Video regeneration: upgrade 768P results to 2K, or regenerate from an existing 768P video

On MaasUnion, H3 is exposed through a dedicated gateway path and is independent from other video channels (Kling, Doubao, etc.)—task IDs, billing, and routing are fully isolated. Clients use a single Authorization: Bearer <TOKEN> header and do not need to know about the upstream.

Quick Start

1. Get a Token

Create a token in the MaasUnion console under Tokens. The token determines your identity, quota, and the models you can access.

2. Make Your First Call

Point any HTTP client at the MaasUnion gateway path, and use the token above for authentication:

curl --request POST "https://maasunion.com/minimax/v2/video_generation" \
  --header "Authorization: Bearer $NEW_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "MiniMax-H3",
    "content": [{"type": "text", "text": "Cinematic sunrise, camera slowly pushing in toward a mountain lake"}],
    "resolution": "768P",
    "duration": 6,
    "ratio": "16:9"
  }'

Response:

{"task_id": "424010985738629"}

3. Poll the Result

curl --request GET "https://maasunion.com/minimax/v2/query/video_generation/$TASK_ID" \
  --header "Authorization: Bearer $NEW_API_TOKEN"

On success, read the video URL from task.content.url. The URL is time-limited, so download or transfer the file to your own storage as soon as possible.

The official recommendation is to poll every 10 seconds. If you would rather not poll, you can pass callback_url when creating the task; the gateway will POST to that address whenever the status changes.

Endpoints

CapabilityGateway route
Create videoPOST /minimax/v2/video_generation
H3-Context-IRPOST /minimax/v2/h3_context_ir
Video regenerationPOST /minimax/v2/video_regeneration
Query a taskGET /minimax/v2/query/video_generation/{task_id}
List tasksGET /minimax/v2/query/video_generation
Cancel/delete a taskDELETE /minimax/v2/video_generation/{task_id}

Every create endpoint returns a task_id; use the query endpoint to fetch the final result. Task records are retained for 7 days.

See the dedicated pages for parameter and field details: Create video · Context-IR · Video regeneration · Query tasks.

Task Status & Response Fields

Status progresses queued → running → succeeded / failed / cancelled.

FieldDescription
idGateway-public task ID
statusqueued / running / succeeded / failed / cancelled
task_typegeneration / h3_context_ir / regeneration
modalityvideo for video tasks, text for Context-IR
content.urlVideo URL on success (time-limited)
content.promptExpanded prompt on Context-IR success
usageSeconds / image count for video; token usage for Context-IR
errorError code and message for failed tasks

Request Constraints

Content & duration

  • model must be MiniMax-H3
  • content must contain at least one non-empty text entry; max 7,000 characters
  • Video duration 4–15 seconds; resolution 768P or 2K
  • Supported ratios: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
  • Text-to-video requires ratio and cannot be adaptive; image-to-video uses adaptive

Multimodal

  • first_frame / last_frame cannot be combined with reference_image / reference_video / reference_audio
  • Image ≤ 30 MB, video ≤ 50 MB, request body ≤ 64 MB
  • For large files, use a public URL or mm_file://{file_id}

Tasks & expiry

  • Task records are retained for 7 days
  • Successful video URLs are time-limited; download or transfer immediately
  • Recommended polling cadence: every 10 seconds, or use callback_url

Pricing

Charged in CNY and deducted from your MaasUnion quota. Failed or cancelled tasks are refunded per the standard rules.

ItemUnit price
Video generation 768P¥0.50 / output second
Video generation 2K¥0.80 / output second
Generation image inputFirst 5 free, then ¥0.20 / image
Generation video inputOutput-resolution unit price × input seconds
Regeneration output¥0.30 / output second
Regeneration image inputFirst 5 free, then ¥0.15 / image
Regeneration video input¥0.30 / input second
Context-IR input¥5.80 / 1M tokens
Context-IR output¥23.00 / 1M tokens

See the official MiniMax pricing page for the latest rates. Context-IR does not produce video and only consumes token quota.

Troubleshooting

HTTP status codes

CodeMeaningAction
200Creation succeeded (returns task_id only)Continue polling
400Invalid request parametersCheck model / content / resolution / duration / ratio
401Missing or invalid tokenGenerate a new token
403Token cannot use H3Ask the admin to add H3 to your visible group
404Task not found or expiredTask is older than 7 days or not owned by your token
429Rate-limitedLower concurrency, or ask the admin to upgrade quota
500/502/503Gateway or upstream errorBrief retry; contact support if it persists

Business failure (status: failed)

When querying a failed task, task.error contains the code and message. Common cases:

ErrorWhat to check
invalid api keyUpstream key misconfigured or expired in the MaasUnion admin (ask the admin)
insufficient balanceUpstream account balance is low; top up and retry (ask the admin)
content policy violationPrompt or reference assets violate MiniMax content policy; edit and retry
parameter invalidVerify resolution / duration / ratio / file-size constraints
rate limit exceededLower request rate or apply for higher quota
task not foundTask has expired or is not owned by your token

Best Practices

  • Polling: poll every 10 seconds, or use callback_url for lower latency
  • Large files: prefer public URLs or mm_file://{file_id} to avoid base64 bloat
  • Persist results: download or copy the video to your own storage as soon as the task succeeds
  • Clean up: actively DELETE failed or unwanted tasks for easier auditing
  • Multimodal isolation: do not mix first/last frame and reference assets; for character/scene consistency, put all assets in the same reference_image or reference_video group
  • Prompt refinement: use Context-IR to expand your short prompt first, then copy content.prompt into the generation request for more stable results
  • 2K upgrade: run 768P first to validate, then use video regeneration to upgrade to 2K to save cost

How is this guide?