curl --request POST \
--url https://api.ephone.ai/suno/v2/music \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"mv": "chirp-v6",
"custom": false,
"instrumental": false,
"gpt_description_prompt": "轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上"
}
'import requests
url = "https://api.ephone.ai/suno/v2/music"
payload = {
"mv": "chirp-v6",
"custom": False,
"instrumental": False,
"gpt_description_prompt": "轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
mv: 'chirp-v6',
custom: false,
instrumental: false,
gpt_description_prompt: '轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上'
})
};
fetch('https://api.ephone.ai/suno/v2/music', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ephone.ai/suno/v2/music"
payload := strings.NewReader("{\n \"mv\": \"chirp-v6\",\n \"custom\": false,\n \"instrumental\": false,\n \"gpt_description_prompt\": \"轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"code": "success",
"message": "success",
"data": {
"task_id": "5adac6ee-..."
}
}{
"code": "error",
"message": "music_id is required"
}{
"error": {
"message": "Invalid Token",
"type": "rix_api_error"
}
}{
"error": {
"message": "Too many requests, please try again later",
"type": "rix_api_error"
}
}音乐生成
用一句话描述,或自己写歌词,生成完整歌曲,一次出两首。
curl --request POST \
--url https://api.ephone.ai/suno/v2/music \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"mv": "chirp-v6",
"custom": false,
"instrumental": false,
"gpt_description_prompt": "轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上"
}
'import requests
url = "https://api.ephone.ai/suno/v2/music"
payload = {
"mv": "chirp-v6",
"custom": False,
"instrumental": False,
"gpt_description_prompt": "轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
mv: 'chirp-v6',
custom: false,
instrumental: false,
gpt_description_prompt: '轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上'
})
};
fetch('https://api.ephone.ai/suno/v2/music', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ephone.ai/suno/v2/music"
payload := strings.NewReader("{\n \"mv\": \"chirp-v6\",\n \"custom\": false,\n \"instrumental\": false,\n \"gpt_description_prompt\": \"轻柔的 lo-fi 钢琴,雨落在铁皮屋顶上\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"code": "success",
"message": "success",
"data": {
"task_id": "5adac6ee-..."
}
}{
"code": "error",
"message": "music_id is required"
}{
"error": {
"message": "Invalid Token",
"type": "rix_api_error"
}
}{
"error": {
"message": "Too many requests, please try again later",
"type": "rix_api_error"
}
}POST /v1/task/submit 提交:model 填 suno/music,参数放进 input。两种写法效果与计费完全一样。任务结果
任务成功后,查询结果里产物的格式
任务结果
任务成功后,查询结果里产物的格式
data.musics 里是产出的曲目,一次 2 条。部分成功时按实际成功的条数计费。{
"code": "success",
"data": {
"task_id": "5adac6ee-...",
"action": "music",
"model": "suno/music",
"status": "SUCCESS",
"progress": "100%",
"submit_time": 1757800000000,
"finish_time": 1757800120000,
"musics": [
{
"music_id": "89b20862-...",
"title": "Rain on Tin Roof",
"tags": "lo-fi piano",
"audio_url": "https://...",
"image_url": "https://...",
"duration": 187.56
}
]
}
}
授权
在请求头 Authorization: Bearer YOUR_API_KEY 里带上 API Key。
请求体
模型版本:三个版本价格相同,按需要的风格选择。可选值:chirp-v6 v6(默认,均衡);chirp-v6-wild v6 Wild(风格更奔放);chirp-v6-mini v6 Mini(更快)。
chirp-v6, chirp-v6-wild, chirp-v6-mini 自定义模式:关闭时你只需用一句话描述想要什么;开启时由你提供完整歌词。
纯伴奏:开启后只出伴奏,不演唱歌词。
灵感描述:一句话描述想要的歌,例如「轻柔的 lo-fi 钢琴,雨夜」。关闭自定义模式时必填,最长 3000 字。
歌词:完整歌词,最长 5000 字。可以用 [Verse]、[Chorus] 这类标记划分段落。
标题:曲目标题,最长 80 字。
风格标签:想要的曲风,例如「lo-fi 钢琴, 舒缓, 雨声」,最长 1000 字。
排除风格:不希望出现的曲风,用来避开某些方向。
风格贴合度:0 到 1。越高越贴近你写的风格标签,越低留给模型的发挥空间越大。
创意发散度:0 到 1。越高越出人意料,越低越接近常规写法。
参考音频权重:0 到 1。调节参考音频对成品的影响程度。
时长:成品时长,单位秒,10 到 360 之间。
自动润色歌词:开启后会把你写的歌词改写得更适合演唱,仅自定义模式有效。
人声性别:指定演唱者的嗓音性别。可选值:Male 男声;Female 女声。
Male, Female 指定音色:用之前创建好的音色来演唱,填音色 ID。仅自定义模式有效。
自建模型:用自建模型来生成,填创建模型结果里的 model_id。不能与 persona_id 同时使用。
风格发散度:控制成品与指定风格的偏离程度,从完全贴合到大胆发挥。可选值:off 完全贴合;normal 均衡;high 较为多变;extra 大胆发挥;max 最大发散。
off, normal, high, extra, max 最高质量模式:投入更多算力让整首歌前后更连贯。仅自定义模式有效,开启后价格翻倍。
输出格式:成品音频的格式,不填默认 mp3。可选值:mp3 MP3(通用);m4a M4A;wav WAV(无损)。
mp3, m4a, wav 推送地址:任务结束后,把和查询结果相同的内容 POST 到这个地址(公网可以访问的 http / https 地址)。不传就自己查询。
此页面对您有帮助吗?