MiniMax · Video · API

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.

Models and prices

The live GET /v1/models price list in rubles and dollars. Where we are cheaper, the vendor's official price for the same unit is struck through. Endpoint: /v1/videos

Model prices in rubles and dollars; where we are cheaper, the vendor's official price for the same unit is struck through
ModelPriceUnitDiscount
MiniMax 3 Hailuorecommendedminimax-3-hailuo · MiniMax
Official price: 36 ₽, Zerocoder price: 14.9 ₽$0.166per clipofficial: $0.08/s × 5 s · 768P-58%
MiniMax H3minimax-h3 · MiniMax
from 5.56 ₽$0.062per second of video768p — 5.56 ₽ · 2k — 9.04 ₽—
Struck-through prices are the vendors’ official rates from their own pages: MiniMax — checked 4 October 2026. Dollars at the internal rate 1 $ = 90 ₽; the Zerocoder price includes ruble billing and no-VPN access. Comparison assumptions:
  • per-clip prices: the official figure is the per-second price × 5 s (the API default for seconds); if the clip is longer, the official price is higher and the saving is larger than shown
  • video — the official tier of the resolution shown in the row (768P): by default our API call renders at that resolution or higher, and where the vendor has no matching tier the cheaper one is used, so the saving is understated, not overstated

Cost calculator

Pick a model and a volume — the calculator uses the same formulas as API billing.

per clip14.9 ₽ $0.166
per month · 10149 ₽ $1.66

Prices from GET /v1/models, internal exchange rate. Failed generations are not charged.

  1. Get a keyin the API dashboard
  2. Top up the walletin rubles: card, SBP or invoice
  3. Make the callPOST /v1/videos, model minimax‑3‑hailuo
First request

Connect the MiniMax Hailuo API: a key, one POST and a status poll

POST /v1/videos starts the render and returns the job id and price_rub right away; GET /v1/videos?id=… returns the status and the clip URL. If the render fails, the money goes back to the balance automatically.

Base URL
https://zerocoder.com/api/v1

Key — in the x-api-key or Authorization: Bearer header

Model in the samples — minimax-3-hailuo; any text‑to‑video or image‑to‑video model from the table works

