CyHUB
РусскийGet an API key

Eleven Music API

Eleven Music by ElevenLabs: a track from a description with or without vocals, music for your video and splitting a finished recording into stems.

Developer: ElevenLabsModel key in the API: elevenlabs_music

For AI assistants:Download .mdAll documentation .mdOpen as text

Connect in three steps

  1. Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
  2. Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
  3. 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
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_v2_5"
  }
}'

curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
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_v2_5",
    },
}

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"])
Node.js
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_v2_5"
  }
};

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();
Get a key

Price before the run

Prices as of 15.10.2026: from 1 ₽. POST /v1/price shows the exact price of your settings.

ModePrice
Track from a descriptionfrom 5 ₽
Music for a video with a 1 s filefrom 1 ₽
Split into stems with a 1 s filefrom 1 ₽

Send the same settings to POST /v1/price: the response shows the price of the run without charging you.

cURL
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_v2_5"
  }
}'
  • amount_minor: the price of the run in minor units (kopecks for rubles)
  • currency: the wallet currency
  • available_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

A track from a text description, with or without vocals. A sound reference can be attached.

Value of the mode field: song

Price in this mode from 5 ₽.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What 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: 4100
modelOptional

Model version: 2.5 is the newest, 2 is the previous one. The price is the same.

Type: StringAllowed values: music_v2_5Default: "music_v2_5"
vocalOptional

With 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"
durationOptional

Track length in seconds, 10 to 600. The price grows with it.

Type: IntegerMinimum: 10Maximum: 600Default: 60
styleOptional

A ready style from the ElevenLabs library: the model keeps to its sound, the description sets the rest. none: no style.

Type: StringAllowed values: nonehrgo9qt4ebv9ondvrfbymyxkfft8fgqlknydgc9jc8gueokxdvc0websp3mhjhkwafhohc9agcda0cfrcmogtn8kgmqiog8dhexep1ywem2msdf5te27nvsqda3djkopsam0aiywt9prxiuhw6zlkhnmecbjoa1mvwseitetkxqcdgsmkp8qpqqhd6miiqq1sck8hxposlmgjlsj7you9jtua7rsycnbaxci6zvbfumryyjniurf2sy9ee0sdcpenlxjibgjl6wsy1m9zi7osp27p7uzmv4semqmck6dqlnhvs645jaw0kcr5ei0rsjvpjrzgdgqqvyyukiukl7mv1hamfp8dn8witowl0kuaslj0pdvdods2agammwbrhesfql7yrkaaboxnxgpojz144r6sblq1foezx1grqjgx0tz2gjqz9bkewmbsqwy9yr9rgik4fjq83lqetmjawmxfo7j0rhjoh9bcba2y9ttpddnmakxzwpsvoz6njhbsmhfoxlq4iizhs1ude6s5b5xecfqkeuskzyrnjd6p1wkctkwcndwdeg4quj3g28cbyuetrwlgduoyhnzn5nvb246gg7ihzluexd1oy54d4g2rilisuq4dir7rrlyldbl2hzqzhmmiqfkkv39avzbamxnidlsxb9wbecwwrfdsctgfc7ohoxr46pbtqmwpbubel6hpw7kwoqvxf6xixctlh6n3z81aznqz0ohl9pnmgvvvssqtnvoghqncisotr9up85ilbll68sx8s7yvqipbdqc1msstidmcusyisbeh7g7hu3yntwv25afdnzdxqdeszfpxwry2pbeymhinvkahlf4oath9qfug6jrtolcvctpxfjtzt0bpsgsvdptlafmrwao54vrDefault: "none"
titleOptional

Track name: it goes into the caption and the file name. Not set: the model names the track.

Type: StringMaximum characters: 80
negative_promptOptional

What the music must not have, comma separated: no drums, no shouting.

Type: StringMaximum characters: 500
adherenceOptional

How strictly to follow the description: high almost literally, low as a mood.

Type: StringAllowed values: highmediumlowDefault: "high"
seedOptional

Seed: 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: 2147483647
audio_urlsOptional

Sound 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: 1
reference_strengthOptional

How strongly the reference drives the sound. No effect without a reference.

Type: StringAllowed values: lowmediumhighxhighDefault: "medium"
outputOptional

Format 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_fileOptional

Attach the lyrics with timing as a separate LRC file: for subtitles and karaoke.

