minimax-music [legacy]
Model Overview
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.
How to Make a Call
API Schemas
Generate a music sample
This endpoint creates and sends a music generation task to the server — and returns a generation ID and the task status.
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"
}
Retrieve the generated music sample from the server
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.
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
}
Quick Code Example
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:
Last updated
Was this helpful?