文档 / 音乐系列 / Suno / NewAPI兼容
New-api兼容Suno格式
new-api 兼容的 Suno 格式使用 /suno/submit/{ACTION} 提交任务,并通过 /suno/fetch 查询结果。
概述#
new-api 兼容的 Suno 调用格式以 /suno/* 为前缀。创建音乐、歌词或音频二次加工任务时,统一使用:
POST /suno/submit/{ACTION}其中 {ACTION} 表示任务类型,例如 MUSIC、LYRICS、WAV、MP4。提交成功后接口立即返回公开 task_id,再通过 /suno/fetch 查询任务状态和结果。
new-api Suno 的核心调用链是:POST /suno/submit/{ACTION} 提交任务,GET /suno/fetch/{task_id} 或 POST /suno/fetch 查询结果。
本站另外提供 /suno/* OpenAI 风格便捷入口,但它不是本文所说的 new-api Suno 格式。需要兼容现有 new-api Suno 客户端时,请使用本文的 /suno/* 路径。
Base URL#
本文示例使用:
https://api.apimax.ai完整的音乐生成地址为:
https://api.apimax.ai/suno/submit/MUSIC不要在 /suno 前重复添加 /v1。以下地址不是 new-api Suno 提交路径:
/v1/suno/submit/MUSIC
/v1/music/generations鉴权#
所有 /suno/* 请求都使用本站 API Key:
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/jsonAPI Key 可在本站 API Key 页面 创建。请使用完整密钥,包括 sk- 前缀。
API Key 只能保存在服务端,不要写入浏览器前端、公开仓库或客户端安装包。
提交端点#
POST /suno/submit/{ACTION}路径中的 action 不区分大小写,服务端会统一转成大写。为了便于阅读和与文档保持一致,建议始终使用大写 action。
支持的 action#
| action | 用途 | 核心输入 |
|---|---|---|
MUSIC | 生成音乐、续写音乐或复用音色生成 | gpt_description_prompt 或 prompt 等 |
LYRICS | 生成歌词 | prompt |
WAV | 获取 WAV 无损音频 | clip_id |
MP4 | 获取音乐视频 | clip_id |
SPEED | 调整音频速度 | clip_id、speed_multiplier |
TIMING | 获取歌词时间轴 | clip_id |
CROP | 裁剪音频 | clip_id、crop_start_s、crop_end_s |
MIDI | 获取 MIDI | clip_id |
FADE | 添加淡入淡出 | clip_id,以及至少一个淡入或淡出时间 |
CONCAT | 合并或延长片段 | clip_id |
REVERSE | 倒放音频 | clip_id |
REMASTER | 重制或升采样 | clip_id |
WAVEFORM | 获取波形数据 | clip_id |
DOWNBEATS | 获取节拍点分析 | clip_id |
RECUT | 版权音频切段重组 | clip_id |
未知 action 会返回 400 和 invalid_action。
生成音乐#
描述模式#
描述想要的音乐,Suno 自动生成歌词和歌曲:
curl --request POST \
--url https://api.apimax.ai/suno/submit/MUSIC \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"gpt_description_prompt": "一首轻快的夏日流行歌曲,女声,主题是海边日落",
"make_instrumental": false,
"mv": "chirp-v3-0"
}'自定义歌词模式#
自己提供歌词、标题和风格标签:
curl --request POST \
--url https://api.apimax.ai/suno/submit/MUSIC \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "[Verse]\n晚风穿过安静的街\n[Chorus]\n我们奔向海岸线",
"title": "海岸线",
"tags": "pop, female vocal, uplifting",
"make_instrumental": false,
"mv": "chirp-v3-0"
}'MUSIC 常用字段#
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
gpt_description_prompt | string | 二选一 | 自然语言音乐描述,适合自动歌词模式 |
prompt | string | 二选一 | 自定义歌词,可包含 [Verse]、[Chorus] 等段落标记 |
title | string | 否 | 歌曲标题 |
tags | string | 否 | 风格、流派、情绪和人声标签 |
mv | string | 否 | Suno 模型版本,缺省时使用 chirp-v3-0 |
make_instrumental | bool | 否 | 是否生成纯伴奏 |
continue_clip_id | string | 否 | 续写时引用的源 clip ID |
continue_at | number | 否 | 从源音频多少秒处开始续写 |
persona_id | string | 否 | 使用已创建的人声音色 |
task | string | 否 | 扩展任务类型,例如 vox、gen_stem |
stem_task | string | 否 | 分轨类型,例如 two 或 twelve |
notify_hook | string | 否 | 任务终态回调地址 |
生成歌词#
curl --request POST \
--url https://api.apimax.ai/suno/submit/LYRICS \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "写一首关于雨夜重逢的中文流行歌词"
}'LYRICS 必须提供非空 prompt,否则返回 prompt_empty。
二次加工示例#
获取 WAV#
curl --request POST \
--url https://api.apimax.ai/suno/submit/WAV \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"clip_id": "11f1b88e-xxxxxxxxxxxxxxxxxxxxxxxx"
}'调整速度#
curl --request POST \
--url https://api.apimax.ai/suno/submit/SPEED \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"clip_id": "11f1b88e-xxxxxxxxxxxxxxxxxxxxxxxx",
"speed_multiplier": 1.15,
"keep_pitch": true
}'裁剪音频#
curl --request POST \
--url https://api.apimax.ai/suno/submit/CROP \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"clip_id": "11f1b88e-xxxxxxxxxxxxxxxxxxxxxxxx",
"crop_start_s": 10,
"crop_end_s": 35,
"is_crop_remove": false
}'crop_end_s 必须大于 crop_start_s。
添加淡入淡出#
curl --request POST \
--url https://api.apimax.ai/suno/submit/FADE \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"clip_id": "11f1b88e-xxxxxxxxxxxxxxxxxxxxxxxx",
"fade_in_time": 2.5,
"fade_out_time": 3
}'fade_in_time 和 fade_out_time 至少提供一个。
提交响应#
所有 /suno/submit/{ACTION} 成功后都返回统一结构:
{
"code": "success",
"message": "",
"data": "task_01Jxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}data 是本站公开任务 ID。后续查询、回调关联和问题排查都使用该 ID,不要使用上游内部任务 ID。
提交成功只表示任务已经创建,不代表音乐、歌词或加工结果已经完成。
查询单个任务#
推荐使用与 new-api Suno 格式对应的查询路径:
GET /suno/fetch/{task_id}curl --request GET \
--url https://api.apimax.ai/suno/fetch/task_01Jxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx'响应结构:
{
"code": "success",
"message": "",
"data": {
"task_id": "task_01Jxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"platform": "suno",
"action": "MUSIC",
"status": "SUCCESS",
"progress": "100%",
"fail_reason": "",
"submit_time": 1780000000,
"start_time": 1780000005,
"finish_time": 1780000120,
"data": [
{
"id": "clip_xxx",
"audio_url": "https://example.com/audio.mp3",
"video_url": "https://example.com/video.mp4",
"image_url": "https://example.com/cover.jpeg",
"title": "海岸线"
}
]
}
}任务可能出现以下状态:
| 状态 | 说明 |
|---|---|
NOT_START / SUBMITTED / QUEUED | 已创建或正在排队 |
IN_PROGRESS | 上游处理中 |
SUCCESS | 任务成功,读取 data.data |
FAILURE | 任务失败,读取 data.fail_reason |
批量查询任务#
POST /suno/fetchcurl --request POST \
--url https://api.apimax.ai/suno/fetch \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"ids": [
"task_01Jxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"task_01Kyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
]
}'批量查询的 data 是任务数组。不存在或不属于当前用户的 ID 不会泄露任务数据。
本站也提供通用任务查询端点:
GET /v1/tasks/{task_id}但现有 new-api Suno 客户端迁移时,继续使用 /suno/fetch 即可。
终态回调#
提交请求中可以传入 notify_hook:
{
"gpt_description_prompt": "一首舒缓的钢琴纯音乐",
"make_instrumental": true,
"notify_hook": "https://your-service.example.com/webhooks/suno"
}任务进入 SUCCESS 或 FAILURE 后,本站会向该地址发送终态结果。回调地址必须是公网可访问的 HTTPS 地址,接收方应按 task_id 做幂等处理,并保留 /suno/fetch 轮询作为兜底。
/suno/submit/* 之外的 Suno 路径#
下面这些能力不是 submit action,使用独立的 /suno/* 路径:
| 路径 | 方法 | 类型 | 用途 |
|---|---|---|---|
/suno/upload/audio | POST | 异步 | 上传音频并导入为 Suno clip |
/suno/voice/sample | POST | 异步 | 上传演唱样本 |
/suno/voice/create | POST | 异步 | 验证并创建音色 |
/suno/voice/from-clip | POST | 异步 | 从已有歌曲创建音色 |
/suno/recut | POST | 异步 | 版权音频切段重组 |
/suno/upload/file | POST | 同步 | 上传或转存文件并直接返回结果 |
/suno/prompts/suggestions | GET | 同步 | 获取风格灵感建议 |
/suno/prompts/upsample | POST | 同步 | 润色风格或标签 |
异步独立路径返回的任务同样通过 /suno/fetch 查询。
/suno/* 是什么#
new-api 网关同时保留了一组 /suno/* 路由,用于给偏好 OpenAI 风格参数的客户端提供便捷入口。例如:
POST /v1/music/generations
POST /suno/submit/WAV这些入口最终也会转换或转发到 Suno 任务系统,但它们属于额外的 OpenAI 风格封装。本文档的 new-api Suno 兼容格式以 /suno/submit/{ACTION} 和 /suno/fetch 为准。
常见错误#
| HTTP | code / 原因 | 处理建议 |
|---|---|---|
| 400 | invalid_action | 检查 /suno/submit/{ACTION} 中的 action |
| 400 | prompt_empty | LYRICS 请求补充 prompt |
| 400 | clip_id_empty | 二次加工请求补充 clip_id |
| 400 | speed_multiplier_empty | SPEED 请求补充 speed_multiplier |
| 400 | crop_range_empty / crop_range_invalid | 检查裁剪起止时间 |
| 400 | fade_time_empty | 至少提供一个淡入或淡出时间 |
| 401 | API Key 无效 | 检查完整 Authorization: Bearer sk-... |
| 503 | 无可用渠道 | 稍后重试或联系管理员 |
不要根据提交接口返回 200 就判断生成完成。必须持续查询到 SUCCESS 或 FAILURE,或者等待终态回调。

