# Elevenlabs Music v2 API

> Kuria muziką iš tekstinio raginio arba dalių kompozicijos plano, su pasirenkamu tik instrumentinės muzikos režimu

Kuria muziką iš iki 4100 simbolių tekstinio `prompt` arba struktūrizuoto `composition_plan`. Naudojant raginį, `music_length_ms` nustato 3000–600000 ms trukmę, o `force_instrumental` pašalina vokalą. `output_format` parenka kodeką, diskretizavimo dažnį ir bitų spartą, įskaitant MP3 ir PCM parinktis. `seed` veikia tik su kompozicijos planu.

- Model id: `elevenlabs/music/v2`
- Made by: ElevenLabs
- Category: Text to Music
- Output: audio
- Price per minute of your output audio: $0.60 / minute of output audio (cheapest run $0.60 (600 API credits))
- Run: `POST https://api.doitong.com/v1/run/elevenlabs/music/v2`
- Quote: `POST https://api.doitong.com/v1/quote/elevenlabs/music/v2`
- Docs page: https://doitong.com/lt/developers/models/elevenlabs/music/v2

## Pricing

Price: **$0.60 / minute of output audio**. Price per minute of your output audio: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $1.20 = 1200 API credits (2 min output audio × $0.60).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/elevenlabs/music/v2` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string \| null | no |  | ≤ 4100 characters | Norimos muzikos tekstinis aprašas. |
| `composition_plan` |  | object {chunks} \| null | no |  |  | Į dalis suskirstytas muzikos kompozicijos planas. |
| `composition_plan.chunks` |  | array of object {text, duration_ms, positive_styles, negative_styles, context_adherence, audio_reference} | yes |  | 1 – 30 items | Generavimui naudojamos eilės tvarka pateiktos dalys; jų gali būti ne daugiau kaip 30, o bendra trukmė – nuo 3000 ms iki 600000 ms. |
| `composition_plan.chunks[].text` |  | string | yes |  |  | Dalies generavimo tekstas – ne daugiau kaip 30 eilučių, kurių kiekvienoje iki 200 simbolių. Žodžiuose gali būti įterptų krypčių riestiniuose skliaustuose, pvz., {scratching}, ir jie gali prasidėti pasirenkamu skilties pavadinimu laužtiniuose skliaustuose, pvz., [Verse 1]. Pavadinimą turi sudaryti 1–100 simbolių. |
| `composition_plan.chunks[].duration_ms` |  | integer | yes |  | 3,000 – 120,000 | Dalies trukmė milisekundėmis – nuo 3000 ms iki 120000 ms. |
| `composition_plan.chunks[].positive_styles` |  | array of string | yes |  |  | Pageidaujami šios dalies stiliai ir muzikinės kryptys; didžiausią įtaką turi pirmosios dalies pasirinkimai, nustatantys bendrą dainos žanrą ir nuotaiką. Vėlesnės dalys gali plėtoti muziką, suteikti jai subtilumo arba keisti kryptį; geriausiai veikia aprašai anglų kalba. |
| `composition_plan.chunks[].negative_styles` |  | array of string \| null | no |  |  | Šioje dalyje vengtini muzikiniai stiliai ir kryptys; įrašykite tik aiškiai nepageidaujamus elementus, kitu atveju tinkama numatytoji reikšmė yra tuščias sąrašas. |
| `composition_plan.chunks[].context_adherence` |  | enum (string) \| null | no |  | `low`, `medium`, `high` | Konteksto laikymasis subalansuoja kūrybinę laisvę ir nuoseklumą su gretimomis dalimis: nuoseklumui rinkitės aukštą reikšmę, o daugiau kūrybinių nukrypimų leidžiančiam rezultatui – žemą. |
| `composition_plan.chunks[].audio_reference` |  | object {audio_url, start_ms, end_ms, strength} \| null | no |  |  | Šios dalies stilių formuojantis garso klipas; norėdami formuoti visą dainą, pateikite jį pirmojoje dalyje. Ši vieta daro didžiausią įtaką, nes jos etalonas veikia visas tolesnes dalis. |
| `music_length_ms` |  | integer \| null | no |  | 3,000 – 600,000 | Pasirenkama dainos trukmė milisekundėmis – nuo 3000 ms iki 600000 ms; taikoma tik naudojant raginį. Nepateikus modelis nustato trukmę pagal raginį. |
| `force_instrumental` |  | boolean | no | `false` |  | Tik instrumentinės muzikos valdiklis, prieinamas tik naudojant raginį. Nustačius true garantuojama instrumentinė išvestis; false leidžia instrumentinę arba neinstrumentinę muziką pagal raginį. |
| `seed` |  | integer \| null | no |  |  | Muzikos generavimo pradinė reikšmė, naudojama tik kartu su `composition_plan`, kad vykdymai su vienodais parametrais ir pradine reikšme būtų nuoseklesni. Tikslus rezultatų atkūrimas negarantuojamas. |
| `output_format` |  | enum (string) | no | `mp3_48000_192` | `mp3_22050_32`, `mp3_24000_48`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `mp3_48000_128`, `mp3_48000_192`, `mp3_48000_240`, `mp3_48000_320`, `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_32000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`, `alaw_8000`, `opus_48000_32`, `opus_48000_64`, `opus_48000_96`, `opus_48000_128`, `opus_48000_192` | Pasirinkite sugeneruoto garso formatą pagal šabloną codec_sample_rate_bitrate. Twilio garso įvestyse dažnai naudojamas μ-law, taip pat rašomas mu-law arba apytiksliai u-law; MP3 pavyzdys yra mp3_22050_32 – jis nurodo 22.05 kHz diskretizavimo dažnį ir 32 kbs dažnį bitais. |

## Example input

Required parameters only:

```json
{}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/elevenlabs/music/v2?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/elevenlabs/music/v2?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/elevenlabs/music/v2", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.com/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "elevenlabs/music/v2",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "elevenlabs/music/v2",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 1200,
    "usd": "1.20",
    "charged": 1200,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "audio": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_name": "0-output.mp3",
      "file_size": 1843200
    }
  },
  "outputs": [
    {
      "type": "audio",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_size": 1843200,
      "duration": 12,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `audio` | object {url, content_type, file_name, file_size} | Sugeneruotas muzikos failas, užkoduotas MP3 garsu. |

## Related models

- [Elevenlabs Music v2.5](https://doitong.com/developers/models/elevenlabs/music/v2.5.md) (`elevenlabs/music/v2.5`): $0.60 / minute of output audio
- [MiniMax Music 3](https://doitong.com/developers/models/minimax/music-3.md) (`minimax/music-3`): $0.002 / second
- [Elevenlabs Music](https://doitong.com/developers/models/elevenlabs/music.md) (`elevenlabs/music`): $0.60 / minute of output audio
- [ACE Step](https://doitong.com/developers/models/ace-step.md) (`ace-step`): $0.0002 / second
- [ACE Step Audio Inpaint](https://doitong.com/developers/models/ace-step/audio-inpaint.md) (`ace-step/audio-inpaint`): $0.0002 / second of input audio
- [ACE Step Audio Outpaint](https://doitong.com/developers/models/ace-step/audio-outpaint.md) (`ace-step/audio-outpaint`): $0.0002 / second of output audio
- [ACE Step Audio To Audio](https://doitong.com/developers/models/ace-step/audio-to-audio.md) (`ace-step/audio-to-audio`): $0.0002 / second of input audio
- [ACE Step Prompt To Audio](https://doitong.com/developers/models/ace-step/prompt-to-audio.md) (`ace-step/prompt-to-audio`): $0.0002 / second

## Links

- HTML page: https://doitong.com/developers/models/elevenlabs/music/v2
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=elevenlabs/music/v2
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/elevenlabs/music/v2
