# 母带优化
> 对已生成的歌曲做母带处理，异步任务
> 提升响度、清晰度与整体质感
> 按 `suno@remaster` 计费
`POST /v1/music/generations/remaster`
## 认证
- `Authorization` (string / 必填) — 所有接口均使用 Bearer Token 进行认证。 获取 API Key：[访问控制台](https://api.oairoute.com/keys) 创建。 请求时在请求头中添加： ```http Authorization: Bearer YOUR_OAIRoute_KEY ```
## 引用源音轨
- `task_id` (string / 必填) — 指定源音轨所在那次任务的 task_id。缺少或无法定位源音轨时，提交阶段即返回 400。
- `audio_index` (integer / 可选) — 选择源任务结果 `data.result.music[]` 中的第几首，默认 `1`。 一次生成通常返回 2 首，索引为 1 与 2。这个参数就是定位源音轨的依据，不需要额外 id。
## 请求参数
- `model` (string / 可选) — 音频模型，默认 `suno`，当前仅 `suno`。
- `variation_category` (string / 可选) — 改编强度，取值 `subtle`、`normal`、`high`。 - `subtle` 只做轻微的响度与均衡调整 - `normal` 常规母带处理 - `high` 改动明显，可能改变音色倾向
- `audio_format` (string / 可选) — 输出音频格式，取值 `mp3`、`m4a`、`wav`。
## 不支持的参数
`version`、`custom_model_id`、`max_mode`、`variety`、目标时长字段都不支持。这个端点没有版本维度。
## 响应
- `code` (integer) — 响应状态码。
- `data[].status` (string) — 提交成功时为 `submitted`。
- `data[].task_id` (string) — 任务唯一标识，用于轮询。
轮询用 `GET /v1/music/tasks/{task_id}`，间隔 3 到 5 秒，典型耗时 30 到 120 秒。`progress` 是 0 到 100 的整数，不保证按固定节点变化。完成后从 `data.result.music[].audio_url` 取优化后的音频地址。失败时 `data.error.message` 给出原因，同时自动退回预扣额度。
## 强度怎么选
| 强度 | 适用 | 风险 |
|---|---|---|
| `subtle` | 已经很满意，只想统一响度 | 几乎无风险 |
| `normal` | 默认选择，日常够用 | 轻微改变音色 |
| `high` | 原始音频偏闷或偏薄 | 可能把好听的细节也改掉 |
建议先用 `normal` 听一版。觉得变化不够再往 `high` 走，觉得改味了退回 `subtle`。
> **Note:** 
> 母带处理会重新编码，这是不可逆的。原始文件要留着，不要用母带版覆盖原件。反复对同一首做母带，画质会累积下降。
## 错误码
错误响应的格式、状态码与重试建议见[错误码与限流](../../../support/errors.html)，常见报错的排查步骤见[常见问题](../../../support/faq.html)。
## 使用示例
提交一个任务并拿到 `task_id`：
> **Note:** 
> 提交成功只表示任务已受理。真正的产物要拿返回的 `task_id` 去任务查询接口轮询，`status` 变成 `completed` 之后才有结果。
**母带优化{Remaster}::cURL**
```
curl --request POST \
  --url 'https://api.oairoute.com/v1/music/generations/remaster' \
  --header 'Authorization: Bearer YOUR_OAIRoute_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "suno",
    "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K",
    "audio_index": 1,
    "variation_category": "normal",
    "audio_format": "wav"
  }'
```
**母带优化{Remaster}::Python**
```
import requests
res = requests.post(
    "https://api.oairoute.com/v1/music/generations/remaster",
    headers={
        "Authorization": "Bearer YOUR_OAIRoute_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "suno",
        "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K",
        "audio_index": 1,
        "variation_category": "normal",
        "audio_format": "wav",
    },
)
print(res.json()["data"][0]["task_id"])
```
**母带优化{Remaster}::JavaScript**
```
const url = "https://api.oairoute.com/v1/music/generations/remaster";
const options = {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_OAIRoute_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "suno",
    "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K",
    "audio_index": 1,
    "variation_category": "normal",
    "audio_format": "wav"
  }),
};
fetch(url, options)
  .then((res) => res.json())
  .then((json) => console.log(json))
  .catch((err) => console.error(err));
```
**200 母带优化{Remaster}**
```
{
  "code": 200,
  "data": [
    { "status": "submitted", "task_id": "task_01K8C88M0HP1GJWBJYZMKX1XS1" }
  ]
}
```
