minimax-music [legacy]
Last updated
Was this helpful?
Last updated
Was this helpful?
An advanced AI model that generates diverse high-quality audio compositions by analyzing and reproducing musical patterns, rhythms, and vocal styles from the reference track. Refine the process using a text prompt.
Create an Account: Visit the AI/ML API website and create an account (if you don’t have one yet). Generate an API Key: After logging in, navigate to your account dashboard and generate your API key. Ensure that key is enabled on UI.
At the bottom of this page, you'll find a code example that shows how to structure the request. Choose the code snippet in your preferred programming language and copy it into your development environment.
Generating an audio sample using this model involves sequentially calling two endpoints:
The first one is for creating and sending a music generation task to the server (returns a generation ID).
The second one is for requesting the generated audio sample from the server using the generation ID received from the first endpoint.
The code example combines both endpoint calls.
Replace <YOUR_AIMLAPI_KEY>
with your actual AI/ML API key from your account.
Provide your lyrics via the prompt
parameter. The model will use it to generate a song.
Keep in mind that the maximum length of generated audio is 1 minute. If you provide a prompt
that’s too long (which the model tries to use as song lyrics), it might exceed the time limit and result in a "Downstream service error."
Via reference_audio_url
parameter, provide a URL to a reference track from which the model will extract the genre, style, tempo, vocal and instrument timbres, and the overall mood of the piece.
If you need a more detailed walkthrough for setting up your development environment and making a request step by step — feel free to use our Quickstart guide.
This endpoint creates and sends a music generation task to the server — and returns a generation ID and the task status.
After sending a request for music generation, this task is added to the queue. Based on the service's load, the generation can be completed in 50-60 seconds or take a bit more.
Here is an example of generation an audio file based on a sample and a prompt using the music model minimax-music.
import time
import requests
# Insert your AI/ML API key instead of <YOUR_AIMLAPI_KEY>:
aimlapi_key = '<YOUR_AIMLAPI_KEY>'
# Creating and sending an audio generation task to the server (returns a generation ID)
def generate_audio():
url = "https://api.aimlapi.com/v2/generate/audio"
payload = {
"model": "minimax-music",
"reference_audio_url": 'https://tand-dev.github.io/audio-hosting/spinning-head-271171.mp3',
"prompt": '''
##Side by side, through thick and thin, \n\nWith a laugh, we always win. \n\n Storms may come, but we stay true, \n\nFriends forever—me and you!##
''',
}
headers = {"Authorization": f"Bearer {aimlapi_key}", "Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
if response.status_code >= 400:
print(f"Error: {response.status_code} - {response.text}")
else:
response_data = response.json()
print("Generation:", response_data)
return response_data
# Requesting the result of the generation task from the server using the generation_id:
def retrieve_audio(gen_id):
url = "https://api.aimlapi.com/v2/generate/audio"
params = {
"generation_id": gen_id,
}
headers = {"Authorization": f"Bearer {aimlapi_key}", "Content-Type": "application/json"}
response = requests.get(url, params=params, headers=headers)
return response.json()
# This is the main function of the program. From here, we sequentially call the audio generation and then repeatedly request the result from the server every 10 seconds:
def main():
generation_response = generate_audio()
gen_id = generation_response.get("id")
if gen_id:
start_time = time.time()
timeout = 600
while time.time() - start_time < timeout:
response_data = retrieve_audio(gen_id)
if response_data is None:
print("Error: No response from API")
break
status = response_data.get("status")
if status == "generating" or status == "queued" or status == "waiting":
print("Still waiting... Checking again in 10 seconds.")
time.sleep(10)
else:
print("Generation complete:/n", response_data)
return response_data
print("Timeout reached. Stopping.")
return None
if __name__ == "__main__":
main()
Listen to the track we generated:
GET /v2/generate/audio HTTP/1.1
Host: api.aimlapi.com
Authorization: Bearer <YOUR_AIMLAPI_KEY>
Accept: */*
{
"audio_file": {
"url": "https://example.com"
},
"id": "text",
"status": "queued",
"error": null
}
Reference song, should contain music and vocals. Must be a .wav or .mp3 file longer than 15 seconds
POST /v2/generate/audio HTTP/1.1
Host: api.aimlapi.com
Authorization: Bearer <YOUR_AIMLAPI_KEY>
Content-Type: application/json
Accept: */*
Content-Length: 85
{
"model": "minimax-music",
"prompt": "text",
"reference_audio_url": "https://example.com"
}
{
"id": "text",
"status": "queued"
}