altrouter.ai
Models/MiniMax/Hailuo 2.3
HL

MiniMax: Hailuo 2.3

Videohailuo-2.3

MiniMax Hailuo 2.3: image-to-video with lifelike motion, facial expression and lighting.

API docs
Playgroundhailuo-2.3
Reference image
duration
Resolution
Latency9.7 s
24hnow
Specifications
Authorminimax
ModalityVideo
Price$0.037 / second$0.047 / second
Savings20%
ReleasedJul 23, 2026
Quick start
# Video is asynchronous: create, then poll.
curl https://api.altrouter.ai/v1/videos \
  -H "Authorization: Bearer ar-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "hailuo-2.3",
    "prompt": "a drone shot over a coastline"
  }'
# → { "id": "vid_...", "status": "queued" }

curl https://api.altrouter.ai/v1/videos/vid_... \
  -H "Authorization: Bearer ar-..."
# → { "status": "completed", "url": "https://api.altrouter.ai/media/videos/..." }

Same OpenAI-compatible endpoint — just swap base_url and key.

API

An asynchronous endpoint: the call returns immediately in queued, and you poll GET /v1/videos/{id} for the result. The finished mp4 is re-hosted on our CDN, and only a completed render is charged.

POST/v1/videos
Body parameters
modelstringrequired"hailuo-2.3"
The model id.
promptstringrequired
The text description of the scene.
secondsinteger
Clip length; `duration` is accepted as an alias.
imagestringURL or base64
A reference frame — its presence routes to the model’s image-to-video variant.
durationenum6 · 10default 6
Clip length in seconds (affects price).
resolutionenum768P · 1080Pdefault 768P
Resolution tier (affects price).
Response

The same object comes back from GET /v1/videos/{id}; the finished file is also served directly from GET /v1/videos/{id}/content.

idstring
The render id (vid_…) — this is what you poll.
statusenumqueued · in_progress · completed · failed
The state of the render.
urlstring
The finished mp4 on our CDN — appears at status: completed.
secondsinteger
The clip length the price was computed on.
errorobject
Why it failed at status: failed: { code, message }.
Example
cURLPythonJSON
curl https://api.altrouter.ai/v1/videos \
  -H "Authorization: Bearer ar-..." \
  -H "Content-Type: application/json" \
  -d '{
  "model": "hailuo-2.3",
  "prompt": "a drone shot over a rocky coastline at sunrise",
  "duration": "6",
  "resolution": "768P"
}'
Errors
400Invalid request.
401Missing or invalid API key.
402Insufficient credits, or the key’s spending cap is exhausted.
404Model not found.
429Rate limit exceeded.