Skip to content
Immersive AI

ElevenLabs v3 — give an idea a voice

Audio ElevenLabs v3 by Henri Huotari · Oct 28, 2026

A short English brand introduction with ElevenLabs v3 and the Jessica voice. The exact script, model and voice ID are included so the request can be reused for onboarding or a launch film.

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/tts' \
  -H "Authorization: Bearer $IMMERSIVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "async": true,
  "input": "Start with an idea. Make it an image. Set it in motion. Give it a voice. Immersive AI brings image, video, audio, text, and 3D models together through one API. Build what you imagine.",
  "model": "eleven_v3",
  "voice": "cgSgspJ2msm6clMCkdW9",
  "provider": "elevenlabs"
}'

# 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/tts", {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    "async": true,
    "input": "Start with an idea. Make it an image. Set it in motion. Give it a voice. Immersive AI brings image, video, audio, text, and 3D models together through one API. Build what you imagine.",
    "model": "eleven_v3",
    "voice": "cgSgspJ2msm6clMCkdW9",
    "provider": "elevenlabs"
  }),
});
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/tts",
    headers=headers,
    json={
        "async": True,
        "input": "Start with an idea. Make it an image. Set it in motion. Give it a voice. Immersive AI brings image, video, audio, text, and 3D models together through one API. Build what you imagine.",
        "model": "eleven_v3",
        "voice": "cgSgspJ2msm6clMCkdW9",
        "provider": "elevenlabs",
    },
    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": "e933b1dc-3144-4adf-872e-1b1709104dd2",
    "url": "https://s3.eu-central-1.amazonaws.com/ai.im.inc/examples/outputs/05721a6a-a3cb-4984-b7bf-e7a42f9fd626/result.mp3",
    "type": "TTS",
    "voice": "cgSgspJ2msm6clMCkdW9",
    "status": "succeeded",
    "provider": "elevenlabs",
    "speech_id": "e933b1dc-3144-4adf-872e-1b1709104dd2",
    "created_at": "2026-10-28T07:56:59.000000Z",
    "input_text": "Start with an idea. Make it an image. Set it in motion. Give it a voice. Immersive AI brings image, video, audio, text, and 3D models together through one API. Build what you imagine.",
    "updated_at": "2026-10-28T07:57:05.000000Z",
    "generated_at": "2026-10-28T07:57:05.000000Z",
    "processing_time_seconds": -6
}

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/tts
Model
eleven_v3
Output
Audio · MP3