Get Music Finetunes
GET https://api.elevenlabs.io/v1/music/finetunes
List music finetunes accessible to you (your own, workspace-shared, and ElevenLabs-curated), with optional filtering, sorting, and cursor pagination.
Reference: https://elevenlabs.io/docs/api-reference/music/finetunes/list
Servers
https://api.elevenlabs.io(Production, default)https://api.us.elevenlabs.io(Production US)https://api.eu.residency.elevenlabs.io(Production EU)https://api.in.residency.elevenlabs.io(Production India)https://api.sg.residency.elevenlabs.io(Production Singapore)
Request
Query parameters
Section titled “Query parameters”cursor(string, optional, nullable) — Used for fetching the next page. Cursor is returned in the response.page_size(integer, optional, default: 50) — How many finetunes to return. Max 150, default 50.visibility(enum, optional, nullable) — Filter by visibility. 'private' returns private finetunes; 'workspace' returns workspace-shared finetunes; 'public' returns public finetunes, which are currently ElevenLabs curated finetunes. Omit to return all accessible finetunes.- Allowed values:
private,workspace,public
- Allowed values:
created_by(enum, optional, nullable) — Filter by creator. 'self' returns finetunes you created; 'workspace' returns finetunes created by workspace teammates; 'elevenlabs' returns ElevenLabs curated finetunes. Omit to return finetunes from all creators.- Allowed values:
self,workspace,elevenlabs
- Allowed values:
sort(enum, optional, default: created_at) — Sort by field (created_at or name)- Allowed values:
created_at,name
- Allowed values:
sort_direction(enum, optional, default: desc) — Sort direction (asc or desc)- Allowed values:
asc,desc
- Allowed values:
Response
Section titled “Response”200
Successful Response
finetunes(list of MusicFinetuneResponseModel, required) — The finetunes in this page.next_cursor(string, required, nullable) — Cursor to pass ascursorto fetch the next page;nullwhen there are no more results.has_more(boolean, required) — Whether more finetunes are available beyond this page.
Errors
Section titled “Errors”422 Unprocessable Entity Error
Section titled “422 Unprocessable Entity Error”Validation Error
detail(list of ValidationError, optional)
Types
MusicFinetuneResponseModel
id(string, required) — Unique identifier of the finetune.name(string, required) — Name of the finetune.tags(list of string, required) — Tags associated with the finetune.model_id(string, required) — The base music model the finetune was trained on.created_at(string, required) — When the finetune was created (UTC).visibility(enum, required) — Who can access this finetune:private(only you),workspace(members of your workspace),public(ElevenLabs-curated, available to everyone).- Allowed values:
private,workspace,public
- Allowed values:
created_by(enum, required) — Who created the finetune:self,workspace, orelevenlabs.- Allowed values:
self,workspace,elevenlabs
- Allowed values:
status(enum, required) — Training lifecycle status: pending, in_progress, completed, failed, and blocked.- Allowed values:
pending,in_progress,completed,failed,blocked
- Allowed values:
training_progress(double, required) — Training progress from 0.0 to 1.0.primary_genre(string, optional, nullable) — Primary musical genre of the finetune.failure_reason(enum, optional, nullable) — Reason the finetune failed or was blocked, if applicable.- Allowed values:
audio_processing_failed,copyright_violation,training_failed
- Allowed values:
ValidationError
loc(list of ValidationErrorLocItems, required)msg(string, required)type(string, required)
ValidationErrorLocItems
Examples
Response
{
"finetunes": [
{
"id": "string",
"name": "string",
"tags": [
"string"
],
"model_id": "music_v1",
"created_at": "2024-01-15T09:30:00Z",
"visibility": "private",
"created_by": "self",
"status": "pending",
"training_progress": 1.1,
"primary_genre": "string",
"failure_reason": "audio_processing_failed"
}
],
"next_cursor": "string",
"has_more": true
}SDK Code
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
async function main() {
const client = new ElevenLabsClient();
await client.music.finetunes.list({});
}
main();
from elevenlabs import ElevenLabs
client = ElevenLabs()
client.music.finetunes.list()
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.elevenlabs.io/v1/music/finetunes"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.elevenlabs.io/v1/music/finetunes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyimport com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.get("https://api.elevenlabs.io/v1/music/finetunes")
.asString();<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.elevenlabs.io/v1/music/finetunes');
echo $response->getBody();using RestSharp;
var client = new RestClient("https://api.elevenlabs.io/v1/music/finetunes");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);import Foundation
let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/music/finetunes")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()