MiniMax Music 3
통합
모델 id
minimax/music-3
# 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": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"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"
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": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"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 + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"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"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/ko/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "minimax/music-3",
"input": {
"prompt": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"duration": 30
}
}
Doitong API를 통해 MiniMax Music 3 모델(minimax/music-3)을 호출합니다. 에이전트용 문서: https://doitong.com/ko/developers/models/minimax/music-3.md
POST https://api.doitong.com/v1/run/minimax/music-3?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"prompt": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"duration": 30
}
응답 상태가 "queued" 또는 "running"이면 "succeeded"가 될 때까지 GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20을 폴링하세요. 파일은 outputs[].url에 있습니다. POST https://api.doitong.com/v1/quote/minimax/music-3에 동일한 본문을 보내면 실행 전에 정확한 가격을 반환합니다.
이 요청: $0.06 60 API 크레딧 이 페이지에서 실행
새 API 키입니다. 지금만 표시되며 이미 아래 코드와 API 키 필드에 입력되어 있습니다. 안전하게 보관하세요. 브라우저에서 실행되는 코드에 절대 넣지 마세요.
예시
요청 만들기
컨트롤은 모델 스키마에서 생성됩니다. 값을 변경하면 코드와 가격이 업데이트됩니다.
POST
/run/minimax/music-3?wait=20
견적 → $0.06
# 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": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"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"
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": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"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 + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"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"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "minimax/music-3",
"input": {
"prompt": "Warm indie folk, acoustic guitar and soft brushed drums, gentle female vocal, 92 BPM, nostalgic summer evening",
"lyrics": "[verse]\nPorch lights humming on the edge of town\nWe count the fireflies as the sun goes down\n[chorus]\nStay a little longer, the night is young\nSing me the song that we never sung",
"duration": 30
},
"wait_seconds": 20
}
}
}
MiniMax Music 3 정보
MiniMax Music 3는 완성된 편곡에 가사를 얹어 노래합니다. 프롬프트에 장르, 템포, 조성, 분위기, 보컬 및 악기를 설명하고, [verse], [chorus], [bridge] 같은 태그를 사용해 가사에 곡 구조를 표시하세요. 각 태그는 자체 줄에 작성해야 합니다. 지속 시간(1~300초, 기본값 60)은 상한이며 곡이 더 일찍 끝날 수 있습니다.
매개변수
이름유형
기본값허용됨
설명
prompt필수
유형string
정밀한 제어를 위해 Structured Caption을 사용할 수 있는 음악 생성 프롬프트입니다. 섹션별 편곡 및 보컬 세부 정보와 장르, BPM, 키, 감정 진행을 지정하는 전역 메타데이터를 결합합니다. 일반 설명에는 원하는 스타일과 분위기, 보컬과 악기 사용 방식, 편곡을 포함합니다.
lyrics필수
유형string
부를 가사입니다. 앞에 구조 태그가 있는 줄에 함께 작성된 단어는 모델 입력 계약에 따라 삭제됩니다. [intro], [verse], [pre-chorus], [chorus], [post-chorus], [bridge], [instrumental], [solo], [outro]를 포함한 각 태그를 별도 줄에 작성하세요.
duration선택 사항
유형number
기본값60
1 – 300
출력 길이를 보장하지 않는 오디오 길이 제한이며, 초 단위로 측정됩니다. 응답에는 실제 길이가 보고되며, 생성이 일찍 중단되면 더 짧을 수 있습니다.
seed선택 사항
유형integer | null
재현 가능한 생성을 위한 시드입니다. 값을 제공하지 않으면 무작위로 선택됩니다.
num_inference_steps선택 사항
유형integer
기본값30
1 – 100
각 8초 디노이징 청크의 플로 매칭을 위한 Euler 단계 수입니다.
guidance_scale선택 사항
유형number
기본값1.7
0 – 20
플로 매칭 중 분류기 없는 가이던스 강도입니다.
필수
출력
GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
"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"
}
}
파일 보관 방식 선택모든 outputs[].url은 스토리지에 저장된 복사본입니다. 계정 설정 또는 ?storage=에 따라 영구 보관(GB-월 단위 과금)하거나 7일 동안 무료로 보관합니다.
모든 모델에서 동일한 구조이미지, 동영상, 오디오 모두 type, url, content_type, width, height 및 duration을 사용합니다. output은 모델 자체의 결과 객체입니다.
출력 필드
- audio
- object {url, content_type, file_name, file_size}44.1 kHz 및 16비트 샘플을 사용하는 스테레오 WAV 형식의 출력 오디오 파일입니다.
- seed
- integer생성에 사용된 무작위 시드입니다.
- duration
- number실제로 생성된 오디오의 초 수를 보고합니다. 요청한 길이와 반드시 같지는 않습니다.
다른 MiniMax Music 변형
더 많은 모델: 텍스트를 음악으로
AI 에이전트용: 이 페이지의 Markdown 버전: https://doitong.com/ko/developers/models/minimax/music-3.md. 모든 모델 및 가이드: https://doitong.com/developers/llms.txt