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

Name
Value

Content-Type

application/json

Authorization*

Your APIFRAME API Key

Body

Name
Type
Description

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?