音色创建、歌曲生成与永久删除 API

更新于 2026-09-15 · Suno-API 团队

对客发布版 · 2026-11-09

本文覆盖当前两种可用的人声音色链路:

  • 推荐音色(voice-profile):适合新接入,支持创建音色、用音色翻唱歌曲、用音色唱新歌和永久删除。
  • 传统克隆人声(persona):兼容早期 voice_task_id / generate-with-voice 链路,继续支持创建、生成和永久删除。

两种音色都支持永久删除。删除后,原音色 ID 不会恢复,也不能再次用于任何新的生成任务。


0. 先选择正确的音色链路

项目 推荐音色 voice-profile 传统克隆人声 persona
推荐程度 推荐新接入 仅用于已接入系统的兼容维护
主要 ID voice_id,通常以 vp_ 开头 voice_task_id(整数)和 voice_id(UUID)
创建接口 /api/music/voice-profile/* /api/voice/clone/*
生成接口 POST /api/music/voice-profile/cover POST /api/music/generate-with-voice
适合场景 用一段人声样本翻唱歌曲、唱新歌 早期“校验文本 + 二次录音验证 + persona”流程
删除接口 POST /api/music/voice-profile/delete DELETE /api/voice/clone/voices/{voice_task_id}
删除是否永久 是 是

选择原则:


1. 通用约定

1.1 Base URL

生产环境:

https://www.suno-api.io

测试环境:

https://test.suno-api.io

下文只写路径。调用生产环境时,在路径前加上生产 Base URL。

1.2 鉴权

所有客户 API 请求都需要 API Key:

Authorization: Bearer sk-xxxxxxxx
Content-Type: application/json

部分客户系统会额外携带:

New-Api-User: <你的用户 ID>

以控制台或接口文档要求的鉴权头为准。不要在前端代码、日志或公开仓库中暴露 API Key。

1.3 两种响应外壳

音色管理接口通常使用业务外壳:

{
  "success": true,
  "message": "",
  "data": {}
}

生成类接口可能使用生成外壳:

{
  "code": 200,
  "message": "success",
  "data": {}
}

失败时也可能是:

{
  "error": {
    "message": "错误说明",
    "type": "invalid_request_error",
    "code": "voice_deleted"
  }
}

客户端不要只判断 HTTP 200。建议按以下顺序判断:

1. 读取 HTTP 状态码。
2. 解析 JSON。
3. 如果 code == "voice_deleted",停止重试并提示用户重新创建音色。
4. 如果 success == false,按 message 处理。
5. 如果存在 error 对象,按 error.code / error.message 处理。
6. 生成接口只有 code == 200 或 HTTP 202 才是已受理。

1.4 时间字段

不同接口的时间字段可能是:

请按相应接口的字段说明解析,不要假设所有接口都使用毫秒时间戳。

1.5 幂等与重试

场景 推荐做法
创建推荐音色 使用 client_request_id;超时重试时复用同一个值
从已有音频创建推荐音色 使用 client_request_id;同一 clip 重复提交会复用未删除音色
传统人声创建 保存 voice_task_id;轮询原任务,不重复创建新任务
generate-with-voice 使用 Idempotency-Key 请求头
推荐音色翻唱 使用 X-Create-Ui-Client-Request-Id 跟踪;提交超时先查询是否已经产生任务
删除 可以安全重复调用;重复删除返回 already_deleted: true

1.6 生成提交成功不等于歌曲完成

生成接口返回成功只表示任务已被受理。歌曲必须轮询到:

status = completed

才能下载成品。


2. 音色生命周期

推荐音色的典型状态:

创建成功 → ready → 用于生成 → completed
              ↘ failed
              ↘ deleted(永久删除)

传统克隆人声的典型状态:

voice_task_id 创建 → 校验文本就绪 → 验证音频生成
→ is_available=true → 用于生成 → completed
                              ↘ deleted(永久删除)

核心规则:


3. 推荐音色:完整接口

3.1 五分钟调用流程

① 创建音色
   POST /api/music/voice-profile/create
   → 得到 voice_id

② 确认音色就绪
   GET /api/music/voice-profile/{voice_id}
   → status=ready

③ 提交生成
   POST /api/music/voice-profile/cover
   → 得到 2 个 song_id

④ 查询歌曲
   POST /api/music/query
   → status=completed

⑤ 下载歌曲
   GET /api/music/download?song_id=...&kind=mp3

普通音色创建通常直接返回 status=ready。强化克隆会先返回 processing,必须轮询到 ready。

3.2 创建推荐音色

POST /api/music/voice-profile/create

方式 A:multipart 上传文件,推荐

curl -sS -X POST "https://www.suno-api.io/api/music/voice-profile/create" \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@./my-voice.mp3;type=audio/mpeg" \
  -F "file_name=my-voice.mp3" \
  -F "source_file_name=my-voice.mp3" \
  -F "title=我的音色" \
  -F "source_kind=upload" \
  -F "client_request_id=voice-create-$(date +%s)"

方式 B:JSON + HTTPS 公网音频地址

curl -sS -X POST "https://www.suno-api.io/api/music/voice-profile/create" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_url": "https://your-cdn.example.com/voice/my-voice.mp3",
    "file_name": "my-voice.mp3",
    "title": "我的音色",
    "client_request_id": "voice-create-url-001"
  }'

方式 C:JSON + base64

{
  "file_base64": "data:audio/mpeg;base64,//uQxAAA...",
  "file_name": "my-voice.mp3",
  "title": "我的音色",
  "client_request_id": "voice-create-b64-001"
}

音频要求

项目 要求
时长 至少 6 秒,建议 10–60 秒
体积 对客建议 ≤ 10MB
格式 mp3 / wav / m4a / aac / flac / ogg
内容 清晰、干净人声;避免带伴奏原曲、翻唱成品或与曲库高度相似的音频

成功响应

{
  "success": true,
  "message": "",
  "data": {
    "voice_id": "vp_202611091105035682097001X0DEG",
    "clip_id": "38ea6309-7fce-422a-b50d-cedddd69cfa2",
    "song_id": "38ea6309-7fce-422a-b50d-cedddd69cfa2",
    "title": "我的音色",
    "source_file_name": "my-voice.mp3",
    "audio_url": "https://...",
    "image_url": "https://...",
    "duration_s": 30.2,
    "enhanced": false,
    "source_kind": "upload",
    "status": "ready",
    "created_at": 1794222100,
    "updated_at": 1794222120
  }
}

重要字段:

字段 说明
voice_id 后续翻唱和删除使用的主 ID
status ready 才能生成
clip_id / song_id 音色样本对应的音频 ID,可用于兼容旧参数
audio_url 音色样本试听地址
error_message 失败时返回

强化克隆

在 multipart 请求中加入:

enhanced=true

行为:

3.3 用已有音频创建推荐音色

POST /api/music/voice-profile/create-from-clip
curl -sS -X POST "https://www.suno-api.io/api/music/voice-profile/create-from-clip" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_song_id": "38ea6309-7fce-422a-b50d-cedddd69cfa2",
    "title": "已有音频音色",
    "client_request_id": "voice-from-clip-001"
  }'

字段:

字段 必填 说明
source_song_id 是 你名下已完成且可作为音色素材的音频 ID
title 否 音色名称
client_request_id 否 幂等键

规则:

成功响应在普通音色对象上增加:

{
  "success": true,
  "data": {
    "voice_id": "vp_...",
    "status": "ready",
    "reused": false,
    "source_type": "generate"
  }
}

3.4 查询推荐音色

列表

GET /api/music/voice-profile/list
curl -sS "https://www.suno-api.io/api/music/voice-profile/list" \
  -H "Authorization: Bearer $API_KEY"

默认只返回当前账号未删除的音色。

{
  "success": true,
  "data": {
    "items": [],
    "total": 0
  }
}

详情

GET /api/music/voice-profile/{voice_id}
curl -sS "https://www.suno-api.io/api/music/voice-profile/vp_xxx" \
  -H "Authorization: Bearer $API_KEY"

强化克隆处理中会额外返回:

{
  "progress_percent": 60,
  "progress_stage": "media_preparing",
  "progress_message": "正在准备音频"
}

已删除音色详情可能返回:

{
  "success": false,
  "message": "voice not found"
}

3.5 使用推荐音色生成

POST /api/music/voice-profile/cover

一次提交固定生成 2 首。

场景 A:用音色翻唱已有歌曲

传入 song_clip_id:

curl -sS -X POST "https://www.suno-api.io/api/music/voice-profile/cover" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Create-Ui-Client-Request-Id: cover-$(date +%s)" \
  -d '{
    "model": "suno-v6",
    "voice_id": "vp_xxx",
    "song_clip_id": "38ea6309-7fce-422a-b50d-cedddd69cfa2",
    "lyrics": "[Verse 1]\n歌词正文...",
    "cover_requirements": "咬字清晰,保留原曲节奏",
    "style_requirements": "慢速民谣,木吉他",
    "audio_weight": 0.85,
    "max_mode": false
  }'

场景 B:用音色唱新歌

不传 song_clip_id:

curl -sS -X POST "https://www.suno-api.io/api/music/voice-profile/cover" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Create-Ui-Client-Request-Id: sing-$(date +%s)" \
  -d '{
    "model": "suno-v6",
    "voice_id": "vp_xxx",
    "lyrics": "[Verse 1]\n这是一段歌词\n\n[Chorus]\n用我的音色唱出来",
    "style_requirements": "温暖流行,中速,木吉他",
    "title": "用我的音色唱新歌",
    "audio_weight": 0.85,
    "duration": 120,
    "variety": 2
  }'

主要字段

字段 必填 说明
model 是 推荐 suno-v6;可选 suno-v6-wild、suno-v6-mini
voice_id 二选一 推荐音色 ID;必须 ready
voice_clip_id 二选一 兼容音色素材 clip ID;新接入优先用 voice_id
song_clip_id 否 传入 = 翻唱指定歌曲;不传 = 唱新歌
lyrics 否 歌词全文;要唱指定内容时请传入
cover_requirements 否 翻唱要求
style_requirements 否 风格要求
title 否 成品标题
negative_tags 否 排除风格
vocal_gender 否 m / male / f / female
duration 否 期望秒数,1–480 的整数;平台实际最短约 30 秒
audio_weight 否 音频参考度,0–1 小数,默认通常为 0.85
style_weight 否 风格权重,0–1 小数
weirdness_constraint 否 创意度,0–1 小数
variety 否 多样性,0–4 整数
max_mode 否 true 时价格 ×2
client_request_id 否 任务追踪标识;不做请求去重

量纲不要混用:

audio_weight / style_weight / weirdness_constraint = 0.0–1.0
variety = 0–4 整数
duration = 秒

成功响应

{
  "code": 200,
  "message": "success",
  "data": {
    "voice_id": "vp_xxx",
    "resolved_scene": "cover",
    "model": "suno-v6",
    "clips": [
      {
        "song_id": "song-a",
        "status": "processing",
        "audio_url": "",
        "play_url": "https://..."
      },
      {
        "song_id": "song-b",
        "status": "processing",
        "audio_url": ""
      }
    ]
  }
}

保存两个 clips[].song_id,继续查询到 completed。

3.6 永久删除推荐音色

POST /api/music/voice-profile/delete
Content-Type: application/json
curl -sS -X POST "https://www.suno-api.io/api/music/voice-profile/delete" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"voice_id":"vp_xxx"}'

首次删除:

{
  "success": true,
  "message": "",
  "data": {
    "voice_id": "vp_xxx",
    "status": "deleted",
    "already_deleted": false
  }
}

重复删除:

{
  "success": true,
  "message": "",
  "data": {
    "voice_id": "vp_xxx",
    "status": "deleted",
    "already_deleted": true
  }
}

删除后:


4. 传统克隆人声:完整接口

适用于已经使用 voice_task_id 和 /api/music/generate-with-voice 的客户。

4.1 标准创建流程

① POST /api/voice/clone/validate
   → voice_task_id + 验证文本任务

② GET /api/voice/clone/tasks/{voice_task_id}
   → validate_info

③ 用户朗读 validate_info

④ POST /api/voice/clone/tasks/{voice_task_id}/generate
   → 提交验证音频

⑤ GET /api/voice/clone/tasks/{voice_task_id}
   或 POST /api/voice/clone/tasks/{voice_task_id}/check
   → is_available=true + voice_id

⑥ POST /api/music/generate-with-voice
   → client_request_id

⑦ GET /api/music/generate-with-voice/results?client_request_id=...
   → 真实 song_id

4.2 提交源人声

POST /api/voice/clone/validate
curl -sS -X POST "https://www.suno-api.io/api/voice/clone/validate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_url": "https://example.com/source-voice.wav",
    "voice_name": "我的中文女声",
    "description": "清亮自然的中文女声",
    "style": "Mandopop",
    "singer_skill_level": "intermediate",
    "language": "zh",
    "vocal_start_s": 1.2,
    "vocal_end_s": 18.5,
    "source_duration_seconds": 20
  }'

主要字段:

字段 必填 说明
voice_url 二选一 源音频公网 URL
file_base64 二选一 Base64 音频
file_name 否 文件名
voice_name 否 人声名称
description 否 描述
style 否 风格
singer_skill_level 否 beginner / intermediate / professional
language 否 语言,例如 zh、en
vocal_start_s 是 有效人声开始秒数
vocal_end_s 是 有效人声结束秒数
source_duration_seconds 否 源音频总时长

响应包含:

{
  "success": true,
  "data": {
    "voice": {
      "voice_task_id": 123,
      "status": "validate_submitted",
      "validate_status": "submitted",
      "is_available": false
    }
  }
}

4.3 查询任务并获取验证文本

GET /api/voice/clone/tasks/{voice_task_id}
curl -sS "https://www.suno-api.io/api/voice/clone/tasks/123" \
  -H "Authorization: Bearer $API_KEY"

当 validate_info 有值时,让用户按文本朗读并录音。

主要状态:

状态 处理
validate_submitted / wait_validating 继续轮询
validate_ready 返回 validate_info,可以录音
voice_processing 正在生成人声
ready + is_available=true 可用于生成歌曲
failed 失败,读取 error_message
deleted 已永久删除

4.4 提交验证音频

POST /api/voice/clone/tasks/{voice_task_id}/generate
curl -sS -X POST "https://www.suno-api.io/api/voice/clone/tasks/123/generate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "verify_url": "https://example.com/verify-voice.wav",
    "voice_name": "我的中文女声"
  }'

也可以使用 file_base64 + file_name。

4.5 从已有歌曲直接创建传统人声

POST /api/voice/clone/from-clip
curl -sS -X POST "https://www.suno-api.io/api/voice/clone/from-clip" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "clip_id": "38ea6309-7fce-422a-b50d-cedddd69cfa2",
    "name": "已有歌曲音色",
    "description": "从已完成歌曲创建",
    "style_tags": "Mandopop"
  }'

成功后直接返回一个可用的 voice_task_id 和 voice_id。以响应中的 is_available=true 为准。

4.6 检查传统人声是否可用

POST /api/voice/clone/tasks/{voice_task_id}/check
curl -sS -X POST "https://www.suno-api.io/api/voice/clone/tasks/123/check" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

只有以下条件同时满足才能生成:

is_available = true
status = ready
voice_id 非空

4.7 使用传统人声生成歌曲

POST /api/music/generate-with-voice
curl -sS -X POST "https://www.suno-api.io/api/music/generate-with-voice" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: voice-gen-$(date +%s)" \
  -d '{
    "voice_task_id": 123,
    "voice_id": "e254150f-3f47-4ef3-b15b-3887f1d4e0a2",
    "customMode": true,
    "prompt": "写一首关于夏夜海边的中文流行歌曲",
    "style": "Mandopop, warm piano, emotional",
    "title": "夏夜海风",
    "negativeTags": "noise, low quality",
    "instrumental": false,
    "model": "suno-v6",
    "vocalGender": "f",
    "styleWeight": 0.5,
    "weirdnessConstraint": 0.5,
    "audioWeight": 0.85
  }'

主要字段:

字段 必填 说明
voice_task_id 是 已可用传统人声任务 ID
voice_id 否 建议传入;必须与任务内 voice_id 一致
customMode 否 false 灵感模式;true 高级模式
prompt 是 灵感模式填歌曲描述;高级模式填歌词
style 高级模式必填 风格标签
title 高级模式必填 歌曲标题
model 否 默认 suno-v6
negativeTags 否 排除风格
vocalGender 否 m / male / f / female
styleWeight 否 0–1 小数
weirdnessConstraint 否 0–1 小数
audioWeight 否 0–1 小数,音频参考度
sourceClipId 否 传入时为指定来源歌曲人声翻唱
maxMode 否 true 时价格 ×2;传统人声接口使用 camelCase
variety 否 0–4 整数

成功响应会返回:

{
  "success": true,
  "data": {
    "client_request_id": "cu_xxx",
    "items": [
      {
        "placeholder_id": "pending:cu_xxx:0",
        "client_request_index": 0,
        "status": "submitted",
        "type": "voice_generate"
      },
      {
        "placeholder_id": "pending:cu_xxx:1",
        "client_request_index": 1,
        "status": "submitted",
        "type": "voice_generate"
      }
    ]
  }
}

pending:* 不是最终歌曲 ID,不能用于歌曲查询或下载。

4.8 查询传统人声生成结果

GET /api/music/generate-with-voice/results?client_request_id=cu_xxx
curl -sS "https://www.suno-api.io/api/music/generate-with-voice/results?client_request_id=cu_xxx" \
  -H "Authorization: Bearer $API_KEY"

顶层状态:

状态 说明
not_found 尚未查到任务
processing 仍在生成
completed 全部完成
partial 部分完成、部分失败
failed 全部失败

只有 items[].song_id 存在且不以 pending: 开头时,才进入歌曲查询和下载。

4.9 永久删除传统人声

DELETE /api/voice/clone/voices/{voice_task_id}
curl -sS -X DELETE "https://www.suno-api.io/api/voice/clone/voices/123" \
  -H "Authorization: Bearer $API_KEY"

首次删除:

{
  "success": true,
  "data": {
    "voice_task_id": 123,
    "deleted": true,
    "already_deleted": false
  }
}

重复删除:

{
  "success": true,
  "data": {
    "voice_task_id": 123,
    "deleted": true,
    "already_deleted": true
  }
}

删除后:


5. 共享查询与下载

5.1 批量查询歌曲

POST /api/music/query
curl -sS -X POST "https://www.suno-api.io/api/music/query" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_ids": "song-a,song-b"
  }'

song_ids 是英文逗号分隔字符串,不是数组。返回通常是裸数组。

状态:

状态 说明
submitted / queued / processing 生成中
completed 完成,可下载
failed 失败

建议每 5–10 秒查询一次,总超时 10–15 分钟。

5.2 单首详情

GET /api/music/songs/{song_id}

5.3 下载文件

GET /api/music/download?song_id={song_id}&kind=mp3

常用 kind:

也可以直接使用查询结果中的 audio_url。


6. 永久删除行为矩阵

6.1 两种音色删除对照

操作或场景 推荐音色 voice-profile 传统克隆人声 persona
删除接口 POST /api/music/voice-profile/delete DELETE /api/voice/clone/voices/{voice_task_id}
删除费用 免费 免费
是否永久删除 ID 是 是
重复删除 success=true、already_deleted=true success=true、already_deleted=true
默认列表 删除后不再出现 任务查询会消失
删除后再次生成 HTTP 400、voice_deleted HTTP 400、voice_deleted
删除后重新查询旧 ID 通常返回 voice not found / record not found 通常返回 voice not found / record not found
旧 ID 是否能恢复 否 否
新生成任务能否继续使用旧 ID 否 否
已生成歌曲是否保留 是 是

6.2 voice_deleted 的含义

voice_deleted 表示:

这个音色身份已经被永久关闭。

不是临时不可用,也不是等待重试即可恢复。

推荐处理:

  1. 停止使用本地保存的旧音色 ID。
  2. 从音色列表中移除该音色。
  3. 提示终端用户重新创建音色。
  4. 不要自动用原 ID 重试。
  5. 不要用同一已删除素材尝试恢复原 ID。
  6. 根据业务需要创建新的音色 ID。

6.3 删除时正在生成的任务

6.4 删除不会做什么


7. 错误码与处理方式

7.1 音色已永久删除

HTTP:

400 Bad Request

推荐音色翻唱或兼容生成入口:

{
  "success": false,
  "code": "voice_deleted",
  "error": {
    "message": "该音色已永久删除,不能继续用于生成。请重新创建新的音色。",
    "type": "invalid_request_error",
    "code": "voice_deleted"
  }
}

音色管理或生成管理入口可能返回:

{
  "success": false,
  "code": "voice_deleted",
  "message": "该音色已永久删除,不能继续用于生成。请重新创建新的音色。"
}

处理:

不要重试旧 ID。
引导用户创建新音色。

7.2 音色不存在或不属于当前账号

常见返回:

{
  "success": false,
  "message": "voice not found"
}

或:

{
  "success": false,
  "message": "record not found"
}

可能原因:

7.3 音色尚未就绪

推荐音色:

status=processing

传统人声:

is_available=false

处理:

7.4 参数错误

常见参数错误:

错误 原因
voice audio is required 未提供人声音频
voice_id is required 缺少音色 ID
voice_task_id is required 缺少传统人声任务 ID
model is required 缺少模型名称
audio_weight must be a number between 0 and 1 把百分比误传为 50、85 等
duration must be an integer between 1 and 480 seconds 时长不是整数或超出范围
vocal_gender must be one of m, f, male, female 性别参数非法
variety must be an integer between 0 and 4 多样性参数非法
song_clip_id must be a real completed clip 来源歌曲未完成或 ID 非法

7.5 超时

提交超时不等于失败。

正确做法:

  1. 保存提交前生成的幂等键或追踪 ID。
  2. 先查询最近任务或结果。
  3. 确认没有产生任务后,再决定是否重试。

推荐音色可以通过最近歌曲列表确认是否已有新任务:

GET /api/music/songs?p=1&page_size=20

传统人声优先查询:

GET /api/music/generate-with-voice/results?client_request_id=...

8. 计费与退款

实际价格可能调整。接入方应实时读取 /api/pricing/catalog,不要永久写死。

当前常用价格:

操作 当前口径
推荐音色普通创建 免费
推荐音色从已有音频创建 免费
强化克隆 按强化上传价,当前默认 10 元/次
推荐音色翻唱或唱新歌 当前 1.2 元/次
推荐音色 Max Mode 当前 2.4 元/次
传统人声校验 免费
传统人声从已有音频创建 免费
传统人声生成歌曲 当前 1.2 元/次
传统人声 Max Mode 当前 2.4 元/次
查询、列表、详情、删除 免费
MP3 直链下载 免费
WAV、歌词等重处理下载 以对应接口价格为准

读取价格:

curl -sS "https://www.suno-api.io/api/pricing/catalog"

退款原则:


9. 推荐的客户端状态机

9.1 推荐音色

creating
  → ready
    → submitting
      → processing
        → completed
        → failed
        → partial
  → failed

ready / failed / completed
  → deleted

本地必须保存:

voice_id
status
created_at
updated_at
最近一次生成时间
删除标记

9.2 传统克隆人声

created
  → validate_submitted
    → wait_validating
      → validate_ready
        → voice_processing
          → ready + is_available=true
            → generating
              → completed
              → failed
          → failed
  → deleted

本地必须保存:

voice_task_id
voice_id
status
is_available
updated_at
最近一次成功生成时间
删除标记

10. 最小可用调用清单

10.1 推荐音色

1. POST /api/music/voice-profile/create
2. 保存 data.voice_id
3. GET /api/music/voice-profile/{voice_id},确认 status=ready
4. POST /api/music/voice-profile/cover
5. 保存 clips[].song_id
6. POST /api/music/query,轮询到 completed
7. GET /api/music/download?... 下载
8. 不再使用时 POST /api/music/voice-profile/delete

10.2 传统克隆人声

1. POST /api/voice/clone/validate
2. 保存 voice_task_id
3. GET /api/voice/clone/tasks/{voice_task_id},获取 validate_info
4. 用户录音
5. POST /api/voice/clone/tasks/{voice_task_id}/generate
6. 轮询到 is_available=true 和 status=ready
7. POST /api/music/generate-with-voice
8. 保存 client_request_id
9. GET /api/music/generate-with-voice/results
10. 获取真实 song_id 后查询和下载
11. 不再使用时 DELETE /api/voice/clone/voices/{voice_task_id}

11. 常见问题

Q1:voice_deleted 后可以稍后重试吗?

不可以。该业务码表示音色 ID 已永久关闭。必须停止使用旧 ID,并创建新音色。

Q2:删除后,之前生成的歌曲还能听吗?

可以。删除音色只阻止旧音色继续发起新的生成,不影响已经完成的歌曲、播放和下载。

Q3:删除后重新提交同一段音频,会拿回原 ID 吗?

不会。推荐音色使用同一已删除素材再次创建会返回 voice_deleted。需要重新准备可用素材并创建新的音色。

Q4:删除接口返回 already_deleted=true 是错误吗?

不是。表示这个音色之前已经删除,本次请求是安全的重复操作,不重复扣费。

Q5:推荐音色和传统人声 ID 能互换吗?

不能。vp_... 使用 /api/music/voice-profile/cover;传统 voice_task_id 使用 /api/music/generate-with-voice。

Q6:生成接口返回成功,为什么还没有音频?

生成接口只表示已受理。需要继续轮询到 completed,之后才有可下载地址。

Q7:使用已删除音色会被扣费吗?

不会。删除态检查发生在生成和扣费之前,请求会被直接拒绝。

Q8:推荐音色的 audio_weight 是什么?

音频参考度,取值 0–1。数值越高通常越贴近音色样本;默认通常为 0.85。不要传百分比。

Q9:为什么 duration 填 20 秒,成品却更长?

平台实际最短约 30 秒。duration 是期望值,不保证逐秒精确。

Q10:删除操作是否支持批量?

当前删除按单个音色 ID 调用。客户端需要删除多个音色时逐个调用。


12. 发布前兼容性说明

2026-11-09 起:

  1. 推荐音色和传统人声删除都改为永久 ID 关闭。
  2. 删除后再次使用同一个音色 ID,统一返回 voice_deleted。
  3. 重复删除改为幂等成功,并返回 already_deleted=true。
  4. 删除音色不会删除已生成歌曲。
  5. 已删除 ID 不能再通过幂等重放或重复创建恢复。
  6. 客户端应移除旧的“删除后重新创建可恢复原 ID”逻辑。

如客户端历史上保存了大量音色 ID,请在首次加载时:

1. 读取当前音色列表。
2. 本地缓存中不在列表里的音色标记为 unavailable。
3. 用户再次使用时,不要把旧 ID 自动提交到生成接口。
4. 捕获 voice_deleted 并引导用户创建新音色。

13. 支持信息

提交工单或联系技术支持时,请提供:

不要发送完整 API Key、Cookie、Authorization 请求头或其他敏感凭据。

下一篇用克隆音色生成音乐 · 调用示例

开始接入

注册后即可在控制台创建 API Key,0.6 元一次固定生成 2 首,下载不限次数。

免费注册 查看完整文档