Generate Instrumental Music (v5)
- The API supports both streaming and synchronous responses
Endpoints
- POST
/v5/generate/music- streaming - POST
/v5/generate/music/sync- synchronous
Request Parameters
| Parameter | Type | Description | Required | Default Value |
|---|---|---|---|---|
prompt | string | Text prompt describing the desired music. | Yes | N/A |
style | string | Musical style or genre (e.g., jazz, classical, rock). | No | N/A |
Example Request
{
"prompt": "upbeat jazz music with saxophone",
"style": "jazz"
}
Code Examples - Streaming
import requests
import json
url = "https://api.soundverse.ai/v5/generate/music"
headers = {
"Authorization": "Bearer your_api_key_here",
"Content-Type": "application/json"
}
payload = {
"prompt": "upbeat jazz music with saxophone",
"style": "jazz"
}
response = requests.post(url, json=payload, headers=headers, stream=True)
# Process streaming response
for line in response.iter_lines():
if line:
text = line.decode('utf-8')
if text.startswith('data: '):
data = json.loads(text[6:])
print(data)
const url = "https://api.soundverse.ai/v5/generate/music";
const headers = {
Authorization: "Bearer your_api_key_here",
"Content-Type": "application/json",
};
const payload = {
prompt: "upbeat jazz music with saxophone",
style: "jazz",
};
const response = await fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n');
lines.forEach(line => {
if (line.startsWith('data: ')) {
const data = JSON.parse(line.slice(6));
console.log(data);
}
});
}
curl -X POST "https://api.soundverse.ai/v5/generate/music" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "upbeat jazz music with saxophone",
"style": "jazz"
}' --no-buffer
Code Examples - Synchronous
import requests
url = "https://api.soundverse.ai/v5/generate/music/sync"
headers = {
"Authorization": "Bearer your_api_key_here",
"Content-Type": "application/json"
}
payload = {
"prompt": "upbeat jazz music with saxophone",
"style": "jazz"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.soundverse.ai/v5/generate/music/sync";
const headers = {
Authorization: "Bearer your_api_key_here",
"Content-Type": "application/json",
};
const payload = {
prompt: "upbeat jazz music with saxophone",
style: "jazz",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
curl -X POST "https://api.soundverse.ai/v5/generate/music/sync" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "upbeat jazz music with saxophone",
"style": "jazz"
}'
Streaming Response
Fields
🛈 The fields below are used in the chunks sent by SSE during the streaming process.
| Parameter | Type | Description |
|---|---|---|
isComplete | bool | Indicates if the streaming response is complete. |
status | string | Current status of the extension process. |
chunkIndex | integer | Index of the current chunk in the streaming sequence. |
message_id | string | Unique identifier for the extension request. |
stream_url | string | URL to access the generated audio stream when ready. |
version | integer | Version of the generated content. |
album_art | string | URL of the album art associated with the generated content. |
song_name | string | Name of the generated track. |
progress | integer | Progress percentage of the generation process. 0-100 |
streaming_ready | bool | Indicates if audio is ready for streaming. |
version | integer | Version number of the generated audio. |
audio_url | string | URL of the generated audio file. |
error | string | Error message if any issues occurred during processing. |
operation | string | Type of operation being performed (e.g., “extend_song”). |
- please check Streaming Responses for more details
Synchronous Response
Sample Synchronous Output
{
"message_id": "...",
"album_art": "https://storage.soundverse.ai/x-one/.../userData/album-arts/album_art_1766599034.webp",
"song_name": "Midnight Drizzle Beats",
"audio_data": [
{
"audio_url": "https://storage.soundverse.ai/x-one/.../userData/generated-audio/midnight_drizzle_beats_v1.mp3",
"song_name": "Midnight Drizzle Beats",
},
{
"audio_url": "https://storage.soundverse.ai/x-one/.../userData/generated-audio/midnight_drizzle_beats_v2.mp3",
"song_name": "Midnight Drizzle Beats",
}
]
}
Possible Errors
Rate Limit Exceeded:{
"success": false,
"message": "Rate limits have been passed for the user."
}
{
"success": false,
"message": "Insufficient balance for this operation."
}
{
"detail": "Invalid or empty prompt provided"
}
{
"success": false,
"message": "NSFW words detected. Please try again with different lyrics."
}
{
"success": false,
"message": "Service temporarily unavailable. Please try again in a moment.",
"error": "Database connection pool exhausted"
}

