MiniMax H3 API
Generate video with MiniMax H3. This guide covers only these three models. MiniMax H3 Turbo has a separate guide.
Base URL: https://phosor.ai/api/v1
Authentication: X-API-Key: $PHOSOR_API_KEY
Workflow: submit → keep request_id → check status → retrieve result.
Choose an input mode
| Mode | Exact model ID | Required input |
|---|---|---|
| Text to video | minimax/h3/text-to-video | prompt |
| Image to video | minimax/h3/image-to-video | prompt, image_url; optional end_image_url |
| Reference to video | minimax/h3/reference-to-video | prompt and at least one reference image or video |
1. Submit a video
Create an API key, add credits and review pricing. Store your key on your server. The examples below create paid requests; run only the mode you want. Replace example media URLs with accessible URLs returned by image upload or image import.
Text to video
curl --fail-with-body https://phosor.ai/api/v1/inference/submit \
-H "X-API-Key: $PHOSOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/h3/text-to-video",
"prompt": "A small original orange AI robot sits beside a young woman at a desk in warm evening light. She smiles and asks in Mandarin: 你今天过得怎么样? The robot replies in a calm boyish voice: 现在挺好的。 Keep each line with its speaker. No subtitles or logos.",
"duration": 5,
"resolution_tier": "480p",
"aspect_ratio": "16:9"
}'Image to video
curl --fail-with-body https://phosor.ai/api/v1/inference/submit \
-H "X-API-Key: $PHOSOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/h3/image-to-video",
"image_url": "https://your-public-host.example/start.jpg",
"prompt": "The subject turns gently toward the camera. Preserve the subject and composition from the starting image. Slow camera push-in.",
"duration": 5,
"resolution_tier": "480p",
"aspect_ratio": "16:9"
}'An optional end_image_url supplies an ending frame.
Reference to video
curl --fail-with-body https://phosor.ai/api/v1/inference/submit \
-H "X-API-Key: $PHOSOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/h3/reference-to-video",
"reference_image_urls": ["https://your-public-host.example/person.jpg", "https://your-public-host.example/place.jpg"],
"prompt": "The person in <Picture 1> walks through the location in <Picture 2>. Keep the person identity and clothing consistent. A slow tracking shot follows from the side.",
"duration": 5,
"resolution_tier": "480p",
"aspect_ratio": "16:9"
}'Use reference_video_urls and reference_audio_urls for video and audio references. Address them in the prompt as <Video 1> and <Audio 1>. Number each media type separately, starting at 1 and matching array order. Audio alone is not a valid reference-to-video request.
An accepted response returns request_id. A network timeout does not prove the request was rejected: check request history before creating a duplicate paid request.
2. Check status and retrieve the video
Set REQUEST_ID to the value returned by submission; use the same owning account's API key.
curl --fail-with-body "https://phosor.ai/api/v1/inference/status/$REQUEST_ID" \
-H "X-API-Key: $PHOSOR_API_KEY"When status is completed, retrieve the result:
curl --fail-with-body "https://phosor.ai/api/v1/inference/result/$REQUEST_ID" \
-H "X-API-Key: $PHOSOR_API_KEY"The video URL is in data.video.url. Follow the full status contract and result contract for errors and response fields. Keep checking the original request; do not resubmit just because it is still processing.
Output settings
| Parameter | Values |
|---|---|
duration | 4–15 seconds; default 5 |
resolution_tier | 480p, 768p |
aspect_ratio | 16:9, 4:3, 1:1, 3:4, 9:16 |
seed | Optional integer |
| Output | MP4, fixed 24 fps, native audio generation |
Set duration, resolution_tier and aspect_ratio explicitly. Do not copy Wan sampling, quality or frame-rate settings into an H3 request. H3 does not support negative_prompt.
Reference limits and file formats
| Input | Current limit |
|---|---|
| Images only | Up to 9 reference images |
| Images mixed with audio or video | Up to 5 reference images |
| Reference image dimensions | Longest edge ≤2048px; maximum aspect ratio 4:1 in either orientation |
| Reference video | Up to 3 files; combined duration ≤15.1s; frame rate ≤24 fps |
| Reference audio | Up to 3 files; each ≤10s; requires a visual reference |
| Image uploads | JPEG, PNG, WebP; published default 20 MiB maximum per file |
| Video uploads | MP4, WebM, MOV |
| Audio uploads | MP3, WAV, OGG, M4A, AAC, FLAC |
These are per-type limits, not a promise that every maximum can be combined. File codecs must be readable. Current limits are published by GET /api/v1/pricing/config; use minimax_h3_ref2va_limits. See full video limits and upload requirements.
Billing and expected time
Output is billed per video second at the selected tier. Reference-to-video also has reference input charges. The request estimate and pricing page show the applicable rates. Do not use per-frame Wan rates to estimate H3 charges.
For measured examples with GPU time separated from end-to-end time, see H3 performance and capabilities. Queueing, model loading, inputs and transfer affect completion time.
Troubleshooting
| Situation | Next step |
|---|---|
| Invalid model or inputs | Copy the exact model ID above and provide the inputs for that mode |
| Reference rejected | Check counts, dimensions, duration, frame rate, file readability and URL access |
| Insufficient credits | Review the estimate and top up before submitting a new request |
| Still processing | Keep the request ID and check its status; avoid duplicate submissions |
| Request failed | Read the returned error and inspect history before retrying |
For the shared HTTP error format and authentication details, see common API contract. The all-model submit reference is for cross-model integration.