music

Summary

AI-generated music composition from text prompts with optional fine-grained control via composition plans.

  • Supports prompt-based generation for instrumental tracks, songs with lyrics, background music, and jingles with configurable length in milliseconds
  • Composition plans enable structured control over styles and sections; generate a plan, modify it, then compose for granular customization
  • Includes compose_detailed method for retrieving audio alongside composition plan and metadata in a single call
  • Content restrictions prevent referencing specific artists or copyrighted lyrics; API returns suggestions for rejected prompts
  • Requires ElevenLabs API key and internet access; available in Python, JavaScript, and via cURL
SKILL.md

ElevenLabs Music Generation

Generate music from text prompts - supports instrumental tracks, songs with lyrics, and fine-grained control via composition plans.

Setup: See Installation Guide. For JavaScript, use @elevenlabs/* packages only.

Quick Start

Python

from elevenlabs import ElevenLabs

client = ElevenLabs()

audio = client.music.compose(
    prompt="A chill lo-fi hip hop beat with jazzy piano chords",
    music_length_ms=30000
)

with open("output.mp3", "wb") as f:
    for chunk in audio:
        f.write(chunk)

JavaScript

import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import { createWriteStream } from "fs";

const client = new ElevenLabsClient();
const audio = await client.music.compose({
  prompt: "A chill lo-fi hip hop beat with jazzy piano chords",
  musicLengthMs: 30000,
});
audio.pipe(createWriteStream("output.mp3"));

cURL

curl -X POST "https://api.elevenlabs.io/v1/music" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
  -d '{"prompt": "A chill lo-fi beat", "music_length_ms": 30000}' --output output.mp3

Methods

Method Description
music.compose Generate audio from a prompt or composition plan
music.composition_plan.create Generate a structured plan for fine-grained control
music.compose_detailed Generate audio + composition plan + metadata
music.upload Upload an audio file for later inpainting workflows and optionally extract its composition plan

See API Reference for full parameter details.

music.upload is available to enterprise clients with access to the inpainting feature.

Composition Plans

For granular control, generate a composition plan first, modify it, then compose:

plan = client.music.composition_plan.create(
    prompt="An epic orchestral piece building to a climax",
    music_length_ms=60000
)

# Inspect/modify styles and sections
print(plan.positiveGlobalStyles)  # e.g. ["orchestral", "epic", "cinematic"]

audio = client.music.compose(
    composition_plan=plan,
    music_length_ms=60000
)

Content Restrictions

  • Cannot reference specific artists, bands, or copyrighted lyrics
  • bad_prompt errors include a prompt_suggestion with alternative phrasing
  • bad_composition_plan errors include a composition_plan_suggestion

Error Handling

try:
    audio = client.music.compose(prompt="...", music_length_ms=30000)
except Exception as e:
    print(f"API error: {e}")

Common errors: 401 (invalid key), 422 (invalid params), 429 (rate limit).

References

Weekly Installs
1.4K
GitHub Stars
146
First Seen
Jan 29, 2026
Installed on
codex1.0K
gemini-cli1.0K
opencode1.0K
claude-code949
github-copilot909
kimi-cli857