IMAGINE
Generate a music song. You have access to the udio32-v1.5 and udio130-v1.5 models. This endpoint actually generates two different songs with their own lyrics.
POST
https://api.apiframe.pro/udio-imagine
Headers
Content-Type
application/json
Authorization*
Your APIFRAME API Key
Body
prompt
string
The text prompt for Udio AI; just describe the song. If you want to set the lyrics, this field can be used as tags, ex: 'rap, pop'
lyrics
string
The lyrics for the song to generate, if you want.
model
string
The music generation model to use. It can be 'udio32-v1.5' or 'udio130-v1.5'. 'udio32-v1.5' by default
bypass_prompt_optimization
boolean
Use true
to bypass prompt optimization by AI, false by default
prompt_strength
float
the prompt strength, from 0 to 1
clarity_strength
float
the clarity strength, from 0 to 1
lyrics_strength
float
the lyrics strength, from 0 to 1
generation_quality
float
the generation quality, from 0 to 1
negative_prompt
string
describe what you don't want
lyrics_placement_start
float
Where (timestamp) should the lyrics you provided be used (start) in the song? ex: 4
lyrics_placement_end
float
Where (timestamp) should the lyrics you provided be used (end) in the song? ex: 20
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"
}
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": "udio",
"status": "finished",
"songs": [
{
"lyrics": "....",
"song_id": "ea6813ad-03ce-4a0b-a616-xxxxxxxxx",
"audio_url": "https://....xxxxxxxxx.mp3",
"image_url": "https://....xxxxxxxxx.jpeg",
},
{
"lyrics": "...",
"song_id": "21ad7efc-4954-4ae4-ae2a-xxxxxxxx",
"audio_url": "https://....xxxxxxxxx.mp3",
"image_url": "https://....xxxxxxxxx.jpeg",
}
]
}
If the job is not completed, you will get a result like this:
{
"task_id": "29e983ca-7e86-4017-a9e3-xxxxxxxxx",
"task_type": "udio",
"status": "processing",
"percentage": 56,
"songs": [
{
"lyrics": "....",
"song_id": "ea6813ad-03ce-4a0b-a616-xxxxxxxxx",
"audio_url": null",
"image_url": "https://....xxxxxxxxx.jpeg",
},
{
"lyrics": "...",
"song_id": "21ad7efc-4954-4ae4-ae2a-xxxxxxxx",
"audio_url": null,
"image_url": "https://....xxxxxxxxx.jpeg",
}
]
}
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/udio-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);
});
Last updated
Was this helpful?