Home › Guides › Resolution tiers

Reading MiniMax H3's per-resolution price table

Updated 2026-10-02

MiniMax H3 is not one price per second. Each host lists its own set of resolution tiers, and each tier has its own price. That is why a single "cheapest host" answer is incomplete, and why the best host at one tier is often not the best at another. This page explains the mechanics and how to read the table on each model page.

The basic model: seconds times a tier rate

Cost for a job is the requested duration times the per-second rate of the tier you asked for, plus the platform's 2% fee. It is charged once at creation, and polling is free. A longer clip scales cost linearly, and a higher tier changes the rate. So you have two independent dials, and the tier is the one people forget to check.

The live comparison

The table below is rebuilt from the live catalog. It shows, for each model on this site, the tier compared, the cheapest and the priciest host, and the gap:

ModelCheapest hostPriciest hostCheapest isHosts
minimax/h3 (768p)MachGen
$0.04 / second
WaveSpeedAI-resell
$0.1 / second
60% lower14
minimax/h3-max (480p)SandBase
$0.01 / second
MiniMax
$0.05 / second
80% lower5
minimax/h3-unrestricted (768p)SandBase
$0.064 / second
TOAPIS
$0.08 / second
20% lower2

Per second, before VideoRouter's 2% platform fee. For tiered models each row compares the resolution tier with the widest host-to-host gap. Built 2026-10-02 from the live catalog.

Each row compares one tier. The model pages go further and show every host against every tier.

How to read a model page

Open any H3 page in the models section. You will see a grid:

Why the spread differs by tier

You cannot see a host's cost structure, but you can observe the patterns that explain the table:

  1. Coverage. A tier offered by only two hosts has a narrow range by construction. A tier offered by a dozen has more room for a low and a high outlier.
  2. Hosts price tiers independently. One host may discount a low tier heavily to attract experimentation while pricing a high tier close to the list rate. A discount that exists at one tier says nothing about another.
  3. Rates are not a fixed multiple. Going up a tier does not scale every host's price by the same factor, so the ranking of hosts can reorder between tiers.
  4. Variants of the same label. A tier and its super-resolution variant can be priced differently even at one host.

The practical lesson is to read the column for the tier you intend to use, not the headline number.

Choosing a tier

SituationApproach
Prompt explorationLowest tier that still lets you judge motion and composition
Product or social deliveryThe tier that matches the largest screen the clip will occupy, not the highest one available
Reframing or cropping in postA higher tier gives headroom; weigh it against the per-second increase
High-volume bulk outputThe cheapest tier that meets a minimum acceptance bar, validated on your own samples

A reasonable workflow: draft at a low tier, review, then re-run only approved shots at the delivery tier. If you also vary the model, see the image-to-video guide for how input choices interact with resolution.

Check that you got the tier you paid for

Per the video docs, a resolution a model does not support is ignored and the model's default is used instead, without an error. So after any change to hosts or tiers:

import subprocess, json

def probe(path):
    out = subprocess.run(
        ["ffprobe", "-v", "error", "-select_streams", "v:0",
         "-show_entries", "stream=width,height", "-of", "json", path],
        capture_output=True, text=True, check=True).stdout
    s = json.loads(out)["streams"][0]
    return s["width"], s["height"]

Compare the dimensions with what you requested, and check the host's column on the model page for that tier before pinning. Pinning to a host that lacks the tier is the most common way to end up with an unexpected resolution.

Routing and tiers together

Unpinned requests go to the cheapest healthy host. When you request a tier, ask whether the routing and the tier agree: if your target tier is offered by only a few hosts, failover has fewer places to go. If you need a tier consistently, use "provider": {"only": ["host-a", "host-b"]} with the hosts whose column covers it, and keep fallbacks on so you still fail over between them. The Python tutorial shows the exact request shapes.

To estimate spend, multiply your clip count by seconds by the rate in your tier's column, then add a retry allowance for rejected attempts. Re-check the live table when you do, since rates move. Get a key at videorouter.sh/signup, or start from the quickstart.

Frequently asked questions

Why does MiniMax H3 have different prices per resolution?

Each host lists its own resolution tiers and prices each one independently, so cost is the requested seconds times that tier's per-second rate.

What do tiers like 1080p-esr mean?

They are enhanced-super-resolution variants that a host lists as separate priced tiers. They are not interchangeable with the plain tier of the same number.

Is the cheapest host the same at every tier?

Often not. Coverage and discounts differ by tier, so the cheapest host at one tier can be mid-pack at another. Read the column for the tier you will use.

What happens if I request a tier a model does not support?

The docs say it is ignored and the model's default resolution is used, with no error. Verify the output dimensions and the host's tier column.

Keep reading

Using MiniMax H3 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 →