import time, requests API = "https://zerocoder.com/api/v1"H = {"x-api-key": "zc-sk-…"} r = requests.post(f"{API}/videos", headers=H, json={    "model": "minimax-3-hailuo",    "prompt": "Drone shot over a foggy forest at dawn",    "seconds": 5,      # 4–10    "aspect": "16:9",  # image-to-video: "image": "https://…"})r.raise_for_status()job = r.json()  # status "queued", price_rub charged st = {}while st.get("status") not in ("completed", "failed"):    time.sleep(4)    r = requests.get(f"{API}/videos", headers=H,                     params={"id": job["id"]})    st = r.json() if r.ok else {}  # 502 → poll againprint(st)  # "url", or "refunded": true on failure
const API = "https://zerocoder.com/api/v1";const H = {  "x-api-key": "zc-sk-…",  "content-type": "application/json",}; const res = await fetch(`${API}/videos`, {  method: "POST", headers: H,  body: JSON.stringify({    model: "minimax-3-hailuo", seconds: 5, aspect: "16:9",    prompt: "Drone shot over a foggy forest at dawn",  }), // image-to-video: add image: "https://…"});const job = await res.json(); // "queued", price_rubif (!res.ok) throw new Error(job.error.message); const poll = `${API}/videos?id=${job.id}`;let st = {};while (st.status !== "completed" && st.status !== "failed") {  await new Promise((go) => setTimeout(go, 4000));  const r = await fetch(poll, { headers: H });  st = r.ok ? await r.json() : {}; // 502 → poll again}console.log(st); // url, or refunded: true
# 1) start the render: price_rub is charged up front,#    refunded if the render failscurl https://zerocoder.com/api/v1/videos \  -H "x-api-key: zc-sk-…" \  -H "content-type: application/json" \  -d '{"model": "minimax-3-hailuo", "seconds": 5,       "aspect": "16:9",       "prompt": "Drone shot over a foggy forest at dawn"}'# → {"id":"…","object":"video","status":"queued",#    "seconds":5,"price_rub":…,"balance_rub":…,#    "poll":"/api/v1/videos?id=…"}# image-to-video: add "image": "https://…/frame.jpg"
# 2) poll every few seconds: "completed" or "failed"curl "https://zerocoder.com/api/v1/videos?id=…" \  -H "x-api-key: zc-sk-…"# rendering → "status": "queued" | "running" | …# done      → "status": "completed", "url": "https://…"# failed    → "status": "failed", "refunded": true# HTTP 502 "Status check failed" → just poll again;#   a render that never finishes is refunded
// Live price comparisonminimax-3-hailuo · per clip
  • Zerocoder-58%$0.17
  • Official API$0.40

MiniMax list price (MiniMax-H3 (Hailuo 3), 768P), per-second price × 5 s (the API default); checked 4 October 2026

How to connect the MiniMax Hailuo API: first request in 5 minutes

From a key to production — six steps based on the real /api/v1 contracts. Each step links to the relevant docs section.

  1. 1

    Get a key in your account

    Sign up, open the API section of your account, top up the balance in rubles and create a zc-sk-… key. One key unlocks MiniMax Hailuo and every other model in the catalogue.

    Read more →
  2. 2

    Send the first request

    POST /v1/videos with model, prompt, seconds and aspect: the response carries the job id, status queued and price_rub — the amount is charged before the MiniMax Hailuo render starts.

    Read more →
  3. 3

    Poll the job status

    GET /v1/videos?id=… every few seconds until status is completed (url field) or failed (refunded: true — the money is already back on the balance). The file URL is temporary — download right away.

    Read more →
  4. 4

    Handle limits and errors

    30 requests per minute per key: on 429 wait and retry with a growing pause; 402 — top up the balance; 400 — check model against GET /v1/models. Failed generations are not charged, so retrying is safe.

    Read more →
  5. 5

    Watch the budget

    GET /v1/balance returns the balance and 30-day spend; every call's price comes back in the response — write it to your logs and set an alert threshold in your own monitoring.

    Read more →
  6. 6

    Ship to production

    Keep the key in server secrets, never in the frontend. For high MiniMax Hailuo volumes contact us — the limit is raised individually and companies can pay by invoice. Check the observed stability on the status page.

    Read more →

No code

Any tool that can make an HTTP request can call our API: one POST with the x-api-key header.
HTTP Requestn8n

HTTP Request node: POST to the /api/v1 endpoint, x-api-key header and a JSON body built from workflow fields. For video add a Wait node and a second HTTP Request on GET ?id= in a loop until completed.

HTTP → Make a requestMake

HTTP “Make a request” module: POST, Body type JSON, x-api-key header. The response is parsed automatically — the image url or the answer text flows into the next modules.

Webhooks by ZapierZapier

Webhooks by Zapier → Custom Request action: POST, Data — JSON with model and prompt, Headers — x-api-key. Response fields are available to the following Zap steps.

Apps ScriptGoogle Sheets

In Apps Script use UrlFetchApp.fetch with method post, contentType application/json and a payload from the cells: prompts in one column, results written to the next one.

any bot frameworkTelegram bot

A bot on aiogram, grammY or Telegraf calls the same HTTP API: user message → model request → reply in the chat. For video — poll the status and send the file from the finished URL.

OpenAI-compatible base URLPython / Node SDK

For text models the official OpenAI and Anthropic SDKs work with a swapped base URL and our key — your application code stays the same. Images and video are a plain HTTP call from any language.

For business

We'll help bring AI into your business

More than a key: we help wire MiniMax Hailuo and other models into your workflows — from audit to production, with invoice payment.

  • Process auditWe find where AI pays off in your workflows: support, sales, content, documents — and name specific scenarios and models.
  • Integration into CRM, website, Telegram, n8nWired through our API or ready no-code scenarios; one key and a shared balance for every model.
  • Ruble payment by invoiceCompanies get an invoice for bank transfer, accounting documents and a top-up of the API balance.
  • Support and limitsHelp with prompts and architecture, request limits raised individually for your load.

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 at the requested resolution (size / resolution), 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 back

Observed stability of the API and video generation

Numbers come from the public /status summary: the share of successful requests over a period for the whole API and for the category as a whole (the summary has no per-model breakdown), no SLA promises. Failed generations are not charged, so retrying is safe.

Developer APIoperational

—now (2 h window)
78.5%last 30 days
78.5%last 90 days

Video generationdegraded

—now (2 h window)
80%last 30 days
80%last 90 days

Refunds and charges

  • Charged up front by price_rub; a failed render is refunded automatically with refunded: true in the response
  • A job stuck in the queue over 30 minutes is refunded automatically
  • Status and file URL — in GET /v1/videos?id=

Tracking since Aug 6, 2026.

Use cases

1

A short-video app lets users turn a product photo into a moving teaser clip

2

A marketing team generates b-roll variations for ad creatives from text prompts

3

A chatbot answers with a short animated reply instead of a static image

4

An internal tool batch-generates preview clips for a game or app concept catalog

5

A social media scheduler auto-creates background video loops for posts

6

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

Ready-made prompts for MiniMax Hailuo

Copy the prompt and the parameters into the request body — the fields are named exactly as in the /api/v1 contract. Replace the angle-bracket placeholders with your material.

Character action scene

A knight in silver armor runs across a drawbridge as embers fall around him, dynamic tracking shot, dramatic lighting
seconds: 5aspect: 16:9

Anime style

Anime style: a girl with a red umbrella walks through a rainy neon street, reflections on wet pavement, slow pan
seconds: 5aspect: 9:16

Pet clip

A golden retriever puppy chases soap bubbles in a sunny backyard, slow motion, playful energy
seconds: 5aspect: 16:9

Travel B-roll

Handheld walk through a Moroccan spice market, colorful stalls, dust floating in sunlight, warm cinematic grade
seconds: 5aspect: 16:9

Who the MiniMax Hailuo API is for

Industries where this kind of generation becomes part of the workflow rather than an experiment.

E-commerce & marketplacesProduct video cards from catalogue photos — hundreds of SKUs without a shoot, MiniMax Hailuo through one key.
Media & socialVertical clips for Reels, Shorts and TikTok — on a schedule from text ideas.
Agencies & productionPreviz, storyboards and B-roll for clients in hours instead of days.
EdTechIllustrative clips for lessons and concepts explained in motion.
Real estate & autoBring listing photos to life: fly-throughs, turns, atmosphere.
SaaS & appsMiniMax Hailuo video generation inside your product — one key and a shared balance.

FAQ

How much does one MiniMax Hailuo API clip cost in rubles?

MiniMax Hailuo pricing depends on the version: Hailuo is billed per clip at a fixed price, per-second versions per second at the rate of the resolution (without size or resolution — 1080p or the nearest higher tier). The unit and prices of every row are in the table above and in GET /v1/models; the amount comes back in price_rub of the POST /v1/videos response before generation, with no hidden extras.

How do I launch the MiniMax Hailuo API from Python?

One POST to /v1/videos with the x-api-key header: the body has model with the Hailuo id from the table, prompt describing the character and the action, aspect and optionally image with a link to the start frame. The response carries a job id; poll GET /v1/videos every few seconds until the status is completed. The MiniMax Hailuo sample for Python, Node.js and the shell is above.

What are the MiniMax Hailuo API limits on format and rate?

A Hailuo clip in MiniMax Hailuo is a fixed-length video, while per-second versions take seconds from 4 to 10; the frame format is aspect 16:9, 9:16 or 1:1 or an explicit size, and the start image must be a public https URL. The shared key limit is 30 requests per minute across all endpoints; above it you get 429. A clip stuck in the queue for more than 30 minutes is refunded to the balance automatically.

How do I choose the MiniMax Hailuo model and specify its id?

Every MiniMax Hailuo version is a row in the table above with its own billing unit — per clip or per second by resolution; take the id from GET /v1/models and put it in the model field. New gateway versions appear in the table automatically and retired ones disappear from it — watch the list, not the vendor's news.

What happens if MiniMax Hailuo does not deliver the clip?

The MiniMax Hailuo clip price is charged at start but refunded to the API balance automatically when the provider fails — the job status will show refunded: true. The same applies to a job idle in the queue for more than 30 minutes. Only jobs that end with status completed and a video link are paid for.

Can a legal entity pay for the MiniMax Hailuo API by invoice?

Yes: a company requests an invoice in the API account, pays from the corporate account, and the amount is credited to the API balance — MiniMax Hailuo clips are generated with the same key. A Russian bank card works for an instant top-up, and accounting documents are issued on request. No foreign card or MiniMax account needed.

Can I try the MiniMax Hailuo API without paying?

There are no free clips in the API: the wallet starts with a minimum first top-up and every MiniMax Hailuo clip is charged at the table price. You can judge Hailuo's character animation for free in the Zerocoder studio and the “Create video” tool in the catalogue — then move the winning prompt into a /v1/videos request.

Can the MiniMax Hailuo API animate characters from an image?

Yes, that is the model's main strength: pass a link to an illustration or photo of the character, full-length or waist-up, in the image field and describe the emotion and gesture in the prompt — Hailuo brings the hero to life while keeping their look. One character and one action per clip give the steadiest result; name the style (“3D cartoon”, “watercolour”) at the start of the prompt.

AI API for your product

Up to -58% vs the official API · ruble billing, no VPN