IMAGINE
Generate a song with a lyrics video clip. You have access to the chirp-v3-0 and chirp-v3-5 models. This endpoint actually generates two songs with the same lyrics.
POST https://api.apiframe.pro/suno-imagine
Headers
Content-Type
application/json
Authorization*
Your APIFRAME API Key
Body
prompt
string
the text prompt for Suno AI, just describe the song. Only needed if the lyrics field is not submitted
lyrics
string
lyrics for the song to generate, only needed if the prompt is not submitted
model
string
The music generation model to use. Can be 'chirp-v3-0' , 'chirp-v3-5' or 'chirp-v4'. 'chirp-v4' by default
make_instrumental
boolean
Use true to Generate instrumental without lyrics
title
string
a title for the song
tags
string
style tags for the song, ex: 'rap pop'
webhook_url
string
The final result and updates of this task will be posted at this URL.
webhook_secret
string
Will be passed as x-webhook-secret in the webhook call headers for authentication.
Response
// Success, the task has been submitted
{
"task_id": "29e983ca-7e86-4017-a9e3-ef6fe9cd5f2a"
}// Bad request
{
"errors": [{ msg: "Invalid request" }]
}// Invalid API Key
{}// A server error occured
{}This endpoint doesn't generate the songs instantly, you can use the Fetch endpoint to fetch the result or use webhooks.
The result (posted to the webhook_url or retrieved with the Fetch endpoint) looks like this:
{
"task_id": "29e983ca-7e86-4017-a9e3-xxxxxxxxx",
"task_type": "suno",
"status": "finished",
"songs": [
{
"lyrics": "....",
"song_id": "ea6813ad-03ce-4a0b-a616-xxxxxxxxx",
"audio_url": "https://....xxxxxxxxx.mp3",
"image_url": "https://....xxxxxxxxx.jpeg",
"video_url": "https://....xxxxxxxxx.mp4"
},
{
"lyrics": "...",
"song_id": "21ad7efc-4954-4ae4-ae2a-xxxxxxxx",
"audio_url": "https://....xxxxxxxxx.mp3",
"image_url": "https://....xxxxxxxxx.jpeg",
"video_url": "https://....xxxxxxxxx.mp4"
}
]
}If the job is not completed, you will get a result like this:
{
"task_id": "29e983ca-7e86-4017-a9e3-xxxxxxxxx",
"task_type": "suno",
"status": "processing",
"percentage": 56,
"songs": [
{
"lyrics": "....",
"song_id": "ea6813ad-03ce-4a0b-a616-xxxxxxxxx",
"audio_url": "https://....xxxxxxxxx.mp3",
"image_url": "https://....xxxxxxxxx.jpeg",
"video_url": null
},
{
"lyrics": "...",
"song_id": "21ad7efc-4954-4ae4-ae2a-xxxxxxxx",
"audio_url": "https://....xxxxxxxxx.mp3",
"image_url": "https://....xxxxxxxxx.jpeg",
"video_url": null
}
]
}Code samples
const axios = require('axios');
const data = JSON.stringify({
"prompt": "a true friend",
"webhook_url": "https://........",
"webhook_secret": "abc123"
});
const config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.apiframe.pro/suno-imagine',
headers: {
'Content-Type': 'application/json',
'Authorization': 'YOUR_API_KEY'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
import requests
import json
url = "https://api.apiframe.pro/suno-imagine"
payload = json.dumps({
"prompt": "a true friend",
"webhook_url": "https://........",
"webhook_secret": "abc123"
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.apiframe.pro/suno-imagine',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"prompt": "a true friend",
"webhook_url": "https://........",
"webhook_secret": "abc123"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: YOUR_API_KEY'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"prompt\": \"a true friend\",\r\n \"webhook_url\": \"https://........\",\r\n \"webhook_secret\": \"abc123\"\r\n}");
Request request = new Request.Builder()
.url("https://api.apiframe.pro/suno-imagine")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();var headers = {
'Content-Type': 'application/json',
'Authorization': 'YOUR_API_KEY'
};
var data = json.encode({
"prompt": "a true friend",
"webhook_url": "https://........",
"webhook_secret": "abc123"
});
var dio = Dio();
var response = await dio.request(
'https://api.apiframe.pro/suno-imagine',
options: Options(
method: 'POST',
headers: headers,
),
data: data,
);
if (response.statusCode == 200) {
print(json.encode(response.data));
}
else {
print(response.statusMessage);
}var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.apiframe.pro/suno-imagine");
request.Headers.Add("Authorization", "YOUR_API_KEY");
var content = new StringContent("{\r\n \"prompt\": \"a true friend\",\r\n \"webhook_url\": \"https://........\",\r\n \"webhook_secret\": \"abc123\"\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());require "uri"
require "json"
require "net/http"
url = URI("https://api.apiframe.pro/suno-imagine")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "YOUR_API_KEY"
request.body = JSON.dump({
"prompt": "a true friend",
"webhook_url": "https://........",
"webhook_secret": "abc123"
})
response = https.request(request)
puts response.read_body
Last updated
Was this helpful?