Skip to content
Immersive AI

ElevenLabs Music — a fifteen-second brand bed

Audio ElevenLabs Music by Henri Huotari · Oct 28, 2026

A timed instrumental for the Immersive visual campaign, with a glassy synth motif, rounded bass and a restrained electronic groove. Demonstrates duration control, instrumental generation and an MP3 result.

This file couldn't be loaded. The link may have expired.
Output result.mp3

Run it yourself

Set IMMERSIVE_API_KEY to an API key from your account. Create a free account to get one.

curl -X POST 'https://ai.im.inc/api/v1/audio/music' \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "async": true,
  "model": "music_v1",
  "prompt": "An original 15-second instrumental sonic identity for Immersive AI, a modern creative tools brand. Premium minimal electronic groove at 112 BPM, warm punchy rounded analogue bass, tight dry kick, lightly swung crisp percussion, a playful three-note glassy synth motif and subtle tactile sound design. Confident, optimistic and human; stylish design-studio product launch, suitable under a voiceover. Open with the motif immediately, add bass and percussion smoothly, a small lift in the middle, finish with a clean warm resolved final note and a brief natural tail by 15 seconds. Restrained arrangement, space between notes, clean balanced contemporary mix. No vocals, speech, chanting, cinematic trailer booms, dramatic risers, harsh highs or stock corporate ukulele.",
  "output_format": "mp3_44100_192",
  "music_length_ms": 15000,
  "force_instrumental": true
}'

# Set JOB_ID to the response's "id", then poll every few seconds until the job has finished:
curl "https://ai.im.inc/api/v1/audio/$JOB_ID" \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY"

# The finished response has the result at url.
const headers = { Authorization: `Bearer ${process.env.IMMERSIVE_API_KEY}` };

const response = await fetch("https://ai.im.inc/api/v1/audio/music", {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    "async": true,
    "model": "music_v1",
    "prompt": "An original 15-second instrumental sonic identity for Immersive AI, a modern creative tools brand. Premium minimal electronic groove at 112 BPM, warm punchy rounded analogue bass, tight dry kick, lightly swung crisp percussion, a playful three-note glassy synth motif and subtle tactile sound design. Confident, optimistic and human; stylish design-studio product launch, suitable under a voiceover. Open with the motif immediately, add bass and percussion smoothly, a small lift in the middle, finish with a clean warm resolved final note and a brief natural tail by 15 seconds. Restrained arrangement, space between notes, clean balanced contemporary mix. No vocals, speech, chanting, cinematic trailer booms, dramatic risers, harsh highs or stock corporate ukulele.",
    "output_format": "mp3_44100_192",
    "music_length_ms": 15000,
    "force_instrumental": true
  }),
});
const job = await response.json();

// Poll every few seconds while the job is still running.
const running = ["pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"];
let result;
do {
  await new Promise((resolve) => setTimeout(resolve, 5000));
  result = await (await fetch(`https://ai.im.inc/api/v1/audio/${job.id}`, { headers })).json();
} while (running.includes(String(result.status).toLowerCase()));

console.log(result.url);
import os
import time

import requests

headers = {"Authorization": f"Bearer {os.environ['IMMERSIVE_API_KEY']}"}

job = requests.post(
    "https://ai.im.inc/api/v1/audio/music",
    headers=headers,
    json={
        "async": True,
        "model": "music_v1",
        "prompt": "An original 15-second instrumental sonic identity for Immersive AI, a modern creative tools brand. Premium minimal electronic groove at 112 BPM, warm punchy rounded analogue bass, tight dry kick, lightly swung crisp percussion, a playful three-note glassy synth motif and subtle tactile sound design. Confident, optimistic and human; stylish design-studio product launch, suitable under a voiceover. Open with the motif immediately, add bass and percussion smoothly, a small lift in the middle, finish with a clean warm resolved final note and a brief natural tail by 15 seconds. Restrained arrangement, space between notes, clean balanced contemporary mix. No vocals, speech, chanting, cinematic trailer booms, dramatic risers, harsh highs or stock corporate ukulele.",
        "output_format": "mp3_44100_192",
        "music_length_ms": 15000,
        "force_instrumental": True,
    },
    timeout=300,
).json()

# Poll every few seconds while the job is still running.
running = {"pending", "queued", "submitted", "starting", "processing", "running", "streaming", "in_queue", "in_progress"}
while True:
    time.sleep(5)
    result = requests.get(f"https://ai.im.inc/api/v1/audio/{job['id']}", headers=headers, timeout=60).json()
    if str(result.get("status", "")).lower() not in running:
        break

print(result["url"])
{
    "id": "b16f90ec-ada6-43f5-b34b-ea8b168fd3d2",
    "url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/49d75815-33a9-4fb7-9a1d-d909623f4e45/result.mp3",
    "model": "music_v1",
    "status": "succeeded",
    "audio_id": "b16f90ec-ada6-43f5-b34b-ea8b168fd3d2"
}

Your browser blocked the clipboard. Select the text and copy it by hand.

How the job runs

  1. POST returns the job's id and status right away.
  2. Poll GET /api/v1/audio/{id} every few seconds while the job is running.
  3. When status is succeeded, download url. Failed jobs are refunded automatically.
Endpoint
POST /api/v1/audio/music
Model
music_v1
Output
Audio · MP3