# MiniMax Music 3 API

> Bài hát hoàn chỉnh có giọng hát từ lời bài hát và mô tả phong cách của bạn, tối đa 5 phút.

MiniMax Music 3 hát lời của bạn trên một bản phối hoàn chỉnh. Mô tả thể loại, nhịp độ, giọng, tâm trạng, giọng hát và nhạc cụ trong lời nhắc, đồng thời đánh dấu cấu trúc bài hát trong lời bằng các thẻ như [verse], [chorus] và [bridge], mỗi thẻ trên một dòng riêng. Thời lượng (1 đến 300 giây, mặc định 60) là giới hạn trên; bài hát có thể kết thúc sớm hơn.

- Model id: `minimax/music-3`
- Made by: MiniMax
- Category: Text to Music
- Output: audio
- Price: $0.002 / second (60 s ≈ $0.12) (cheapest run $0.12 (120 API credits))
- Run: `POST https://api.doitong.com/v1/run/minimax/music-3`
- Quote: `POST https://api.doitong.com/v1/quote/minimax/music-3`
- Docs page: https://doitong.com/vi/developers/models/minimax/music-3

## Pricing

Price: **$0.002 / second (60 s ≈ $0.12)**. Billed per second of output (`duration`, default 60).

The full example input below costs $0.06 = 60 API credits (30 s × 2 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/minimax/music-3` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | Lời nhắc tạo nhạc có thể dùng Structured Caption để kiểm soát chính xác: kết hợp thông tin phối khí và giọng hát theo từng phần với siêu dữ liệu toàn cục chỉ định thể loại, BPM, giọng và diễn tiến cảm xúc. Mô tả chung bao quát phong cách và tâm trạng mong muốn, cách sử dụng giọng hát và nhạc cụ, cùng phần phối khí. |
| `lyrics` |  | string | yes |  |  | Lời bài hát sẽ được hát; mọi từ nằm cùng dòng với thẻ cấu trúc đứng đầu sẽ bị loại bỏ theo hợp đồng đầu vào của mô hình. Giữ mỗi thẻ trên một dòng riêng, bao gồm [intro], [verse], [pre-chorus], [chorus], [post-chorus], [bridge], [instrumental], [solo] và [outro]. |
| `duration` |  | number | no | `60` | 1 – 300 | Giới hạn thời lượng âm thanh, đo bằng giây, không phải thời lượng đầu ra được đảm bảo. Phản hồi báo cáo thời lượng thực tế, có thể ngắn hơn nếu tạo sinh dừng sớm. |
| `seed` |  | integer \| null | no |  |  | Seed để tạo sinh có thể tái lập, được chọn ngẫu nhiên trừ khi bạn cung cấp giá trị. |
| `num_inference_steps` |  | integer | no | `30` | 1 – 100 | Số bước Euler cho flow matching trong mỗi đoạn khử nhiễu 8 giây. |
| `guidance_scale` |  | number | no | `1.7` | 0 – 20 | Cường độ hướng dẫn không bộ phân loại trong quá trình flow matching. |

## Example input

Required parameters only:

```json
{
  "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
  "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe"
}
```

A fuller example:

```json
{
  "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
  "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe",
  "duration": 30
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/minimax/music-3?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
    "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe",
    "duration": 30
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/minimax/music-3?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
    "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe",
    "duration": 30
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
    "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe",
    "duration": 30,
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/minimax/music-3", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.com/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "minimax/music-3",
      "input": {
        "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
        "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe",
        "duration": 30
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "minimax/music-3",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 60,
    "usd": "0.06",
    "charged": 60,
    "refunded": 0
  },
  "input": {
    "prompt": "Genre: acoustic pop. BPM: 96. Key: C major. Warm and intimate, soft female vocal, guitar and light piano",
    "lyrics": "[verse]\nMorning light filtering through the pine\nEvery quiet street is yours and mine\n[chorus]\nSoftly the world begins to breathe",
    "duration": 30
  },
  "output": {
    "audio": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_name": "0-output.mp3",
      "file_size": 1843200
    },
    "seed": 42,
    "duration": 5
  },
  "outputs": [
    {
      "type": "audio",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_size": 1843200,
      "duration": 12,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `audio` | object {url, content_type, file_name, file_size} | Tệp âm thanh đầu ra ở định dạng WAV stereo, sử dụng 44.1 kHz và mẫu 16-bit. |
| `seed` | integer | Seed ngẫu nhiên được sử dụng trong quá trình tạo sinh. |
| `duration` | number | Báo cáo số giây âm thanh thực tế đã được tạo, không nhất thiết dài bằng thời lượng yêu cầu. |

## Related models

- [MiniMax (Hailuo AI) Music](https://doitong.com/developers/models/minimax-music.md) (`minimax-music`): $0.035 / request
- [MiniMax (Hailuo AI) Music v1.5](https://doitong.com/developers/models/minimax-music/v1.5.md) (`minimax-music/v1.5`): $0.03 / request
- [Minimax Music](https://doitong.com/developers/models/minimax-music/v2.md) (`minimax-music/v2`): $0.03 / request
- [Minimax Music 2.5](https://doitong.com/developers/models/minimax-music/v2.5.md) (`minimax-music/v2.5`): $0.15 / request
- [Minimax Music 2.6](https://doitong.com/developers/models/minimax-music/v2.6.md) (`minimax-music/v2.6`): $0.15 / request
- [ACE Step](https://doitong.com/developers/models/ace-step.md) (`ace-step`): $0.0002 / second
- [ACE Step Audio Inpaint](https://doitong.com/developers/models/ace-step/audio-inpaint.md) (`ace-step/audio-inpaint`): $0.0002 / second of input audio
- [ACE Step Audio Outpaint](https://doitong.com/developers/models/ace-step/audio-outpaint.md) (`ace-step/audio-outpaint`): $0.0002 / second of output audio

## Links

- HTML page: https://doitong.com/developers/models/minimax/music-3
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=minimax/music-3
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/minimax/music-3
