Suno generate
curl --request POST \
--url https://openp.ai/suno/submit/musicimport 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_bodyVideo & image generation
Suno generate
POST /suno/submit/music — submit a Suno music-generation task
POST
/
suno
/
submit
/
music
Suno generate
curl --request POST \
--url https://openp.ai/suno/submit/musicimport 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_bodySubmit a Suno music-generation task; the task ID is returned asynchronously.
Request
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"
}'
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
prompt | string | ✅ | Style / mood / keywords, in natural language |
tags | string | Style tags, comma-separated | |
title | string | Track title | |
lyric | string | Custom lyrics (free mode) | |
model | string | suno_v3.5 / suno_v4, etc. | |
make_instrumental | boolean | Whether instrumental only (no lyrics) | |
continue_at | number | The second to continue from in a continuation | |
continue_clip_id | string | The clip ID to continue from | |
notify_hook | string | Callback URL |
Response
{
"code": "success",
"data": "task_01...",
"message": ""
}
data is the task ID.
Custom lyrics mode
{
"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"
}
Instrumental only
{
"prompt": "jazz piano solo, romantic mood",
"make_instrumental": true,
"model": "suno_v4"
}