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
Section titled “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
Section titled “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”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)
MusicFinetuneResponseModel
Section titled “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
Section titled “ValidationError”loc(list of ValidationErrorLocItems, required)msg(string, required)type(string, required)
ValidationErrorLocItems
Section titled “ValidationErrorLocItems”Examples
Section titled “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()