Eleven Music v1 API
Eleven Music v1 by ElevenLabs, the first version of the model: a track from a description with or without vocals and background music for your video. Tracks up to 10 minutes, without a sound reference or preset styles.
For AI assistants:Download .mdAll documentation .mdOpen as text
Connect in three steps
- Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
- Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
- Run a task and collect the resultPOST /v1/tasks starts a task, GET /v1/tasks/{id} shows its status and files.
Ready-to-use code
Replace YOUR_API_KEY with your key. The code starts a task and waits for the result. In cURL, repeat the second request with the id from the first response instead of TASK_ID until status becomes succeeded.
curl -X POST "https://api.cyhub.ai/v1/tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "elevenlabs_music",
"settings": {
"mode": "song",
"prompt": "Спокойная акустическая гитара и мягкие барабаны, женский вокал на русском о летнем вечере у моря",
"duration": 90,
"title": "Летний вечер",
"model": "music_v1"
}
}'
curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"import time
import requests
API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
body = {
"model": "elevenlabs_music",
"settings": {
"mode": "song",
"prompt": "Спокойная акустическая гитара и мягкие барабаны, женский вокал на русском о летнем вечере у моря",
"duration": 90,
"title": "Летний вечер",
"model": "music_v1",
},
}
response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
time.sleep(5)
task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };
const body = {
"model": "elevenlabs_music",
"settings": {
"mode": "song",
"prompt": "Спокойная акустическая гитара и мягкие барабаны, женский вокал на русском о летнем вечере у моря",
"duration": 90,
"title": "Летний вечер",
"model": "music_v1"
}
};
async function main() {
let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
if (!response.ok) throw new Error(await response.text());
let task = await response.json();
while (task.status === "queued" || task.status === "running") {
await new Promise((resolve) => setTimeout(resolve, 5000));
response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
task = await response.json();
}
console.log(task.status, task.result);
}
main();Price before the run
Prices as of 17.10.2026: from 1 ₽. POST /v1/price shows the exact price of your settings.
| Mode | Price |
|---|---|
| Track from a description | from 5 ₽ |
| Music for a video with a 1 s file | from 1 ₽ |
Send the same settings to POST /v1/price: the response shows the price of the run without charging you.
curl -X POST "https://api.cyhub.ai/v1/price" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "elevenlabs_music",
"settings": {
"mode": "song",
"prompt": "Спокойная акустическая гитара и мягкие барабаны, женский вокал на русском о летнем вечере у моря",
"duration": 90,
"title": "Летний вечер",
"model": "music_v1"
}
}'amount_minor: the price of the run in minor units (kopecks for rubles)currency: the wallet currencyavailable_minor: how much your balance has for new tasks right now
Modes
Each mode has its own parameters and examples. The mode is set by the mode field.
- Track from a description
mode = song - Music for a video
mode = video
Track from a description
A track from a text description, with or without vocals. A sound reference can be attached.
Value of the mode field: song
This page is about Eleven Music v1: send model = music_v1. Without the model field the task runs on music_v2_5.
Price in this mode from 5 ₽.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
promptRequiredWhat music is needed: genre, mood, instruments, tempo. Describe the voice here too, and give your own lyrics here naming their language.
Type: StringMinimum characters: 1Maximum characters: 4100modelOptionalModel version: 2.5 is the newest, 2 is the previous one, 1 is the first. Version 1 has no sound reference, exclusions, adherence, seed or styles. The price is the same.
Type: StringAllowed values:music_v1Default:"music_v2_5"vocalOptionalWith vocals or instrumental. With instrumental the model does not accept negative_prompt, seed, a sound reference or adherence other than high.
Type: StringAllowed values:with_vocalsinstrumentalDefault:"with_vocals"durationOptionalTrack length in seconds, 10 to 600. The price grows with it.
Type: IntegerMinimum: 10Maximum: 600Default:60styleOptionalA ready style from the ElevenLabs library or the id of your own trained style from GET /v1/models/elevenlabs_music/styles (with status ready): the model keeps to its sound, the description sets the rest. none: no style.
Type: StringAllowed values:nonehrgo9qt4ebv9ondvrfbymyxkfft8fgqlknydgc9jc8gueokxdvc0websp3mhjhkwafhohc9agcda0cfrcmogtn8kgmqiog8dhexep1ywem2msdf5te27nvsqda3djkopsam0aiywt9prxiuhw6zlkhnmecbjoa1mvwseitetkxqcdgsmkp8qpqqhd6miiqq1sck8hxposlmgjlsj7you9jtua7rsycnbaxci6zvbfumryyjniurf2sy9ee0sdcpenlxjibgjl6wsy1m9zi7osp27p7uzmv4semqmck6dqlnhvs645jaw0kcr5ei0rsjvpjrzgdgqqvyyukiukl7mv1hamfp8dn8witowl0kuaslj0pdvdods2agammwbrhesfql7yrkaaboxnxgpojz144r6sblq1foezx1grqjgx0tz2gjqz9bkewmbsqwy9yr9rgik4fjq83lqetmjawmxfo7j0rhjoh9bcba2y9ttpddnmakxzwpsvoz6njhbsmhfoxlq4iizhs1ude6s5b5xecfqkeuskzyrnjd6p1wkctkwcndwdeg4quj3g28cbyuetrwlgduoyhnzn5nvb246gg7ihzluexd1oy54d4g2rilisuq4dir7rrlyldbl2hzqzhmmiqfkkv39avzbamxnidlsxb9wbecwwrfdsctgfc7ohoxr46pbtqmwpbubel6hpw7kwoqvxf6xixctlh6n3z81aznqz0ohl9pnmgvvvssqtnvoghqncisotr9up85ilbll68sx8s7yvqipbdqc1msstidmcusyisbeh7g7hu3yntwv25afdnzdxqdeszfpxwry2pbeymhinvkahlf4oath9qfug6jrtolcvctpxfjtzt0bpsgsvdptlafmrwao54vrDefault:"none"Do not send when:model=music_v1What the options mean
A ready style from the ElevenLabs library: reggaeton, lo-fi, hard rock, orchestra and others. The model keeps to its sound while the description sets everything else.
Works with versions 2.5 and 2; version 1 has no styles.titleOptionalTrack name: it goes into the caption and the file name. Not set: the model names the track.
Type: StringMaximum characters: 80negative_promptOptionalWhat the music must not have, comma separated: no drums, no shouting.
Type: StringMaximum characters: 500Do not send when: (vocal=instrumentalormodel=music_v1)adherenceOptionalHow strictly to follow the description: high almost literally, low as a mood.
Type: StringAllowed values:highmediumlowDefault:"high"Do not send when: (vocal=instrumentalormodel=music_v1)What the options mean
Strict - the model follows the description almost literally.
Medium - it keeps the idea but adds its own.
Loose - it takes the description as a mood and improvises.seedOptionalSeed: with the same number and settings the result is similar, though not necessarily the same. Not set: a fresh take every time.
Type: IntegerMinimum: 0Maximum: 2147483647Do not send when: (vocal=instrumentalormodel=music_v1)audio_urlsOptionalSound reference: one URL of a recording up to 30 seconds. The model takes instruments, sound, tempo and mood from it, the genre stays as described. Billed as generating the same length.
Type: List (String, uri)Maximum items: 1Do not send when: (vocal=instrumentalormodel=music_v1)reference_strengthOptionalHow strongly the reference drives the sound. No effect without a reference.
Type: StringAllowed values:lowmediumhighxhighDefault:"medium"Applies only when:audio_urlsis setDo not send when: (vocal=instrumentalormodel=music_v1)outputOptionalFormat of the finished file: standard MP3, best quality MP3 or lossless WAV. It does not affect the price.
Type: StringAllowed values:mp3_44100_192mp3_48000_320pcm_44100Default:"mp3_44100_192"lyrics_fileOptionalAttach the lyrics with timing as a separate LRC file: for subtitles and karaoke.
Type: BooleanDefault:falseai_markOptionalAn invisible mark inside the file saying the music was made by AI. It does not change the sound and works with MP3 only.
Type: BooleanDefault:false
Parameters not listed here are not accepted: the response is 422 unknown_setting.
The API sets these settings itself, do not send them: files_as_is = true
Input
- A sound reference is a URL of an MP3, WAV, M4A, OGG, OGA or FLAC file up to 50 MB and 30 seconds, sent as a whole.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio_urls | Audio | mp3, wav, m4a, ogg, oga, flac | 1 | 50 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
A song from a description
{
"model": "elevenlabs_music",
"settings": {
"mode": "song",
"prompt": "Спокойная акустическая гитара и мягкие барабаны, женский вокал на русском о летнем вечере у моря",
"duration": 90,
"title": "Летний вечер",
"model": "music_v1"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- An MP3 or WAV track. A song with lyrics also comes with the lyrics text, and on request with an LRC file of timed lyrics.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio or document | mp3, wav | 1 | WAV (output = pcm_44100) comes as a document. |
document | lrc | 0 or 1 | Timed lyrics: with lyrics_file = true, when the song has lyrics. |
result.texts: The lyrics, when the song has any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "document",
"filename": "result.lrc",
"size": 2097152,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}Music for a video
Background music for your video: length and mood follow the picture. The music here never has singing.
Value of the mode field: video
This page is about Eleven Music v1: send model = music_v1. Without the model field the task runs on music_v2_5.
Price in this mode from 1 ₽, with a 1 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
promptRequiredWhat music the video needs: mood, genre, instruments.
Type: StringMinimum characters: 1Maximum characters: 1000modelOptionalModel version: 2.5 is the newest, 2 is the previous one, 1 is the first. Version 1 has no sound reference, exclusions, adherence, seed or styles. The price is the same.
Type: StringAllowed values:music_v1Default:"music_v2_5"video_urlsRequiredOne URL of the video. The music length and the price come from the video.
Type: List (String, uri)Maximum items: 1tagsOptionalWords about the sound, comma separated, up to 10: metal, orchestra, fast tempo. The model already sees the plot in the video.
Type: StringMaximum characters: 200titleOptionalMusic name: it goes into the caption and the names of the video and music files. Not set: the files are named music.
Type: StringMaximum characters: 80outputOptionalFormat of the finished file: MP3 or lossless WAV. ElevenLabs gives no best quality MP3 in this mode. It does not affect the price.
Type: StringAllowed values:mp3_44100_192pcm_44100Default:"mp3_44100_192"ai_markOptionalAn invisible mark inside the file saying the music was made by AI. It does not change the sound and works with MP3 only.
Type: BooleanDefault:false
Parameters not listed here are not accepted: the response is 422 unknown_setting.
The API sets these settings itself, do not send them: files_as_is = true
Input
- The video is a URL of an MP4, MOV, WebM or MKV file up to 200 MB and 10 minutes, sent as a whole.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
video_urls | Video | mp4, mov, webm, mkv | 1 | 200 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
Music for a video
{
"model": "elevenlabs_music",
"settings": {
"mode": "video",
"prompt": "Лёгкая вдохновляющая музыка для ролика о путешествии",
"tags": "акустика, струнные, светлое настроение",
"video_urls": [
"https://example.com/trip.mp4"
],
"model": "music_v1"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Your video with the new music and the same music as a separate MP3 or WAV file.
| Kind | Formats | How many | Note |
|---|---|---|---|
video | mp4 | 1 | Your video with the new music. |
audio or document | mp3, wav | 1 | The same music on its own, WAV comes as a document. |
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "video",
"filename": "video.mp4",
"size": 12582912,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}See also
- Eleven Music v1: features and prices
- Other versions: Eleven Music API, Eleven Music v2 API
- Similar models: Suno V6 API
- API documentation
- API errors and how to handle them
Try Eleven Music v1 through the API
One key opens every CyHUB model. Payment in rubles, and you see the price before the run.
Get an API key