# MiniMax H3 · API guide

Use the exact API model ID `minimax-h3`. This guide describes the platform contract; check the live catalog before calling the model.

## Request example

The platform origin is filled in at build time. Set API_KEY to your server-side key before running.

```bash
curl "https://newrouters.com/v1/tasks" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $API_KEY" \
  --data '{
  "model": "minimax-h3",
  "input": {
    "seconds": 5,
    "resolution": "480P",
    "aspect_ratio": "16:9",
    "aigc_watermark": false,
    "prompt": "A small red house in a quiet garden"
  }
}'
```

## Retrieve the result

The creation response accepts a task, not the final output. Replace TASK_ID with its returned ID and poll until succeeded or failed.

```bash
curl "https://newrouters.com/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer $API_KEY"
```

Read result on success and error on failure. Keep the original task ID when the upstream outcome is unknown; do not submit a duplicate paid generation.

## Parameters

| Field | Type | Requirement | Default | Constraints |
| --- | --- | --- | --- | --- |
| `audios` | array | Optional | — | max items 3 |
| `images` | array | Optional | — | max items 9 |
| `prompt` | string | Required | — | max length 7000 |
| `videos` | array | Optional | — | max items 3 |
| `seconds` | integer | Optional | `5` | min 4; max 15 |
| `resolution` | enum | Optional | `"480P"` | `480P`, `768P`, `2K` |
| `aspect_ratio` | enum | Optional | `"16:9"` | `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16` |
| `frames_images` | array | Optional | — | max items 2 |
| `aigc_watermark` | boolean | Optional | `false` | — |








<!-- official-reference:start -->
## Official sources and identity

Checked: 2026-09-27 · Platform model: `minimax-h3` · Official reference: `MiniMax-H3`

- [MiniMax-H3 official reference](https://platform.minimax.cn/docs/api-reference/video-generation-v2-create)
- [fal H3 Max image-to-video supply variant](https://fal.ai/models/minimax/h3-max/image-to-video/api)
<!-- official-reference:end -->

## Pricing and troubleshooting

Check current availability, contract and account pricing before integration. Keep request IDs and usage receipts when diagnosing errors. [Complete API reference](/docs/api)

## Request examples in other languages

### JavaScript

```javascript
const apiBaseUrl = "https://newrouters.com";
const apiKey = process.env.API_KEY;
if (!apiKey) throw new Error("Set API_KEY in your server environment");

const response = await fetch(apiBaseUrl + "/v1/tasks", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + apiKey
  },
  body: JSON.stringify({
  "model": "minimax-h3",
  "input": {
    "seconds": 5,
    "resolution": "480P",
    "aspect_ratio": "16:9",
    "aigc_watermark": false,
    "prompt": "A small red house in a quiet garden"
  }
})
});

const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result));
console.log(result);
```

### Python

```python
import json
import os
from urllib.request import Request, urlopen

api_base_url = "https://newrouters.com"
api_key = os.environ["API_KEY"]
body = json.loads("{\"model\":\"minimax-h3\",\"input\":{\"seconds\":5,\"resolution\":\"480P\",\"aspect_ratio\":\"16:9\",\"aigc_watermark\":false,\"prompt\":\"A small red house in a quiet garden\"}}")

request = Request(
    api_base_url + "/v1/tasks",
    data=json.dumps(body).encode("utf-8"),
    headers={
    "Content-Type": "application/json",
    "Authorization": "Bearer " + api_key
    },
    method="POST",
)
with urlopen(request) as response:
    print(json.load(response))
```

## Response fields (illustrative values)

### HTTP 202

```json
{
  "id": "TASK_ID",
  "status": "pending",
  "model": "minimax-h3",
  "result": null,
  "error": null
}
```

### HTTP 200

```json
{
  "id": "TASK_ID",
  "status": "succeeded",
  "model": "minimax-h3",
  "result": {
    "assets": [
      "https://example.com/output.mp4"
    ]
  },
  "error": null
}
```


