---
title: Composing tracks with prompts and composition plans — Eleven Music v1 | Runware Docs
url: https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans
description: How to generate music with Eleven Music v1. Covers the two input modes (simple prompt vs composition plan), prompt vocabulary, section structure, lyrics, negative styles, and the instrumental flag.
---
### [Introduction](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#introduction)

Eleven Music v1 takes one of two inputs and produces a finished audio track. Either you give it a `positivePrompt` describing the music you want in plain English and let the model decide the structure, or you give it a `compositionPlan` that spells out sections, lyrics, per-section style, and timing. The two are mutually exclusive at the API level, and you can't combine them in the same request.

[Listen to audio](https://runware.ai/docs/assets/hero.CbHQDKso.mp3)

> **Prompt**: A cinematic synth-driven score with arpeggiated leads, soft pads, and slow building tension. 90 BPM in D minor. Reflective and atmospheric. Instrumental only, no vocals.

The track above came from a single sentence in `positivePrompt` plus a 30-second `duration`. The same model also accepts a fully-specified plan with named verses, choruses, custom lyrics, and per-section style tags. This guide covers both paths and when each is the right call.

### [Two ways to compose](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#two-ways-to-compose)

The shapes look like this:

```json
// Simple-prompt mode
{
  "model": "elevenlabs:1@1",
  "positivePrompt": "...",
  "duration": 30
}

// Composition-plan mode
{
  "model": "elevenlabs:1@1",
  "providerSettings": {
    "elevenlabs": {
      "music": {
        "compositionPlan": { ... }
      }
    }
  }
}
```

Use the **simple-prompt mode** when you want a short cue, a loop, or a single mood: an ad bed, a workout track, a piece of background music. The model handles structure on your behalf and the prompt + duration are the only two levers.

Use **composition-plan mode** when the structure matters: a song with a verse and a chorus, a film cue with a quiet intro that builds, anything where you want to write the lyrics yourself or assign different styles to different parts of the track. The plan is verbose, but it gives you direct control over the shape of the output.

> [!WARNING]
> The schema enforces mutual exclusivity: sending `positivePrompt` and `compositionPlan` in the same request will fail, and so will sending `duration` alongside a `compositionPlan` (total duration in plan mode is the sum of the section durations). If you need to migrate from simple to plan mode, drop the simple-mode fields when you add the plan.

### [Simple-prompt mode](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#simple-prompt-mode)

The `positivePrompt` accepts 1 to 2000 characters of plain-English description. `duration` is an integer between 10 and 300 seconds. Together they're enough for most ad spots, intros, loops, and background beds.

**Request**:

```json
[
  {
    "taskType": "audioInference",
    "taskUUID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "model": "elevenlabs:1@1",
    "positivePrompt": "Cyberpunk synthwave with a driving bassline, retro analog leads, and 80s drum machine. 110 BPM in F sharp minor. Instrumental.",
    "duration": 25
  }
]
```

**Response**:

```json
{
  "data": [
    {
      "taskType": "audioInference",
      "taskUUID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "audioUUID": "f1e2d3c4-b5a6-7890-1234-567890abcdef",
      "audioURL": "https://am.runware.ai/audio/os/a14d18/ws/2/ai/f1e2d3c4-b5a6-7890-1234-567890abcdef.mp3"
    }
  ]
}
```[Listen to audio](https://runware.ai/docs/assets/simple-synthwave.CrlnO4ZK.mp3)

*Simple-prompt mode, 25 seconds*

> **Prompt**: Cyberpunk synthwave with a driving bassline, retro analog leads, and 80s drum machine. 110 BPM in F sharp minor. Instrumental.

#### [Prompt vocabulary](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#prompt-vocabulary)

A short, evocative prompt usually beats a long exhaustive one. The model responds well to a small number of strong, concrete descriptors in roughly this order:

- **Genre or mood**: "lo-fi hip hop", "cinematic orchestral", "synthwave", "indie folk"
- **Tempo as BPM**: "110 BPM", "85 BPM". Use concrete numbers, not "fast" or "slow"
- **Key**: "D minor", "F sharp major". Anchors the harmonic feel
- **Lead instrumentation**: "driving bassline", "arpeggiated synth lead", "fingerpicked acoustic guitar"
- **Drums or rhythm**: "80s drum machine", "soft brush kit", "no drums"
- **Vocal style** (if applicable): "raw and live", "breathy female lead", "instrumental"

Two or three of these per prompt is usually enough. Layering ten of them tends to flatten the output because contradictions accumulate.

#### [Duration](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#duration)

`duration` is integer seconds, between 10 and 300. The model fits a complete musical idea into whatever you ask for, so 30 seconds gets a tighter, more loop-friendly output than 90 seconds, which has room to develop. If you don't know yet, try 30 and decide whether to extend after listening.

### [Composition plans](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#composition-plans)

A composition plan replaces both `positivePrompt` and `duration` with a structured object that describes the whole track section by section. Every plan has three required fields:

- `positiveGlobalStyles`: an array of styles that run through the **entire track**
- `negativeGlobalStyles`: an array of styles **excluded** from the entire track (use an empty array if none)
- `sections`: between 1 and 30 sections, each with its own name, duration, local styles, and lyrics

Each section then has its own required fields:

- `sectionName`: short label like `"Intro"`, `"Verse"`, `"Chorus"`, `"Bridge"`
- `duration`: integer seconds, between 3 and 120
- `positiveLocalStyles`: styles that apply only to this section
- `negativeLocalStyles`: styles excluded only from this section
- `lines`: an array of lyric strings for this section, or an empty array for instrumental sections

The total track length is the sum of every section's `duration`. There is no separate top-level duration on a plan.

#### [Worked example: an indie-pop track](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#worked-example-an-indie-pop-track)

The plan below produces a four-section track (intro, verse, chorus, outro) with custom lyrics on the vocal sections and instrumental fills on the intro and outro:

**Request**:

```json
[
  {
    "taskType": "audioInference",
    "taskUUID": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
    "model": "elevenlabs:1@1",
    "providerSettings": {
      "elevenlabs": {
        "music": {
          "compositionPlan": {
            "positiveGlobalStyles": ["upbeat indie pop", "warm analog synths", "tight pop drums", "120 BPM", "D major"],
            "negativeGlobalStyles": ["aggressive distortion", "heavy metal", "autotune artifacts"],
            "sections": [
              {
                "sectionName": "Intro",
                "duration": 8,
                "positiveLocalStyles": ["mellow synth pads", "no drums", "fade-in"],
                "negativeLocalStyles": ["drums", "vocals"],
                "lines": []
              },
              {
                "sectionName": "Verse",
                "duration": 16,
                "positiveLocalStyles": ["clear lead vocal", "restrained drums", "sparse arrangement"],
                "negativeLocalStyles": ["heavy bass", "shouted vocals"],
                "lines": [
                  "I was walking home through the neon rain",
                  "Listening to the city like a half-remembered song",
                  "Every window a different conversation",
                  "Every step a little more like home"
                ]
              },
              {
                "sectionName": "Chorus",
                "duration": 16,
                "positiveLocalStyles": ["full drum kit", "layered harmonies", "bright synth lead", "energetic"],
                "negativeLocalStyles": ["sparse", "minimal"],
                "lines": [
                  "And we go up, up, up tonight",
                  "Light enough to leave the ground",
                  "Hold on tight, the sky is wide",
                  "No one is falling down"
                ]
              },
              {
                "sectionName": "Outro",
                "duration": 8,
                "positiveLocalStyles": ["fading instrumentals", "reverb tail", "soft pad"],
                "negativeLocalStyles": ["drums", "lead vocal"],
                "lines": []
              }
            ]
          }
        }
      }
    }
  }
]
```[Listen to audio](https://runware.ai/docs/assets/plan-pop.aiz9X0hj.mp3)

*Composition-plan mode, 48 seconds (8 + 16 + 16 + 8)*

> **Prompt**: Composition plan: indie pop, 120 BPM, D major. 8s intro (pads, no drums) → 16s verse (clear lead vocal, sparse drums) → 16s chorus (full kit, layered harmonies, bright lead) → 8s outro (fading instrumentals).

Four mechanics in this plan:

- The **intro and outro use empty** `lines` **arrays**, which signals "no vocals this section". This is the per-section equivalent of `forceInstrumental` (covered below), letting you mix vocal and instrumental sections in one track.
- The **verse and chorus have contrasting local styles** (`"sparse arrangement"` vs `"full drum kit"`). Local styles override or extend the global ones for the duration of that section.
- The **lyrics are written one line per array element**. The model handles meter and prosody, so you don't need to count syllables, but well-scanned lyrics produce more natural vocal delivery.
- The **negative local styles add specificity to the contrast**. `negativeLocalStyles: ["sparse"]` on the chorus tells the model "don't let this section sound like the verse", which sharpens the dynamic shift.

#### [Writing lyrics](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#writing-lyrics)

The `lines` array should contain only singable or speakable content. Performance directions, vocal styles, and stage directions belong in `positiveLocalStyles`, not in the lyrics themselves:

```json
// Wrong — directions embedded in lyrics
{ "lines": ["(whispered) I've been waiting", "(Man) Let's get started"] }

// Right — directions in styles, lyrics are clean
{
  "positiveLocalStyles": ["whispered delivery", "male vocalist"],
  "lines": ["I've been waiting", "Let's get started"]
}
```

Phonetic sounds are valid lyrics: `"(hmmm hmmm)"`, `"(ooh)"`, `"(yeah)"`. The model renders them as vocalisations rather than spoken words.

Lyrics support multiple languages including English, Spanish, German, and Japanese. Styles must always be written in English, but lyrics can be in any supported language.

> [!NOTE]
> A separate boolean, `respectSectionsDurations`, controls whether section durations are treated as hard targets or as approximations the model can adjust for musical flow. The default is strict timing. Set `respectSectionsDurations: false` for better audio quality at the cost of less precise timing. Keep the default when you need the section breakdown to line up with a video cut, a voiceover script, or another fixed timeline.

### [Negative styles for steering away](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#negative-styles-for-steering-away)

Both global and local styles have negative counterparts. `negativeGlobalStyles` excludes things from the whole track. `negativeLocalStyles` excludes them from a single section. They're not optional fields, so even when you don't have anything to exclude, you still need to pass an empty array.

Negative styles work as **guardrails**, not surgical removals. They steer the model's interpretation away from moods and production choices you don't want. The two tracks below use the **same positive global styles** (`"pop"`, `"female vocals"`, `"acoustic guitar"`, `"uplifting energy"`, `"120 BPM"`) and the **same lyrics**. The second track adds mood-level negatives to fence off darker or more aggressive interpretations:

[Listen to audio](https://runware.ai/docs/assets/negative-without.B-Smk1K3.mp3)

*Without negative styles*

> **Prompt**: Pop, female vocals, acoustic guitar, uplifting energy, 120 BPM. No negative styles

[Listen to audio](https://runware.ai/docs/assets/negative-with.B_FaPec0.mp3)

*With negative styles*

> **Prompt**: Same positive styles and lyrics. Negative global: 'dark', 'aggressive', 'heavy metal', 'screaming', 'slow tempo', 'sad'. Negative local: 'heavy', 'distorted'.

Without negatives, the model is free to interpret "pop" broadly, and the result may drift toward heavier production or a darker tone. With negatives, the output stays closer to the bright, acoustic character the positive styles describe.

Use negatives when you notice the model drifting toward an unwanted mood or genre. They work best as broad stylistic fences (`"dark"`, `"aggressive"`, `"sad"`) rather than specific instrument names.

### [Vocals and instrumental](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#vocals-and-instrumental)

Two controls handle vocals at different scopes.

**Top-level**, `forceInstrumental` (boolean) on the music settings guarantees the entire track is instrumental. Same prompt, the flag flipped:

[Listen to audio](https://runware.ai/docs/assets/instrumental-off.AXXJVUWD.mp3)

*forceInstrumental: false (default)*

> **Prompt**: Upbeat folk pop with acoustic guitar, hand claps, and a warm rhythm section. 95 BPM in G major. Bright and joyful.

[Listen to audio](https://runware.ai/docs/assets/instrumental-on.7lB-RuLd.mp3)

*forceInstrumental: true*

> **Prompt**: Upbeat folk pop with acoustic guitar, hand claps, and a warm rhythm section. 95 BPM in G major. Bright and joyful.

> [!WARNING]
> `forceInstrumental` only works in simple-prompt mode. In composition-plan mode, control vocals per section by leaving the `lines` array empty for instrumental sections and adding `"vocals"` to `negativeLocalStyles`.

**Per-section**, inside a composition plan, leaving `lines` empty on a section produces an instrumental for that section while other sections can still carry vocals. This is what the indie-pop example above does with its Intro and Outro.

```json
// Whole-track instrumental (simple-prompt mode only)
"providerSettings": {
  "elevenlabs": {
    "music": {
      "forceInstrumental": true
    }
  }
}

// Per-section instrumental (plan mode)
{
  "sectionName": "Intro",
  "duration": 8,
  "positiveLocalStyles": ["mellow synth pads"],
  "negativeLocalStyles": ["vocals"],
  "lines": []
}
```

#### [Stem isolation and vocal control](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#stem-isolation-and-vocal-control)

For finer control over individual instruments or vocals, the model responds to specific prefix patterns in style arrays:

- **Solo instruments**: prefix with `"solo"`, e.g., `"solo electric guitar"`, `"solo piano in C minor"`. This isolates the instrument as the dominant or only element.
- **A cappella vocals**: prefix with `"a cappella"`, e.g., `"a cappella female vocals"`, `"a cappella male chorus"`. This produces vocals with minimal or no accompaniment.
- **Multiple vocalists**: describe the arrangement directly, e.g., `"two singers harmonizing in C"`, `"male and female duet"`.
- **Vocal character**: use expressive descriptors like `"breathy"`, `"raw"`, `"aggressive"`, `"live"`, `"glitching"`.

For best results when isolating stems, include key, BPM, and a mood word alongside the isolation directive.

### [Tips](https://runware.ai/docs/models/elevenlabs-music-v1/guides/composing-with-prompts-and-plans#tips)

1. **Start in simple-prompt mode.** Most use cases never need a composition plan. Try the simple shape first. Reach for a plan when the track has to have a specific structure or your own lyrics.
    
2. **Two or three positive styles beat ten.** The model handles a short, concrete prompt better than a sprawling one. If you find yourself stacking nine descriptors, audit them for redundancy and conflict.
    
3. **Add a negative when the output drifts.** Generate two or three tracks before deciding. If the same unwanted thing keeps showing up, put it in `negativeGlobalStyles` and regenerate. Use mood and genre terms (`"dark"`, `"aggressive"`) rather than specific instrument names.
    
4. **Use empty `lines` arrays for instrumental sections.** Don't reach for `forceInstrumental` if you only want one or two sections to be instrumental. The flag is whole-track and prompt-only. Empty `lines` is per-section.
    
5. **Match section durations to your downstream cut.** If the track sits under a video or voiceover, keep the default strict timing and pick section durations that match the cut points. Set `respectSectionsDurations: false` only when you want the model to optimize for musical flow over precise timing.
    
6. **Write lyrics one idea per line.** The model treats each entry in `lines` as a unit of phrasing. Long, comma-separated single strings produce less natural prosody than short, line-broken entries. Keep performance directions in styles, not in lyrics.
    
7. **Specify a BPM and a key.** "Energetic" is vague. "130 BPM in A minor, energetic" is direction the model can act on. The numbers do most of the work, and the mood word adds color on top.
    
8. **Output format.** Generated audio is delivered as MP3 (44.1 kHz, 128–192 kbps).