Miavo
All models
Minimax
MiniMax · video

MiniMax Hailuo 2.3

minimax-hailuo-2.3

Latest Hailuo text-to-video. Billed in units; ~$0.04/s @768p.

Pricing

per second$0.04
Async
Yes — operations polling
Provider
Minimax
MiniMax

Capabilities

Chat completions

Multi-turn dialogue, system prompts.

Streaming

SSE chunks for incremental output.

Tool / function calling

Structured arguments via JSON schemas.

Image input

Pass images alongside the prompt.

Video generation

Text and image to short video, async.

JSON mode

Coming soon.

Make your first call.

Drop your sk-maas-… key in and you're done.

video.ts
// Start a generation
const start = await fetch('https://api.miavo.xyz/v1/videos/generations', {
  method: 'POST',
  headers: {
    authorization: `Bearer ${process.env.MACAW_API_KEY}`,
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    model: 'minimax-hailuo-2.3',
    prompt: 'A close-up of raindrops on a window, soft focus, slow motion.',
    aspect_ratio: '16:9',
    duration_seconds: 8,
  }),
}).then(r => r.json());

// Poll until done — usually 1–3 minutes
let task = start;
while (task.status === 'pending' || task.status === 'running') {
  await new Promise(r => setTimeout(r, 5000));
  task = await fetch(`https://api.miavo.xyz/v1/videos/generations/${start.id}`, {
    headers: { authorization: `Bearer ${process.env.MACAW_API_KEY}` },
  }).then(r => r.json());
}

if (task.status === 'succeeded') {
  // Download the file
  const video = await fetch(`https://api.miavo.xyz${task.video_url}`, {
    headers: { authorization: `Bearer ${process.env.MACAW_API_KEY}` },
  });
  // → pipe video.body to disk or play in a <video> tag
}

More from MiniMax