跳转到主要内容
POST
/
suno
/
submit
/
music
Suno 生成
curl --request POST \
  --url https://openp.ai/suno/submit/music
import requests

url = "https://openp.ai/suno/submit/music"

response = requests.post(url)

print(response.text)
const options = {method: 'POST'};

fetch('https://openp.ai/suno/submit/music', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://openp.ai/suno/submit/music",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://openp.ai/suno/submit/music"

req, _ := http.NewRequest("POST", url, nil)

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://openp.ai/suno/submit/music")
.asString();
require 'uri'
require 'net/http'

url = URI("https://openp.ai/suno/submit/music")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
提交一个 Suno 音乐生成任务,异步返回任务 ID。

请求

curl https://openp.ai/suno/submit/music \
  -H "Authorization: Bearer $OPENPAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "lo-fi hip hop, rainy night, female vocals, 90bpm",
    "tags": "lofi, hiphop, chill",
    "title": "Rainy Night",
    "model": "suno_v4",
    "make_instrumental": false,
    "notify_hook": "https://your-server.com/suno-callback"
  }'

参数

字段类型必填说明
promptstring风格 / 情感 / 关键词,自然语言
tagsstring风格标签,逗号分隔
titlestring曲目标题
lyricstring自定义歌词(自由模式)
modelstringsuno_v3.5 / suno_v4
make_instrumentalboolean是否纯器乐(无歌词)
continue_atnumber续作时基于上次的秒数
continue_clip_idstring续作的 clip ID
notify_hookstring回调 URL

响应

{
  "code": "success",
  "data": "task_01...",
  "message": ""
}
data 即任务 ID。

自定义歌词模式

{
  "prompt": "uplifting pop, hopeful, 120bpm",
  "tags": "pop, uplifting",
  "title": "Brave New Day",
  "lyric": "[Verse 1]\nWalking through the morning light...\n[Chorus]\nThis is a brave new day...",
  "model": "suno_v4"
}

仅器乐

{
  "prompt": "jazz piano solo, romantic mood",
  "make_instrumental": true,
  "model": "suno_v4"
}

计费

任务数 计费,失败不扣费。一个任务通常返回 2 段音乐(主备),只扣费一次。