Type: BooleanDefault: false
ai_markOptional

An 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 or WAV file up to 50 MB and 30 seconds, sent as a whole.
FieldAcceptsFormatsFilesFile size up to
audio_urlsAudiomp3, wav150 MB
How to send files

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

JSON
{
  "model": "elevenlabs_music",
  "settings": {
    "mode": "song",
    "prompt": "Спокойная акустическая гитара и мягкие барабаны, женский вокал на русском о летнем вечере у моря",
    "duration": 90,
    "title": "Летний вечер"
  }
}

Instrumental music

JSON
{
  "model": "elevenlabs_music",
  "settings": {
    "mode": "song",
    "prompt": "Энергичная электроника для спортивного ролика, быстрый темп",
    "vocal": "instrumental",
    "duration": 30,
    "output": "pcm_44100"
  }
}

A track from a sound reference

JSON
{
  "model": "elevenlabs_music",
  "settings": {
    "mode": "song",
    "prompt": "Тёплый лоу-фай хип-хоп для учёбы, тихий мужской вокал",
    "audio_urls": [
      "https://example.com/reference.mp3"
    ],
    "reference_strength": "high",
    "duration": 60
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

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.
KindFormatsHow manyNote
audio or documentmp3, wav1WAV (output = pcm_44100) comes as a document.
documentlrc0 or 1Timed 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.

JSON
{
  "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"
      }
    ]
  }
}
How to read the result and download files

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

Price in this mode from 1 ₽, with a 1 s file.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What music the video needs: mood, genre, instruments.

Type: StringMinimum characters: 1Maximum characters: 1000
modelOptional

Model version: 2.5 is the newest, 2 is the previous one. The price is the same.

Type: StringAllowed values: music_v2_5Default: "music_v2_5"
video_urlsRequired

One URL of the video. The music length and the price come from the video.

Type: List (String, uri)Maximum items: 1
tagsOptional

Words about the sound, comma separated, up to 10: metal, orchestra, fast tempo. The model already sees the plot in the video.

Type: StringMaximum characters: 200
titleOptional

Music 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: 80
outputOptional

Format 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_markOptional

An 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 file up to 200 MB and 10 minutes, sent as a whole.
FieldAcceptsFormatsFilesFile size up to
video_urlsVideomp41200 MB
How to send files

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

JSON
{
  "model": "elevenlabs_music",
  "settings": {
    "mode": "video",
    "prompt": "Лёгкая вдохновляющая музыка для ролика о путешествии",
    "tags": "акустика, струнные, светлое настроение",
    "video_urls": [
      "https://example.com/trip.mp4"
    ]
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • Your video with the new music and the same music as a separate MP3 or WAV file.
KindFormatsHow manyNote
videomp41Your video with the new music.
audio or documentmp3, wav1The 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.

JSON
{
  "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"
      }
    ]
  }
}
How to read the result and download files

Split into stems

A finished recording is split into separate stems: vocals, drums, bass and the rest.

Value of the mode field: stems

Price in this mode from 1 ₽, with a 1 s file.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

audio_urlsRequired

One URL of the recording to split. The price follows its length.

Type: List (String, uri)Maximum items: 1
stemsOptional

Two stems: vocals and all the other music. Six: vocals, drums, bass, guitar, keys and the rest. Six cost twice as much as two.

Type: StringAllowed values: two_stems_v1six_stems_v1Default: "two_stems_v1"
outputOptional

Format 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_markOptional

An 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 recording is a URL of an MP3 file up to 50 MB and 10 minutes, sent as a whole.
FieldAcceptsFormatsFilesFile size up to
audio_urlsAudiomp3150 MB
How to send files

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.

Vocals apart from the music

JSON
{
  "model": "elevenlabs_music",
  "settings": {
    "mode": "stems",
    "audio_urls": [
      "https://example.com/song.mp3"
    ],
    "stems": "two_stems_v1"
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • A ZIP archive with every stem as a separate file in the chosen format.
KindFormatsHow manyNote
documentzip1Inside, every stem is a separate MP3 or WAV file.

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.

JSON
{
  "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": "document",
        "filename": "result.zip",
        "size": 2097152,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
How to read the result and download files

See also

Try Eleven Music through the API

One key opens every CyHUB model. Payment in rubles, and you see the price before the run.

Get an API key