# LTX 2.3 Trainer (V2) - Audio-to-Audio API

> Trèan LoRA LTX 2.3 a mhapaicheas cliop fuaime iomraidh gu cliop fuaime targaid bho eisimpleirean càraideach

Dèan gleusadh mionaideach air LoRA airson cruth-atharrachadh fuaim-gu-fuaim bho `.zip` de dh’eisimpleirean càraideach ann an `training_data_url`. Tha `rank` eadar 8 agus 128, `number_of_steps` eadar 100 agus 10000, agus `audio_duration_seconds` eadar 0.5 agus 60. Cha chleachdar sgaradh sheallaidhean an seo, mar sin thoir seachad cliopaichean a chaidh a sgaradh ro-làimh. Tillidh e cuideaman LoRA agus faidhle config.

- Model id: `ltx23-trainer-v2/a2a`
- Made by: Lightricks
- Category: Training
- Output: file
- Price: $0.0023 / step (cheapest run $4.60 (4600 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx23-trainer-v2/a2a`
- Quote: `POST https://api.doitong.com/v1/quote/ltx23-trainer-v2/a2a`
- Docs page: https://doitong.com/gd/developers/models/ltx23-trainer-v2/a2a

## Pricing

Price: **$0.0023 / step**. Billed per training step (`number_of_steps`).

The full example input below costs $4.60 = 4600 API credits (2000 steps × 2.3 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.com/v1/quote/ltx23-trainer-v2/a2a` 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 |
|---|---|---|---|---|---|---|
| `training_data_url` |  | string | yes |  |  | URL airson `.zip` anns a bheil dàta trèanaidh, air a chur air dòigh a rèir a’ mhodh trèanaidh thaghte. Faodaidh caption `.txt` co-cheangailte le bun-ainm co-ionann a bhith aig gach faidhle mheadhanan. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | Rang atharrachaidh LoRA, ag iomlaid barrachd caitheamh cuimhne airson comas nas motha mar a dh’èireas an suidheachadh. |
| `number_of_steps` |  | integer | no | `2000` | 100 – 10,000 | Àireamh iomlan de cheumannan trèanaidh. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Ìre ionnsachaidh optimization. |
| `number_of_frames` |  | integer | no | `89` | 9 – 121 | Àireamh frèam airson gach sampall trèanaidh. Feumaidh roinneadh na h-àireimh le 8 còrr de 1 fhàgail; tha eisimpleirean a’ gabhail a-steach 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Ìre frèam targaid bhidio trèanaidh ann am frèaman gach diog. Is e an ìre dhùthchasach airson LTX-2.3 24. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Dùmhlachd-bhreacaidh trèanaidh. Le bhith ag àrdachadh na dùmhlachd-bhreacaidh àrdaichear riatanasan cuimhne. |
| `aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Co-mheas-taobhan trèanaidh. |
| `trigger_phrase` |  | string | no | `` |  | Abairt gnìomhachaidh stoidhle LoRA, air a cur aig toiseach nan captions rè trèanaidh. |
| `auto_scale_input` |  | boolean | no | `false` |  | Atharrachadh bhidio fèin-obrachail gus a bhith a rèir an FPS agus àireamh frèam a chaidh iarraidh nuair a tha e air; bidh seataichean-dàta ìomhaighe gun atharrachadh. |
| `split_input_into_scenes` |  | boolean | no | `false` |  | Smachd sgaradh sheallaidhean, air a leigeil seachad rè ullachadh claisneachd targaid/iomraidh paidhrichte airson a2a oir dhèanadh sgaradh an paidhir neo-shioncronaichte. Cùm dheth e airson a2a agus thoir seachad criomagan a chaidh an sgaradh ro-làimh. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Trigger sgaradh sheallaidhean air a chur an cèill mar fhad ann an diogan: cha tèid ach bhidiothan nas fhaide na an stairsneach a sgaradh. |
| `debug_dataset` |  | boolean | no | `false` |  | Modh sgrùdaidh ro-ghiullachd airson bhidiothan, ìomhaighean agus captions a dhearbhadh ro ruith trèanaidh iomlan. Le bhith ga chur an comas tillidh an trèanair an seata-dàta trèanaidh giullaichte ann an tasglann a ghabhas luchdadh a-nuas airson sgrùdadh làimhe. |
| `audio_normalize` |  | boolean | no | `true` |  | Normalachadh stùc claisneachd gus ìrean co-sheasmhach a chumail air feadh an t-seata-dàta. |
| `audio_preserve_pitch` |  | boolean | no | `true` |  | Gleidheadh pitch rè freagarrachadh fad claisneachd, seach bearradh no lìonadh. |
| `audio_duration_seconds` |  | number | no | `5` | 0.5 – 60 | Bucaid fad claisneachd ann an diogan, riatanach airson modhan claisneachd a-mhàin oir chan eil àireamh frèam bhidio aca airson fad obrachadh a-mach. Bidh an targaid seo a’ dearbhadh làimhseachadh nan criomagan: thèid cus claisneachd a ghearradh, agus thèid criomagan ro ghoirid a leum. |
| `validation` |  | array of object {prompt, reference_audio_url} | no | `[]` | ≤ 2 items | Liosta phrompaidean dearbhaidh a’ paidreachadh gach prompt le criomag claisneachd iomraidh. |
| `validation[].prompt` |  | string | yes |  |  | Prompt a thèid a chleachdadh rè dearbhaidh. |
| `validation[].reference_audio_url` |  | string (audio URL) | yes |  | ≥ 1 characters | URL claisneachd iomraidh a thèid a chleachdadh gus gineadh claisneachd a shuidheachadh. |
| `validation_negative_prompt` |  | string | no | `blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.` |  | Prompt àicheil air a chur an sàs rè dearbhaidh, a bhios a’ cleachdadh pròiseas ro-sheallaidh aon-ìre. Leis gu bheil am pròiseas sin a’ dèanamh tuairmse air inference riochdachaidh distilled le dà ìre, tha an stiùireadh agus càileachd an ro-sheallaidh eadar-dhealaichte bho na toraidhean deireannach. |
| `validation_number_of_frames` |  | integer | no | `89` | 9 – 121 | Àireamh frèam airson gach bhidio dearbhaidh. |
| `validation_frame_rate` |  | integer | no | `24` | 8 – 60 | Ìre frèam targaid airson bhidiothan dearbhaidh, ann am frèaman gach diog; tha LTX-2.3 a’ ruith gu dùthchasach aig 24. |
| `validation_resolution` |  | enum (string) | no | `high` | `low`, `medium`, `high` | Dùmhlachd-bhreacaidh a thèid a chleachdadh rè dearbhaidh. |
| `validation_aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Co-mheas-taobhan a thèid a chleachdadh rè dearbhaidh. |
| `stg_scale` |  | number | no | `1` | 0 – 3 | Sgèile Spatio-Temporal Guidance (STG), le 1.0 air a mholadh agus 0.0 a’ cur STG dheth. |

## Example input

Required parameters only:

```json
{
  "training_data_url": "https://example.com/your-file.zip"
}
```

A fuller example:

```json
{
  "training_data_url": "https://example.com/your-file.zip"
}
```

## 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.com/v1/run/ltx23-trainer-v2/a2a?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "training_data_url": "https://example.com/your-file.zip"
  }'

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

### JavaScript

```javascript
const API = "https://api.doitong.com/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/ltx23-trainer-v2/a2a?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "training_data_url": "https://example.com/your-file.zip"
  }),
});
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.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "training_data_url": "https://example.com/your-file.zip",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ltx23-trainer-v2/a2a", 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.com/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": "ltx23-trainer-v2/a2a",
      "input": {
        "training_data_url": "https://example.com/your-file.zip"
      },
      "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": "ltx23-trainer-v2/a2a",
  "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": 4600,
    "usd": "4.60",
    "charged": 4600,
    "refunded": 0
  },
  "input": {
    "training_data_url": "https://example.com/your-file.zip"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "audio": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "lora_file": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "config_file": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "debug_dataset": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    }
  },
  "outputs": [
    {
      "type": "file",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} \| null | Ro-shealladh bhidio co-mheasgaichte bho dhearbhadh, nuair a tha e ri fhaighinn airson puingean-crìche a chruthaicheas bhidio. |
| `audio` | object {url, content_type, file_name, file_size} \| null | Claisneachd cho-mheasgaichte bho dhearbhadh, air a thoirt seachad mar ro-shealladh nuair a tha e ri fhaighinn airson na slighean claisneachd a-mhàin seo: /audio-inpaint, /audio-extend-suffix, /audio-extend-prefix, /t2a, /a2a, agus /v2a. |
| `lora_file` | object {url, content_type, file_name, file_size} | URL airson cuideaman LoRA trèanaichte ann an cruth .safetensors. |
| `config_file` | object {url, content_type, file_name, file_size} | Rèiteachadh airson suidheachadh puing-crìche inference. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Às-chur dì-bhugachaidh ri fhaighinn nuair a tha `debug_dataset` air: tasglann a ghabhas luchdadh a-nuas anns a bheil an dàta trèanaidh às dèidh ro-ghiullachd. |

## Related models

- [LTX 2.3 Trainer (V2) - Audio Inpainting](https://doitong.com/developers/models/ltx23-trainer-v2/audio-inpaint.md) (`ltx23-trainer-v2/audio-inpaint`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Audio+Video Reference IC-LoRA](https://doitong.com/developers/models/ltx23-trainer-v2/ic-lora/av2av.md) (`ltx23-trainer-v2/ic-lora/av2av`): $0.0068 / step
- [LTX 2.3 Trainer (V2) - Audio+Video Reference Transformation](https://doitong.com/developers/models/ltx23-trainer-v2/av2av.md) (`ltx23-trainer-v2/av2av`): $0.0068 / step
- [LTX 2.3 Trainer (V2) - Audio-to-Audio IC-LoRA](https://doitong.com/developers/models/ltx23-trainer-v2/ic-lora/a2a.md) (`ltx23-trainer-v2/ic-lora/a2a`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Audio-to-Video](https://doitong.com/developers/models/ltx23-trainer-v2/a2v.md) (`ltx23-trainer-v2/a2v`): $0.006 / step
- [LTX 2.3 Trainer (V2) - Backward Audio Extension](https://doitong.com/developers/models/ltx23-trainer-v2/audio-extend-suffix.md) (`ltx23-trainer-v2/audio-extend-suffix`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Backward Video Extension](https://doitong.com/developers/models/ltx23-trainer-v2/extend-suffix.md) (`ltx23-trainer-v2/extend-suffix`): $0.0061 / step
- [LTX 2.3 Trainer (V2) - Forward Audio Extension](https://doitong.com/developers/models/ltx23-trainer-v2/audio-extend-prefix.md) (`ltx23-trainer-v2/audio-extend-prefix`): $0.0022 / step

## Links

- HTML page: https://doitong.com/developers/models/ltx23-trainer-v2/a2a
- 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=ltx23-trainer-v2/a2a
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/ltx23-trainer-v2/a2a
