# Ltx 2.3 Quality · Render to Real API

> Transformescha registraziuns 3D, CG u da gieus en in video fotorealistic cun intensitad tschernibla

Convertescha in render 3D furnì sco `video_url` en in aspect pli realistic. `intensity` po esser light, strong u strong-v2, da miaivla a agressiva. In `image_url` opziunal fixescha il prim maletg fotorealistic, e `enable_detail_refine` agiunta ina segunda pass da meglieraziun cun `detail_refine_strength` da 0.3 to 0.95. Il prompt mantegna il trigger `3DREAL`, e l'output è 480p u 720p.

- Model id: `ltx-2.3-quality/render-to-real`
- Made by: Lightricks
- Category: Video to Video
- Output: video
- Price per megapixel of your output video: from $0.00241 / megapixel of output video (cheapest run $0.003 (3 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx-2.3-quality/render-to-real`
- Quote: `POST https://api.doitong.com/v1/quote/ltx-2.3-quality/render-to-real`
- Docs page: https://doitong.com/rm/developers/models/ltx-2.3-quality/render-to-real

## Pricing

Price: **from $0.00241 / megapixel of output video** (the lowest tier; the quote prices your exact input). Price per megapixel of your output video: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

Price by tier:

- base rate: $0.00241 / megapixel of output video
- detail refine: $0.00963 / megapixel of output video

The full example input below costs $0.27 = 270 API credits (112 MP output video × $0.002408).

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/ltx-2.3-quality/render-to-real` 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

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `video_url` | `video` | string (video URL) | yes |  |  | URL che renviescha ad in video 3D, CG u renderisà en in gieu per la conversiun fotorealistica. |
| `image_url` | `image` | string (image URL) \| null | no |  |  | Ancra da maletg facultativa per il frame 0, che fixescha ses aspect fotorealistic. Senza ella gida mo il render il resultat; sche furnida, daventa il maletg il prim frame, tenor la scolaziun image-to-video da l'adapter. |
| `intensity` |  | enum (string) | no | `light` | `light`, `strong`, `strong-v2` | Nivel da transformaziun fotorealistica, cun `strong-v2` che tscherna l'adapter nov e meglierà per dapli coerenza tranter scenas, audio, caracteris che discurran e qualitad generala. Per las autras opziuns tscherna `light` per mantegnair dapli aspect e moviment dal render d'origin, u `strong` per midadas pli aggressivas vers il fotorealism. |
| `enable_detail_refine` |  | boolean | no | `false` |  | Activescha ina fasa da refiniziun supplementara per augmentar la nettezza e la resoluziun; disactivada per standard. Suenter la generaziun da basa engrondescha in upscaler spazial il latent dal video per 2x, alura l'elavuraziun dals detagls al refinescha cun il model distillat. |
| `detail_refine_strength` |  | number | no | `0.75` | 0.3 – 0.95 | Forza da denoising da l'elavuraziun dals detagls, cun standard 0.75 e applitgabla mo cun `enable_detail_refine` activà. Per midadas pli delicatas che mantegnan il resultat da basa, utilisescha ina valur pli bassa; augmentarla regenerescha dapli detagls, ma po divergir pli ferm. |
| `prompt` |  | string | no | `3DREAL.` |  | Prompt da text per il resultat fotorealistic giavischà, scrit suenter il trigger preemplenì d'activaziun da l'adapter `3DREAL`. Ni stizzar il prompt ni activar l'expansiun dal prompt removescha quest trigger; el vegn adina mantegnì. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p` | Tscherner la resoluziun dal ladi curt da l’output, mantegnend il ratio d’aspect da l’origin: 480p dat resultats pli miaivels per clips fin a circa 15 secunda, entant che 720p dat resultats pli nets fin a circa 6 secunda. Tscherner 480p per clips pli lungs, perquai che la via da controlla IC-LoRA limitescha resoluziun multiplicada cun il dumber da frames; dumondas che surpassan quest budget vegnan refusadas cun in error cler. Calculai la durada da l’output sco `num_frames` / `frames_per_second`. |
| `num_frames` |  | integer | no | `121` | 9 – 481 | Dumber da frames da l’output, suttamess ad in budget IC-LoRA da resoluziun multiplicada cun frames: circa 6 secunda a 720p u 15 secunda a 480p. Il surpassament dal budget restituescha 422; reducì `num_frames` u tschernì 480p. La durada dal clip en secunda è `num_frames` / `frames_per_second`. |
| `frames_per_second` |  | number | no | `24` | 1 – 60 | Frame rate dal video d’output, mesirà en frames per secunda. |
| `num_inference_steps` |  | integer | no | `15` | 8 – 30 | Definir quants pass d’inferenza da far, fin a 30; senza midada vegnan utilisads 15. |
| `guidance_scale` |  | number | no | `1` | 1 – 20 | Ajustar la classifier-free guidance cun questa scala; la configuraziun standard mira a qualitad auta e generaziun svelta. |
| `generate_audio` |  | boolean | no | `true` |  | Interrupziun da la pista audio per l’MP4 restituì: deactivada producescha ina datoteca mo cun video, activada includa audio. |
| `negative_prompt` |  | string | no | `color distortion, overexposure, static, blurry details, subtitles, style, artwork, painting, frame, still, dim overall tone, worst quality, low quality, JPEG compression artifacts, ugly, mutilated, extra fingers, poorly drawn hands, poorly drawn face, deformed, disfigured, malformed limbs, fused fingers, motionless frame, cluttered background, three legs, crowded background, walking backwards` |  | Prompt negativ che specifiescha da tge che la generaziun duai evitar. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Enritgiment basà sin AI dal prompt da generaziun, disactivà per standard per che tes pleds vegnian transmess senza midadas. L'output inditgescha il prompt utilisà effectivamain, adina mantegnend `3DREAL`; l'expansiun permetta ad in model AI d'elavurar la descripziun avant la generaziun. |
| `seed` |  | integer \| null | no |  |  | Seed che renda la generaziun reproducibla. Cun definir None vegn tschernì in seed casualmain. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Controllescha sche la verificaziun da segirezza è activada. |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | Preset da qualitad applitgà al video d’output. |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | Modus da scriver per il video resultà. |

File parameters (`video`, `image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

A fuller example:

```json
{
  "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

## 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/ltx-2.3-quality/render-to-real?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }'

# 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/ltx-2.3-quality/render-to-real?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }),
});
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 = {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}

# 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/render-to-real", 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": "ltx-2.3-quality/render-to-real",
      "input": {
        "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
      },
      "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/render-to-real",
  "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": 270,
    "usd": "0.27",
    "charged": 270,
    "refunded": 0
  },
  "input": {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    },
    "seed": 42,
    "prompt": "string"
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "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} | Video 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/render-to-real
- 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/render-to-real
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/ltx-2.3-quality/render-to-real
