
MiniMax Hailuo API — ruble pricing and a 5-minute setup
MiniMax Hailuo API with ruble billing: text-to-video and image-to-video through one Zerocoder key. Per-clip pricing, code samples, limits, refunds.
What Minimax Hailuo does
Minimax Hailuo is a video generation family: you send a text prompt (or a reference frame for image-to-video) and get back a short video clip. The family covers two tiers, from a fast cheap option to a higher-quality one, so you pick the model that matches the shot you need.
Where it's strong
- Turning a text description into a short clip without a render pipeline
- Animating a still reference frame into motion (image-to-video)
- Covering a range of quality and cost in one family, model id to model id
What Zerocoder adds
One API key and one ruble wallet work for every model on the platform, including both Hailuo ids — no separate contracts per provider. You pay with a Russian card or a company invoice, no VPN or foreign card needed. Docs and the API cabinet are on the site, and the request shape follows common SDK conventions, so existing HTTP clients work with minimal changes.
How a request works
You call the video endpoint with a model id, a prompt, a clip length in seconds, and an aspect ratio or size; for image-to-video you also pass a reference frame URL. The call returns a task id and the price charged, then the task moves through queued, processing, and completed states as you poll for it. If generation fails on the provider side, the charge is returned to your wallet automatically.
Available models and prices
Built from the live GET /v1/models price list: prices include our margin, in rubles and in dollars at the internal rate. Anything missing is temporarily not served by the gateway.
| Model | Unit | ₽ | $ | Cost examples | Endpoint |
|---|---|---|---|---|---|
minimax-3-hailuorecommended | per clip | 14.9 ₽ | $0.166 | 1 generation: 14.9 ₽ · $0.166 10 generations: 149 ₽ · $1.66 | /v1/videos |
minimax-h3 | per second | 5.56 ₽ | $0.062 | 5-second clip: 27.8 ₽ · $0.309 10-second clip: 55.6 ₽ · $0.617 | /v1/videos |
Cost calculator
Pick a model and a volume — the calculator uses the same formulas as API billing.
Prices from GET /v1/models, internal exchange rate. Failed generations are not charged.
First request
One zc-sk-… key, the x-api-key header (or Authorization: Bearer), base URL https://zerocoder.com/api/v1. Samples are generated from the real route contracts.
Create a key
Account → API: top up the balance in rubles and create a zc-sk-… key
Send a request
Copy the sample below — the model id is already taken from the price list.
Check the charge
GET /v1/balance shows the balance; the call price comes back in the response.
# 1) start the render — price_rub is charged up front, refunded if the render fails
curl https://zerocoder.com/api/v1/videos \
-H "x-api-key: zc-sk-…" -H "content-type: application/json" \
-d '{"model": "minimax-3-hailuo", "prompt": "A drone shot over a foggy pine forest at sunrise, slow dolly in", "seconds": 5, "aspect": "16:9"}'
# → {"id":"vid_…","object":"video","model":"minimax-3-hailuo","status":"queued","seconds":5,"price_rub":…,"balance_rub":…,"poll":"/api/v1/videos?id=vid_…"}
# 2) poll until status is "completed" (url) or "failed" (refunded: true)
curl "https://zerocoder.com/api/v1/videos?id=vid_…" -H "x-api-key: zc-sk-…"
# image-to-video: add "image": "https://…/frame.jpg" to the bodyimport time, requests
API = "https://zerocoder.com/api/v1"
H = {"x-api-key": "zc-sk-…"}
job = requests.post(f"{API}/videos", headers=H, json={
"model": "minimax-3-hailuo",
"prompt": "A drone shot over a foggy pine forest at sunrise, slow dolly in",
"seconds": 5, # 4–10
"aspect": "16:9", # or 9:16 / 1:1; "image": "https://…" for image-to-video
}).json()
print("charged", job["price_rub"], "RUB, balance", job["balance_rub"])
while True:
st = requests.get(f"{API}/videos", headers=H, params={"id": job["id"]}).json()
if st["status"] == "completed":
print(st["url"]); break
if st["status"] == "failed":
print("failed, refunded:", st.get("refunded")); break
time.sleep(4)const API = "https://zerocoder.com/api/v1";
const H = { "x-api-key": "zc-sk-…", "content-type": "application/json" };
const job = await fetch(`${API}/videos`, {
method: "POST", headers: H,
body: JSON.stringify({ model: "minimax-3-hailuo", prompt: "A drone shot over a foggy pine forest at sunrise, slow dolly in", seconds: 5, aspect: "16:9" }),
}).then((r) => r.json());
console.log("charged", job.price_rub, "RUB");
for (;;) {
const st = await fetch(`${API}/videos?id=${job.id}`, { headers: H }).then((r) => r.json());
if (st.status === "completed") { console.log(st.url); break; }
if (st.status === "failed") { console.log("failed, refunded:", st.refunded); break; }
await new Promise((r) => setTimeout(r, 4000));
}Inputs, limits and refunds
- Text → video and image → video (image: public https URL)
- Duration seconds: 4–10 (default 5)
- aspect 16:9 / 9:16 / 1:1 or an explicit size
- Charged up front by price_rub, refunded if the render fails (refunded: true)
- A job stuck in the queue over 30 minutes is refunded automatically
- 30 requests per minute per key (all endpoints combined)
Error responses and refunds
# 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid or revoked API key."}}
# 402 {"type":"error","error":{"type":"billing_error","message":"Not enough API balance: …"}}
# 429 {"type":"error","error":{"type":"rate_limit_error","message":"…"}} ← 30 requests/min per key
# 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unknown model \"…\". See GET /v1/models."}}
# 502 {"type":"error","error":{"type":"api_error","message":"… Charge refunded."}} ← start failed → money back
# GET ?id → {"id":"vid_…","status":"failed","refunded":true} ← render failed → money backUse cases
A short-video app lets users turn a product photo into a moving teaser clip
A marketing team generates b-roll variations for ad creatives from text prompts
A chatbot answers with a short animated reply instead of a static image
An internal tool batch-generates preview clips for a game or app concept catalog
A social media scheduler auto-creates background video loops for posts
A storyboard pipeline converts static scene sketches into motion drafts for review
Prompting tips
- Name the shot type and camera move explicitly: wide static shot, slow pan, or handheld tracking
- Describe light and time of day — soft morning light, harsh noon sun, or neon night — to anchor the mood
- Break the action into a beginning, middle, and end across the clip's seconds instead of one static idea
- For image-to-video, describe the reference frame content and what should start moving from it
- Match seconds and aspect ratio to the target platform: vertical and short for feeds, wider for landing pages
- Avoid asking for on-screen text, crowds, or close-ups of hands — small details like fingers often distort
FAQ
Does Hailuo support image-to-video?
Yes: pass an https image URL in the image field and describe the motion — the model animates the frame.
How do I get a MiniMax Hailuo API key?
Sign up at Zerocoder, open the API section of your account and create a zc-sk-… key. The same key unlocks MiniMax Hailuo and every other model in the catalogue — no separate MiniMax Hailuo key needed.
How is MiniMax Hailuo API billed?
Top up the API balance in rubles (Russian bank card or invoice for companies). Usage is charged per second or per clip of MiniMax Hailuo video at the price returned by GET /v1/models; MiniMax Hailuo prices already include our margin, there are no hidden fees.
What if MiniMax Hailuo fails to generate the clip?
If the provider fails a MiniMax Hailuo generation, the charge is refunded automatically and the response carries refunded: true. You only pay for a finished clip.
What are the MiniMax Hailuo API rate limits?
A shared limit of 30 requests per minute per key across all generation endpoints, MiniMax Hailuo included. Above that you get 429 rate_limit_error; for higher MiniMax Hailuo volumes contact us and we raise it individually.
Do I need a VPN or a foreign card for MiniMax Hailuo API?
No. MiniMax Hailuo requests go to zerocoder.com, payment is in rubles, and accounting documents are available on request.
Can I try MiniMax Hailuo without code?
Yes: MiniMax Hailuo is available in the Zerocoder studio and in the free tools catalogue — check the quality by hand, then wire up the MiniMax Hailuo API.

AI API for your product
70% cheaper than the official APIs — one key for GPT, Claude, Gemini, images and video