REST async · one key · updated 2026-10-02

MiniMax API

MiniMax's H3 video family — H3, H3 Max and H3 Max Turbo — behind one endpoint, with live pricing across every host.

API at a glance

EndpointPOST https://videorouter.sh/api/v1/videos
AuthenticationAuthorization: Bearer llmr_sk_live_...
LifecycleAsync job: queued → in_progress → completed | failed. Polling is free.
Model idsminimax/h3, minimax/h3-max, minimax/h3-unrestricted, h3-max-turbo
BillingPer requested second, charged once at job creation; failed-upstream jobs are not billed. Flat 2% platform fee.
Provider choiceUnpinned requests route to the cheapest healthy host and fail over; append /<host> to prefer one.

Models

Provider comparison — minimax/h3

Host480p540p768p1080p-esr1080p1440p-esr1440p2k2160p4k-esr
MachGen$0.035—$0.04———$0.10———
Atlas Cloud$0.038—$0.08$0.105$0.08$0.115$0.08$0.13$0.08$0.195
WaveSpeedAI$0.04$0.06$0.08—$0.16—————
kie.ai——$0.04————$0.065——
Fal$0.05—$0.06————$0.13$0.16—
OpenSand——$0.053————$0.0862——
SandBase——$0.064————$0.104——
Novita——$0.069————$0.1104——
MiniMax——$0.08————$0.13——
Replicate——$0.08————$0.13——
Pika——$0.08————$0.13——
TOAPIS——$0.08————$0.13——
TOAPIS-Overseas——$0.08————$0.13——
WaveSpeedAI-resell——$0.10————$0.14——

USD per second, before the 2% platform fee. Bold = cheapest at that tier.

Examples

curl https://videorouter.sh/api/v1/videos \
  -H "Authorization: Bearer $VIDEOROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "minimax/h3", "prompt": "a paper airplane gliding over a city", "duration_secs": 5}'
# -> {"id": "video_...", "status": "queued"}
curl https://videorouter.sh/api/v1/videos/$ID -H "Authorization: Bearer $VIDEOROUTER_API_KEY"
import time, requests
H = {"Authorization": "Bearer llmr_sk_live_..."}
job = requests.post("https://videorouter.sh/api/v1/videos", headers=H, json={
    "model": "minimax/h3", "prompt": "a paper airplane gliding over a city", "duration_secs": 5}).json()
while job["status"] not in ("completed", "failed"):
    time.sleep(5)
    job = requests.get(f"https://videorouter.sh/api/v1/videos/{job['id']}", headers=H).json()
print(job["data"][0]["url"] if job["status"] == "completed" else job["error"])
const H = { Authorization: "Bearer llmr_sk_live_...", "Content-Type": "application/json" };
let job = await (await fetch("https://videorouter.sh/api/v1/videos", { method: "POST", headers: H,
  body: JSON.stringify({ model: "minimax/h3", prompt: "a paper airplane gliding over a city", duration_secs: 5 }) })).json();
while (!["completed", "failed"].includes(job.status)) {
  await new Promise(r => setTimeout(r, 5000));
  job = await (await fetch(`https://videorouter.sh/api/v1/videos/${job.id}`, { headers: H })).json();
}
console.log(job.data?.[0]?.url ?? job.error);

Model id used: minimax/h3. More in examples.

Notes

H3 family
Standard, Max and Max Turbo variants as separate model ids.
Wide host choice
H3 is served by more than a dozen providers, so the price spread is wide.
Same request shape
Switch to Kling, Veo or Seedance by changing one string.
One account
No MiniMax developer account; one prepaid balance covers every host.

FAQ

What is MiniMax H3?

MiniMax's current-generation video model family. Compare its hosts and prices in the live table above.

What is the difference between H3, Max and Max Turbo?

They are priced differently and suit different stages of a pipeline. Compare live prices to see the gap, and test each on your own prompts.

Which host is cheapest?

It changes. The pricing page reads the current catalog; check it before you hard-code a provider.

Can I pin a MiniMax provider?

Yes, e.g. minimax/h3/fal. Unpinned requests route to the cheapest healthy host.

Guides

Using MiniMax is one part of the job.

VideoRouter puts it next to dozens of other video and image models behind one API key, so you can compare providers, prices and fail over automatically. Compare providers on VideoRouter →