Hailuo 02
Live on the APIhailuo-02$0.013/s$0.01667-22%
- Input → output
- Text promptImageVideo
- Lengths
- 6–10 s
- Quality
- 480p · 720p · 1080p
Hailuo 02
MiniMax
Input
promptWhat happens in the clip.imageThe first frame, as a public https link.
09389f4f-cd67-4172-b2a2-fb2998ec858e_example.jpg
qualitydurationThe frame shape follows your start image.
22% below official $0.10 · 480p × 6 s-22% vs official
Hailuo 02 API prices
Every tier we sell, next to the model maker's official price.
| Tier | Opennan | Official |
|---|---|---|
| 480p, Standard | $0.013/s$0.078 for 6 s | $0.01667/s22% below |
| 720p, Standard | $0.0325/s$0.195 for 6 s | $0.04667/s30% below |
| 1080p, Standard | $0.06175/s$0.3705 for 6 s | $0.08167/s24% below |
Official is the model maker's own list price for the same tier. Where the maker publishes a price, we never sell above it, most tiers at least 10% below.
Call Hailuo 02 from your code
Everything for your first call is on this page: the endpoint, a key, the request and every parameter.
https:/ / api.opennan.com/ v1/ videos/ generationsGet an API key
Create a key in the console. It uses the same balance as the playground.
Create a keySend your first request
The same request the playground sends. Set OPENNAN_KEY to your key.
curl https://api.opennan.com/v1/videos/generations \ -H "Authorization: Bearer $OPENNAN_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"hailuo-02","prompt":"Rain on a neon street at night, slow push-in","duration":6,"quality":"720p","aspect_ratio":"16:9"}' # Then poll until "status" is "succeeded" or "failed": curl https://api.opennan.com/v1/tasks/<task id> -H "Authorization: Bearer $OPENNAN_KEY"Poll the task
The call answers right away with a task id. Ask for the task until it finishes:
GEThttps:// api.opennan.com/ v1/ tasks/ {id} - queued
- Waiting for a worker
- running
- Being made
- succeeded
- Done: outputs[].url holds the files
- failed
- Failed: you are not charged
Parameters
Built from the live catalog: every value listed here is one the API accepts.
Errors and how to fix them
401Missing or wrong key
Send the header Authorization: Bearer with a key from the console.
402Balance too low
Add credit in Billing, then send the same call again.
400A value is not accepted
Read error.message: it names the field. Use a value from the parameter table.
429Too many requests
Wait a few seconds and try again, waiting longer after each 429.
Add Opennan to your AI app
One install gives your AI every Opennan tool: video, images, chat, voice, music, sound effects, 3D, captions and dubbing. Pick your app and follow the steps.
https:/ / api.opennan.com/ v1/ mcpWorks in the Codex CLI, the Codex app and the Codex IDE extension: they share ~/.codex/config.toml. If the app or IDE does not see OPENNAN_KEY, use the config.toml option with your key in it. Codex asks before each tool call: approve it to go on.
Get an API key
Create a key in the console. It starts with sk- and uses the same balance as the website.
Create a keySave your key as OPENNAN_KEY
# macOS / Linux (zsh shown; bash: ~/.bashrc) echo 'export OPENNAN_KEY="sk-..."' >> ~/.zshrc source ~/.zshrc # Windows (PowerShell), then open a new terminal setx OPENNAN_KEY "sk-..."Install the Opennan plugin: the server plus a skill that teaches your AI to pick models, confirm prices and wait for results
codex plugin marketplace add Opennan/opennan-ai-plugin codex plugin add opennan@opennanOr add only the server
codex mcp add opennan --url https://api.opennan.com/v1/mcp --bearer-token-env-var OPENNAN_KEYOr add this to ~/.codex/config.toml
[mcp_servers.opennan] url = "https://api.opennan.com/v1/mcp" http_headers = { Authorization = "Bearer sk-..." }Check that opennan is listed
codex mcp listRestart Codex, then ask for anything
“Make a 5 second video of rain on a neon street, a song to go with it and a poster image.”
Replace sk-... with your own key and keep it private: anyone who has it can spend your balance. Your app can list the tools before you add a key; making anything needs one.
This tool from your AI
Once Opennan is added, your AI calls this tool with arguments like these.
- Tool
- generate_video
- Example arguments
{ "model": "hailuo-02", "prompt": "Rain on a neon street at night, slow push-in", "duration": 6 }
Hailuo 02 API questions
How much does the Hailuo 02 API cost?
Hailuo 02 API on Opennan: $0.013/s at 480p, 22% below MiniMax's official $0.01667/s. Prices are in US dollars per call, shown before you run, and every tier is in the price table.
How does that compare with the official price?
MiniMax lists $0.01667/s; Opennan charges $0.013/s, 22% below. We only sell a tier below the maker's official price, most tiers at least 10% below.
What inputs does Hailuo 02 take?
Text prompt, Image.
Which options can a call set?
Lengths: 6, 10 seconds. Resolutions: 480p, 720p, 1080p. Aspect ratios: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21.
How is it billed?
Per video: the price depends on resolution, length and sound, and is shown before the call.
What happens if a generation fails?
A failed task is refunded in full. You pay only for results.
How do I call Hailuo 02 from an AI agent?
Add the MCP server https://api.opennan.com/v1/mcp with your API key as a bearer token, then call the generate_video tool with model "hailuo-02". Or send a POST to https://api.opennan.com/v1/videos/generations.
Similar models
Video models you can call with the same key.




