Skip to main content
lightricks avatar

LTX-2.3 Text-to-Audio API

lightricks/ltx-2.3/text-to-audio

Generate sound effects, ambience, and spoken-style audio from a text prompt, with duration you control down to the frame.

0.1 per second of output video

Model Input

Input

The prompt to generate the audio from.

Min: 9 - Max: 481

Audio duration in LTX video-frame units. Duration in seconds is approximately num_frames / frames_per_second. Default 121 frames at 24 fps is about 5 seconds; the maximum 481 frames is about 20 seconds.

Min: 1 - Max: 60

Frame rate used to derive the clip duration together with num_frames.

Additional Settings

Customize your input with more control.

Min: 8 - Max: 30

Number of denoising steps. More steps can improve quality at the cost of speed.

Min: 1 - Max: 20

Classifier-free guidance scale; higher values follow the prompt more strictly.

Qualities to steer the generated audio away from.

Random seed for reproducible generation. Leave empty for a random result.

If true, automatically elaborate the prompt before generation.

Safety checker can only be disabled on API call

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Generated in 39.906 seconds
Logs (1 lines)

Model Example Requests

Examples

LTX-2.3 Text-to-Audio API

LTX-2.3 Text-to-Audio is a sound AI model by lightricks. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.1 per second of audio.

POST https://queue.modelrunner.run/lightricks/ltx-2.3/text-to-audio

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/lightricks/ltx-2.3/text-to-audio \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Gentle rain on a tin roof with distant rolling thunder.",
    "num_frames": 121,
    "guidance_scale": 1,
    "negative_prompt": "pc game, console game, video game, cartoon, childish, ugly",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "enable_safety_checker": true,
    "enable_prompt_expansion": false,
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/lightricks/ltx-2.3/text-to-audio/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/lightricks/ltx-2.3/text-to-audio/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("lightricks/ltx-2.3/text-to-audio", {
  input: {
    "prompt": "Gentle rain on a tin roof with distant rolling thunder.",
    "num_frames": 121,
    "guidance_scale": 1,
    "negative_prompt": "pc game, console game, video game, cartoon, childish, ugly",
    "frames_per_second": 24,
    "num_inference_steps": 15,
    "enable_safety_checker": true,
    "enable_prompt_expansion": false
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/lightricks/ltx-2.3/text-to-audio",
    headers=headers,
    json={
      "prompt": "Gentle rain on a tin roof with distant rolling thunder.",
      "num_frames": 121,
      "guidance_scale": 1,
      "negative_prompt": "pc game, console game, video game, cartoon, childish, ugly",
      "frames_per_second": 24,
      "num_inference_steps": 15,
      "enable_safety_checker": true,
      "enable_prompt_expansion": false
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

NameTypeRequiredDescription
promptstringyesThe prompt to generate the audio from.
num_framesintegernoAudio duration in LTX video-frame units. Duration in seconds is approximately num_frames / frames_per_second. Default 121 frames at 24 fps is about 5 seconds; the maximum 481 frames is about 20 seconds. Default: 121.
frames_per_secondnumbernoFrame rate used to derive the clip duration together with num_frames. Default: 24.
num_inference_stepsintegernoNumber of denoising steps. More steps can improve quality at the cost of speed. Default: 15.
guidance_scalenumbernoClassifier-free guidance scale; higher values follow the prompt more strictly. Default: 1.
negative_promptstringnoQualities to steer the generated audio away from. Default: "pc game, console game, video game, cartoon, childish, ugly".
seedintegernoRandom seed for reproducible generation. Leave empty for a random result.
enable_prompt_expansionbooleannoIf true, automatically elaborate the prompt before generation. Default: false.
enable_safety_checkerbooleannoIf true, run a content-safety check during generation. Default: true.

Machine-readable: OpenAPI schema · llms.txt

Use LTX-2.3 Text-to-Audio from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and LTX-2.3 Text-to-Audio becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint lightricks/ltx-2.3/text-to-audio.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run lightricks/ltx-2.3/text-to-audio on ModelRunner to generate sound”. MCP setup guide.

Model Details

Model Details

LTX-2.3 Text-to-Audio turns a written description into a short audio clip — sound effects, environmental ambience, foley, or speech-like vocalizations. Describe the sound you want ("a dog barking outdoors with natural ambience", "rain on a tin roof with distant thunder", "footsteps on gravel") and it returns a hosted MP3. The standout is fine-grained control over length: duration is derived from `num_frames / frames_per_second`, so you can dial clips from a fraction of a second up to roughly 20 seconds. The default produces about a 5-second clip.

## Best for - Generating one-off sound effects and foley from a text description (impacts, footsteps, animal sounds, machinery) - Environmental ambience and background beds (rain, wind, crowd murmur, room tone) for video and games - Short audio cues and stingers where you need a specific length - Quick audio drafts to prototype a scene's soundscape before a full session

## Choose another model when - You want a full music track with melody, structure, and instrumentation — use a dedicated music-generation model - You need synchronized audio baked into a video — use a text-to-video or image-to-video model that generates audio with the picture - You need long-form audio beyond roughly 20 seconds — this model is built for short clips

## Tips - Control length with `num_frames` and `frames_per_second`: duration in seconds ≈ `num_frames / frames_per_second`. At the default 24 fps, 121 frames ≈ 5 seconds; raise `num_frames` (up to 481) for a longer clip. - Describe the sound concretely — source, environment, and texture — rather than naming a genre. - Use `negative_prompt` to steer away from unwanted qualities; leave `seed` empty for variety or set it to reproduce a result.

## Advanced Configuration - `enable_prompt_expansion` (default `false`): when `true`, the prompt is automatically elaborated before generation, which can add detail but may drift from your exact wording. Configured via the API. - `enable_safety_checker` (default `true`): runs a content-safety pass on generation. Configured via the API.

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("lightricks/ltx-2.3/text-to-audio", { input: { prompt: "A dog barking outdoors, natural ambience", num_frames: 121, frames_per_second: 24, }, }); ```