Suno Inspo
curl --request POST \
--url https://api.snapgen.org/v1/music/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"audio_urls": [
"<string>"
],
"version": "<string>",
"custom_model_task_id": "<string>",
"prompt": "<string>",
"title": "<string>",
"tags": "<string>",
"negative_tags": "<string>",
"style_weight": 123,
"weirdness": 123,
"audio_weight": 123,
"vocal_gender": "<string>",
"auto_lyrics": true,
"variety": "<string>",
"max_mode": true,
"audio_format": "<string>",
"webhook": "<string>",
"webhook_secret": "<string>"
}
'import requests
url = "https://api.snapgen.org/v1/music/generations"
payload = {
"model": "<string>",
"audio_urls": ["<string>"],
"version": "<string>",
"custom_model_task_id": "<string>",
"prompt": "<string>",
"title": "<string>",
"tags": "<string>",
"negative_tags": "<string>",
"style_weight": 123,
"weirdness": 123,
"audio_weight": 123,
"vocal_gender": "<string>",
"auto_lyrics": True,
"variety": "<string>",
"max_mode": True,
"audio_format": "<string>",
"webhook": "<string>",
"webhook_secret": "<string>"
}
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({
model: '<string>',
audio_urls: ['<string>'],
version: '<string>',
custom_model_task_id: '<string>',
prompt: '<string>',
title: '<string>',
tags: '<string>',
negative_tags: '<string>',
style_weight: 123,
weirdness: 123,
audio_weight: 123,
vocal_gender: '<string>',
auto_lyrics: true,
variety: '<string>',
max_mode: true,
audio_format: '<string>',
webhook: '<string>',
webhook_secret: '<string>'
})
};
fetch('https://api.snapgen.org/v1/music/generations', 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://api.snapgen.org/v1/music/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'audio_urls' => [
'<string>'
],
'version' => '<string>',
'custom_model_task_id' => '<string>',
'prompt' => '<string>',
'title' => '<string>',
'tags' => '<string>',
'negative_tags' => '<string>',
'style_weight' => 123,
'weirdness' => 123,
'audio_weight' => 123,
'vocal_gender' => '<string>',
'auto_lyrics' => true,
'variety' => '<string>',
'max_mode' => true,
'audio_format' => '<string>',
'webhook' => '<string>',
'webhook_secret' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.snapgen.org/v1/music/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"audio_urls\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"custom_model_task_id\": \"<string>\",\n \"prompt\": \"<string>\",\n \"title\": \"<string>\",\n \"tags\": \"<string>\",\n \"negative_tags\": \"<string>\",\n \"style_weight\": 123,\n \"weirdness\": 123,\n \"audio_weight\": 123,\n \"vocal_gender\": \"<string>\",\n \"auto_lyrics\": true,\n \"variety\": \"<string>\",\n \"max_mode\": true,\n \"audio_format\": \"<string>\",\n \"webhook\": \"<string>\",\n \"webhook_secret\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.snapgen.org/v1/music/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"audio_urls\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"custom_model_task_id\": \"<string>\",\n \"prompt\": \"<string>\",\n \"title\": \"<string>\",\n \"tags\": \"<string>\",\n \"negative_tags\": \"<string>\",\n \"style_weight\": 123,\n \"weirdness\": 123,\n \"audio_weight\": 123,\n \"vocal_gender\": \"<string>\",\n \"auto_lyrics\": true,\n \"variety\": \"<string>\",\n \"max_mode\": true,\n \"audio_format\": \"<string>\",\n \"webhook\": \"<string>\",\n \"webhook_secret\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snapgen.org/v1/music/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"audio_urls\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"custom_model_task_id\": \"<string>\",\n \"prompt\": \"<string>\",\n \"title\": \"<string>\",\n \"tags\": \"<string>\",\n \"negative_tags\": \"<string>\",\n \"style_weight\": 123,\n \"weirdness\": 123,\n \"audio_weight\": 123,\n \"vocal_gender\": \"<string>\",\n \"auto_lyrics\": true,\n \"variety\": \"<string>\",\n \"max_mode\": true,\n \"audio_format\": \"<string>\",\n \"webhook\": \"<string>\",\n \"webhook_secret\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCreate
Suno Inspo
Generate a new song inspired by one to four audio clips with Suno. 0.102perrequest,0.204 in Max mode.
POST
/
v1
/
music
/
generations
Suno Inspo
curl --request POST \
--url https://api.snapgen.org/v1/music/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"audio_urls": [
"<string>"
],
"version": "<string>",
"custom_model_task_id": "<string>",
"prompt": "<string>",
"title": "<string>",
"tags": "<string>",
"negative_tags": "<string>",
"style_weight": 123,
"weirdness": 123,
"audio_weight": 123,
"vocal_gender": "<string>",
"auto_lyrics": true,
"variety": "<string>",
"max_mode": true,
"audio_format": "<string>",
"webhook": "<string>",
"webhook_secret": "<string>"
}
'import requests
url = "https://api.snapgen.org/v1/music/generations"
payload = {
"model": "<string>",
"audio_urls": ["<string>"],
"version": "<string>",
"custom_model_task_id": "<string>",
"prompt": "<string>",
"title": "<string>",
"tags": "<string>",
"negative_tags": "<string>",
"style_weight": 123,
"weirdness": 123,
"audio_weight": 123,
"vocal_gender": "<string>",
"auto_lyrics": True,
"variety": "<string>",
"max_mode": True,
"audio_format": "<string>",
"webhook": "<string>",
"webhook_secret": "<string>"
}
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({
model: '<string>',
audio_urls: ['<string>'],
version: '<string>',
custom_model_task_id: '<string>',
prompt: '<string>',
title: '<string>',
tags: '<string>',
negative_tags: '<string>',
style_weight: 123,
weirdness: 123,
audio_weight: 123,
vocal_gender: '<string>',
auto_lyrics: true,
variety: '<string>',
max_mode: true,
audio_format: '<string>',
webhook: '<string>',
webhook_secret: '<string>'
})
};
fetch('https://api.snapgen.org/v1/music/generations', 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://api.snapgen.org/v1/music/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'audio_urls' => [
'<string>'
],
'version' => '<string>',
'custom_model_task_id' => '<string>',
'prompt' => '<string>',
'title' => '<string>',
'tags' => '<string>',
'negative_tags' => '<string>',
'style_weight' => 123,
'weirdness' => 123,
'audio_weight' => 123,
'vocal_gender' => '<string>',
'auto_lyrics' => true,
'variety' => '<string>',
'max_mode' => true,
'audio_format' => '<string>',
'webhook' => '<string>',
'webhook_secret' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.snapgen.org/v1/music/generations"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"audio_urls\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"custom_model_task_id\": \"<string>\",\n \"prompt\": \"<string>\",\n \"title\": \"<string>\",\n \"tags\": \"<string>\",\n \"negative_tags\": \"<string>\",\n \"style_weight\": 123,\n \"weirdness\": 123,\n \"audio_weight\": 123,\n \"vocal_gender\": \"<string>\",\n \"auto_lyrics\": true,\n \"variety\": \"<string>\",\n \"max_mode\": true,\n \"audio_format\": \"<string>\",\n \"webhook\": \"<string>\",\n \"webhook_secret\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.snapgen.org/v1/music/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"audio_urls\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"custom_model_task_id\": \"<string>\",\n \"prompt\": \"<string>\",\n \"title\": \"<string>\",\n \"tags\": \"<string>\",\n \"negative_tags\": \"<string>\",\n \"style_weight\": 123,\n \"weirdness\": 123,\n \"audio_weight\": 123,\n \"vocal_gender\": \"<string>\",\n \"auto_lyrics\": true,\n \"variety\": \"<string>\",\n \"max_mode\": true,\n \"audio_format\": \"<string>\",\n \"webhook\": \"<string>\",\n \"webhook_secret\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snapgen.org/v1/music/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"audio_urls\": [\n \"<string>\"\n ],\n \"version\": \"<string>\",\n \"custom_model_task_id\": \"<string>\",\n \"prompt\": \"<string>\",\n \"title\": \"<string>\",\n \"tags\": \"<string>\",\n \"negative_tags\": \"<string>\",\n \"style_weight\": 123,\n \"weirdness\": 123,\n \"audio_weight\": 123,\n \"vocal_gender\": \"<string>\",\n \"auto_lyrics\": true,\n \"variety\": \"<string>\",\n \"max_mode\": true,\n \"audio_format\": \"<string>\",\n \"webhook\": \"<string>\",\n \"webhook_secret\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodysuno-inspo generates a new song inspired by one to four public audio clips.
| Property | Value |
|---|---|
| Model ID | suno-inspo |
| Endpoint | POST /v1/music/generations (asynchronous task) |
| Group | Suno > Create |
| Input | One to four public audio URLs, plus optional lyrics and style tags |
| Result | Tracks in result.tracks with audio_url |
| Price | $0.102 per request (10.2 credits); $0.204 with max_mode: true |
string
required
Set to
suno-inspo.string[]
required
1 to 4 public
http or https audio URLs to draw inspiration from, without repeats.string
default:"v6"
Suno model version:
v6, v6-wild, or v6-mini. Omit it when you send custom_model_task_id.string
The
id of a succeeded suno-custom-model task. Generates with that custom model instead of a public version, so don’t send version.string
Lyrics, up to 5,000 characters.
string
Track title, up to 80 characters.
string
Style tags, up to 1,000 characters.
string
Styles to avoid, up to 1,000 characters.
number
Style weight, from 0 to 1.
number
Creativity, from 0 to 1. Higher values are more experimental.
number
Audio weight, from 0 to 1.
string
male or female vocals.boolean
true rewrites the lyrics you send creatively.string
Style variation:
off, normal, high, extra, or max. It doesn’t turn on Max mode or change the price.boolean
default:"false"
true turns on Suno Max mode and bills twice the request price.string
Output format:
mp3, m4a, or wav. The provider picks one if you omit it.string
Optional public
https URL that receives one signed event when the task finishes. See Task webhooks.string
Required with
webhook: 16 to 256 characters, used to sign the delivery.Request rules
The gateway checks these before it reserves any balance:- Send either
versionorcustom_model_task_id, not both.
Request
curl https://api.snapgen.org/v1/music/generations \
-H "Authorization: Bearer $SNAPGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-inspo",
"audio_urls": [
"https://example.com/reference.mp3"
],
"tags": "dreamy pop"
}'
202 with a task object and a Location: /v1/tasks/{id} header. Poll GET /v1/tasks/{id} every 10 to 20 seconds until status is succeeded or failed.
Result
result.tracks[] lists every track in its original order, each with its index and audio_url, plus title, image_url, duration_seconds, lyrics, and tags when the provider returns them. result.urls lists the audio URLs.
{
"urls": [
"https://cdn.example.com/music/night-drive.mp3"
],
"tracks": [
{
"index": 1,
"id": "clip_8f3a2c",
"title": "Night Drive",
"audio_url": "https://cdn.example.com/music/night-drive.mp3",
"image_url": "https://cdn.example.com/music/night-drive.jpg",
"duration_seconds": 184.6,
"tags": "lo-fi, soft piano, rain"
}
]
}
Result URLs are kept for about 72 hours. Download the files you want to keep.
See Music generation tasks for the task lifecycle, result fields, webhooks, and errors.