# Ltx 2.3 Quality · Text to Audio · LoRA API

> Generaziun text-to-audio cun fin a 3 LoRAs persunalizads applitgads

Genera audio d'in `prompt` textual e dovra ina glista `loras` cun fin a 3 LoRAs persunalizads, mintgin fin a 3 GB. La durada è approximativamain `num_frames` dividì per `frames_per_second`, cun `num_frames` tranter 9 e 481. Accepta era `negative_prompt`, `seed` e `guidance_scale` da 1 a 20.

- Model id: `ltx-2.3-quality/text-to-audio/lora`
- Made by: Lightricks
- Category: Audio
- Output: audio
- Estimated price per run: from $0.70 / run (cheapest run $0.70 (700 API credits))
- Run: `POST https://api.doitong.ru/v1/run/ltx-2.3-quality/text-to-audio/lora`
- Quote: `POST https://api.doitong.ru/v1/quote/ltx-2.3-quality/text-to-audio/lora`
- Docs page: https://doitong.com/rm/developers/models/ltx-2.3-quality/text-to-audio/lora

## Pricing

Price: **from $0.70 / run** (the lowest tier; the quote prices your exact input). Estimated from the typical cost of one run. The quote is exactly what the run charges.

Price rules (the first rule that matches the input wins; a parameter you leave out counts as its default):

- When `num_frames` > 363: base price × 4
- When `num_frames` ≤ 363: base price × 3
- When `num_frames` ≤ 242: base price × 2

The full example input below costs $0.70 = 700 API credits (1 request × 700 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.ru/v1/quote/ltx-2.3-quality/text-to-audio/lora` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | Prompt che descriva l'audio da generar. |
| `num_frames` |  | integer | no | `121` | 9 – 481 | Durada da l'audio definida sco dumber da frames video LTX; divida `num_frames` tras `frames_per_second` per obtegnair sia lunghezza approximativa en secundas. |
| `frames_per_second` |  | number | no | `24` | 1 – 60 | Ritmus da frames per calcular la durada da l'audio d'output. |
| `num_inference_steps` |  | integer | no | `15` | 8 – 30 | Dumber total da pass d'inferenza. |
| `guidance_scale` |  | number | no | `1` | 1 – 20 | Furma da la guida senza classificatur. |
| `negative_prompt` |  | string | no | `pc game, console game, video game, cartoon, childish, ugly` |  | Prompt negativ che specifiescha da tge che la generaziun duai evitar. |
| `seed` |  | integer \| null | no |  |  | Seed che renda la generaziun reproducibla. Cun definir None vegn tschernì in seed casualmain. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Controlla sche l'expansiun dal prompt è activada. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Controllescha sche la verificaziun da segirezza è activada. |
| `loras` |  | array of object {path, scale, transformer} | yes |  | ≤ 3 items | Agiuntas LoRA per LTX-2.3, mintgina limitada a 3 GB, cun maximalmain 3 entradas. Il chargiament succeda pir suenter che il downloader segir cunter SSRF dal register ha retratg mintga path. |
| `loras[].path` |  | string | yes |  | ≤ 2048 characters | URL HTTP(S) directa per ina datoteca LoRA .safetensors da maximalmain 3 GB. Il chargiament vegn precedì dal retratgament tras in downloader segir cunter SSRF. |
| `loras[].scale` |  | number | no | `1` | 0 – 2 | L’influenza da LoRA sin il video generà crescha cun questa furza en il rom 0.0–2.0. |
| `loras[].transformer` |  | enum (string) | no | `both` | `high`, `low`, `both` | Flag da selecziun dal transformer: 'both' è adattà per quasi tuts utilisaders da LTX-2.3, perquai che il model ha mo in transformer. Il flag exista per sustegnair futuras architecturas cun plirs transformers. |

## Example input

Required parameters only:

```json
{
  "loras": [
    {
      "path": "https://example.com/your-file.safetensors"
    }
  ],
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "loras": [
    {
      "path": "https://example.com/your-file.safetensors"
    }
  ],
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/ltx-2.3-quality/text-to-audio/lora?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "loras": [
      {
        "path": "https://example.com/your-file.safetensors"
      }
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/ltx-2.3-quality/text-to-audio/lora?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "loras": [
      {
        "path": "https://example.com/your-file.safetensors"
      }
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "loras": [
        {
            "path": "https://example.com/your-file.safetensors",
        },
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ltx-2.3-quality/text-to-audio/lora", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "ltx-2.3-quality/text-to-audio/lora",
      "input": {
        "loras": [
          {
            "path": "https://example.com/your-file.safetensors"
          }
        ],
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "ltx-2.3-quality/text-to-audio/lora",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 700,
    "usd": "0.70",
    "charged": 700,
    "refunded": 0
  },
  "input": {
    "loras": [
      {
        "path": "https://example.com/your-file.safetensors"
      }
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "audio": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_name": "0-output.mp3",
      "file_size": 1843200
    },
    "seed": 42,
    "prompt": "string"
  },
  "outputs": [
    {
      "type": "audio",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
      "content_type": "audio/mpeg",
      "file_size": 1843200,
      "duration": 12,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `audio` | object {url, content_type, file_name, file_size} | Audio producì dal model. |
| `seed` | integer | Seed effectiv applitgà durant la generaziun. |
| `prompt` | string | Prompt da generaziun, inclusiv eventuala expansiun applitgada avant l’utilisaziun. |

## Related models

- [Ltx 2.3 Quality · Text to Video](https://doitong.com/developers/models/ltx-2.3-quality/text-to-video.md) (`ltx-2.3-quality/text-to-video`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Text to Video · LoRA](https://doitong.com/developers/models/ltx-2.3-quality/text-to-video/lora.md) (`ltx-2.3-quality/text-to-video/lora`): $0.00271 / megapixel of output video
- [Ltx 2.3 Quality · Image to Video](https://doitong.com/developers/models/ltx-2.3-quality/image-to-video.md) (`ltx-2.3-quality/image-to-video`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Image to Video · LoRA](https://doitong.com/developers/models/ltx-2.3-quality/image-to-video/lora.md) (`ltx-2.3-quality/image-to-video/lora`): $0.00271 / megapixel of output video
- [Ltx 2.3 Quality · Ingredient](https://doitong.com/developers/models/ltx-2.3-quality/ingredient.md) (`ltx-2.3-quality/ingredient`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Clean Plate](https://doitong.com/developers/models/ltx-2.3-quality/clean-plate.md) (`ltx-2.3-quality/clean-plate`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Colorization](https://doitong.com/developers/models/ltx-2.3-quality/colorization.md) (`ltx-2.3-quality/colorization`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Cross Eyed](https://doitong.com/developers/models/ltx-2.3-quality/cross-eyed.md) (`ltx-2.3-quality/cross-eyed`): $0.00241 / megapixel of output video

## Links

- HTML page: https://doitong.com/developers/models/ltx-2.3-quality/text-to-audio/lora
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=ltx-2.3-quality/text-to-audio/lora
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/ltx-2.3-quality/text-to-audio/lora
